---
name: "CURLINFO_XFER_ID"
section: "3"
platform: "linux"
package: "curl"
version: "8.23.0-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux", "macos"]
url: "https://new.carta.tech/CURLINFO_XFER_ID"
---

# CURLINFO\_XFER\_ID(3)

ID of the transfer

## NAME

CURLINFO\_XFER\_ID - ID of the transfer

## SYNOPSIS

```
#include <curl/curl.h>
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_XFER_ID,
                           curl_off_t *xfer_id);
```

## DESCRIPTION

Pass a pointer to a *curl\_off\_t* to receive the identifier of the current/last transfer done with the handle. Stores -1 if no transfer has been started yet for the handle.

The transfer id is unique among all transfers performed using the same connection cache. This is implicitly the case for all transfers in the same multi handle.

## PROTOCOLS

This functionality affects all supported protocols

## EXAMPLE

```
int main(void)
{
  CURL *curl = curl_easy_init();
  if(curl) {
    CURLcode result;
    curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
    /* Perform the request */
    result = curl_easy_perform(curl);
    if(result == CURLE_OK) {
      curl_off_t xfer_id;
      result = curl_easy_getinfo(curl, CURLINFO_XFER_ID, &xfer_id);
      if(result == CURLE_OK) {
        printf("Transfer ID: %" CURL_FORMAT_CURL_OFF_T "\n", xfer_id);
      }
    }
  }
}
```

## AVAILABILITY

Added in curl 8.2.0

## RETURN VALUE

*[curl\_easy\_getinfo(3)](/curl_easy_getinfo/3.md)* returns a CURLcode indicating success or error.

CURLE\_OK (0) means everything was OK, non-zero means an error occurred, see *[libcurl-errors(3)](/libcurl-errors/3.md)*.

## SEE ALSO

[**CURLINFO\_CONN\_ID**(3)](/CURLINFO_CONN_ID/3.md), [**curl\_easy\_getinfo**(3)](/curl_easy_getinfo/3.md), [**curl\_easy\_setopt**(3)](/curl_easy_setopt/3.md)
