CURLINFO\_PROXY\_ERROR(3) Library Functions Manual CURLINFO\_PROXY\_ERROR(3)

# [NAME](#NAME)

CURLINFO\_PROXY\_ERROR - detailed (SOCKS) proxy error

# [SYNOPSIS](#SYNOPSIS)

```
#include <curl/curl.h>
typedef enum {


  CURLPX_OK,


  CURLPX_BAD_ADDRESS_TYPE,


  CURLPX_BAD_VERSION,


  CURLPX_CLOSED,


  CURLPX_GSSAPI,


  CURLPX_GSSAPI_PERMSG,


  CURLPX_GSSAPI_PROTECTION,


  CURLPX_IDENTD,


  CURLPX_IDENTD_DIFFER,


  CURLPX_LONG_HOSTNAME,


  CURLPX_LONG_PASSWD,


  CURLPX_LONG_USER,


  CURLPX_NO_AUTH,


  CURLPX_RECV_ADDRESS,


  CURLPX_RECV_AUTH,


  CURLPX_RECV_CONNECT,


  CURLPX_RECV_REQACK,


  CURLPX_REPLY_ADDRESS_TYPE_NOT_SUPPORTED,


  CURLPX_REPLY_COMMAND_NOT_SUPPORTED,


  CURLPX_REPLY_CONNECTION_REFUSED,


  CURLPX_REPLY_GENERAL_SERVER_FAILURE,


  CURLPX_REPLY_HOST_UNREACHABLE,


  CURLPX_REPLY_NETWORK_UNREACHABLE,


  CURLPX_REPLY_NOT_ALLOWED,


  CURLPX_REPLY_TTL_EXPIRED,


  CURLPX_REPLY_UNASSIGNED,


  CURLPX_REQUEST_FAILED,


  CURLPX_RESOLVE_HOST,


  CURLPX_SEND_AUTH,


  CURLPX_SEND_CONNECT,


  CURLPX_SEND_REQUEST,


  CURLPX_UNKNOWN_FAIL,


  CURLPX_UNKNOWN_MODE,


  CURLPX_USER_REJECTED,


  CURLPX_LAST /* never use */
} CURLproxycode;
CURLcode curl_easy_getinfo(CURL *handle, CURLINFO_PROXY_ERROR, long *detail);
```

# [DESCRIPTION](#DESCRIPTION)

Pass a pointer to a long to receive a detailed error code when the most recent transfer returned a **CURLE\_PROXY** error. That error code matches the **CURLproxycode** set.

The error code is zero (**CURLPX\_OK**) if no response code was available.

# [PROTOCOLS](#PROTOCOLS)

This functionality affects all supported protocols

# [EXAMPLE](#EXAMPLE)

```
int main(void)
{


  CURL *curl = curl_easy_init();


  if(curl) {


    CURLcode result;


    curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");


    curl_easy_setopt(curl, CURLOPT_PROXY, "socks5://127.0.0.1");


    result = curl_easy_perform(curl);


    if(result == CURLE_PROXY) {


      long proxycode;


      result = curl_easy_getinfo(curl, CURLINFO_PROXY_ERROR, &proxycode);


      if(!result && proxycode)


        printf("The detailed proxy error: %ld\n", proxycode);


    }


    curl_easy_cleanup(curl);


  }
}
```

# [AVAILABILITY](#AVAILABILITY)

Added in curl 7.73.0

# [RETURN VALUE](#RETURN_VALUE)

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

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

# [SEE ALSO](#SEE_ALSO)

[**CURLINFO\_RESPONSE\_CODE**(3)](/man/os/curl/CURLINFO_RESPONSE_CODE.3), [**curl\_easy\_getinfo**(3)](/man/os/curl/curl_easy_getinfo.3), [**curl\_easy\_setopt**(3)](/man/os/curl/curl_easy_setopt.3), [**libcurl-errors**(3)](/man/os/curl/libcurl-errors.3)

2026-10-19 libcurl

---

Document: CURLINFO_PROXY_ERROR(3) from curl 8.23.0-r1 (Chainguard OS)
Source: https://github.com/curl/curl.git
