---
name: "curl_easy_setopt"
section: "3"
platform: "macos"
package: "curl"
version: "166.0.0.0.1"
release: "macOS 26.5"
platforms: ["linux", "macos"]
url: "https://new.carta.tech/curl_easy_setopt"
---

# curl\_easy\_setopt(3)

set options for a curl easy handle

## NAME

curl\_easy\_setopt - set options for a curl easy handle

## SYNOPSIS

```
#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLoption option, parameter);
```

## DESCRIPTION

*[curl\_easy\_setopt(3)](/curl_easy_setopt/3.md)* is used to tell libcurl how to behave. By setting the appropriate options, the application can change libcurl's behavior. All options are set with an *option* followed by a *parameter*. That parameter can be a **long**, a **function pointer**, an **object pointer** or a **curl\_off\_t**, depending on what the specific option expects. Read this manual carefully as bad input values may cause libcurl to behave badly! You can only set one option in each function call. A typical application uses many *[curl\_easy\_setopt(3)](/curl_easy_setopt/3.md)* calls in the setup phase.

Options set with this function call are valid for all forthcoming transfers performed using this *handle*. The options are not in any way reset between transfers, so if you want subsequent transfers with different options, you must change them between the transfers. You can optionally reset all options back to internal default with *[curl\_easy\_reset(3)](/curl_easy_reset/3.md)*.

Strings passed to libcurl as 'char \*' arguments, are copied by the library; the string storage associated to the pointer argument may be discarded or reused after *[curl\_easy\_setopt(3)](/curl_easy_setopt/3.md)* returns. The only exception to this rule is really *[CURLOPT\_POSTFIELDS(3)](/CURLOPT_POSTFIELDS/3.md)*, but the alternative that copies the string *[CURLOPT\_COPYPOSTFIELDS(3)](/CURLOPT_COPYPOSTFIELDS/3.md)* has some usage characteristics you need to read up on. This function does not accept input strings longer than **CURL\_MAX\_INPUT\_LENGTH** (8 MB).

The order in which the options are set does not matter.

Before version 7.17.0, strings were not copied. Instead the user was forced keep them available until libcurl no longer needed them.

The *handle* is the return code from a *[curl\_easy\_init(3)](/curl_easy_init/3.md)* or *[curl\_easy\_duphandle(3)](/curl_easy_duphandle/3.md)* call.

## BEHAVIOR OPTIONS

- CURLOPT\_VERBOSE

  Display verbose information. See *[CURLOPT\_VERBOSE(3)](/CURLOPT_VERBOSE/3.md)*

- CURLOPT\_HEADER

  Include the header in the body output. See *[CURLOPT\_HEADER(3)](/CURLOPT_HEADER/3.md)*

- CURLOPT\_NOPROGRESS

  Shut off the progress meter. See *[CURLOPT\_NOPROGRESS(3)](/CURLOPT_NOPROGRESS/3.md)*

- CURLOPT\_NOSIGNAL

  Do not install signal handlers. See *[CURLOPT\_NOSIGNAL(3)](/CURLOPT_NOSIGNAL/3.md)*

- CURLOPT\_WILDCARDMATCH

  Transfer multiple files according to a filename pattern. See *[CURLOPT\_WILDCARDMATCH(3)](/CURLOPT_WILDCARDMATCH/3.md)*

## CALLBACK OPTIONS

- CURLOPT\_WRITEFUNCTION

  Callback for writing data. See *[CURLOPT\_WRITEFUNCTION(3)](/CURLOPT_WRITEFUNCTION/3.md)*

- CURLOPT\_WRITEDATA

  Data pointer to pass to the write callback. See *[CURLOPT\_WRITEDATA(3)](/CURLOPT_WRITEDATA/3.md)*

- CURLOPT\_READFUNCTION

  Callback for reading data. See *[CURLOPT\_READFUNCTION(3)](/CURLOPT_READFUNCTION/3.md)*

- CURLOPT\_READDATA

  Data pointer to pass to the read callback. See *[CURLOPT\_READDATA(3)](/CURLOPT_READDATA/3.md)*

- CURLOPT\_IOCTLFUNCTION

  **Deprecated option** Callback for I/O operations. See *[CURLOPT\_IOCTLFUNCTION(3)](/CURLOPT_IOCTLFUNCTION/3.md)*

- CURLOPT\_IOCTLDATA

  **Deprecated option** Data pointer to pass to the I/O callback. See *[CURLOPT\_IOCTLDATA(3)](/CURLOPT_IOCTLDATA/3.md)*

- CURLOPT\_SEEKFUNCTION

  Callback for seek operations. See *[CURLOPT\_SEEKFUNCTION(3)](/CURLOPT_SEEKFUNCTION/3.md)*

- CURLOPT\_SEEKDATA

  Data pointer to pass to the seek callback. See *[CURLOPT\_SEEKDATA(3)](/CURLOPT_SEEKDATA/3.md)*

- CURLOPT\_SOCKOPTFUNCTION

  Callback for sockopt operations. See *[CURLOPT\_SOCKOPTFUNCTION(3)](/CURLOPT_SOCKOPTFUNCTION/3.md)*

- CURLOPT\_SOCKOPTDATA

  Data pointer to pass to the sockopt callback. See *[CURLOPT\_SOCKOPTDATA(3)](/CURLOPT_SOCKOPTDATA/3.md)*

- CURLOPT\_OPENSOCKETFUNCTION

  Callback for socket creation. See *[CURLOPT\_OPENSOCKETFUNCTION(3)](/CURLOPT_OPENSOCKETFUNCTION/3.md)*

- CURLOPT\_OPENSOCKETDATA

  Data pointer to pass to the open socket callback. See *[CURLOPT\_OPENSOCKETDATA(3)](/CURLOPT_OPENSOCKETDATA/3.md)*

- CURLOPT\_CLOSESOCKETFUNCTION

  Callback for closing socket. See *[CURLOPT\_CLOSESOCKETFUNCTION(3)](/CURLOPT_CLOSESOCKETFUNCTION/3.md)*

- CURLOPT\_CLOSESOCKETDATA

  Data pointer to pass to the close socket callback. See *[CURLOPT\_CLOSESOCKETDATA(3)](/CURLOPT_CLOSESOCKETDATA/3.md)*

- CURLOPT\_PROGRESSFUNCTION

  **OBSOLETE** callback for progress meter. See *[CURLOPT\_PROGRESSFUNCTION(3)](/CURLOPT_PROGRESSFUNCTION/3.md)*

- CURLOPT\_PROGRESSDATA

  Data pointer to pass to the progress meter callback. See *[CURLOPT\_PROGRESSDATA(3)](/CURLOPT_PROGRESSDATA/3.md)*

- CURLOPT\_XFERINFOFUNCTION

  Callback for progress meter. See *[CURLOPT\_XFERINFOFUNCTION(3)](/CURLOPT_XFERINFOFUNCTION/3.md)*

- CURLOPT\_XFERINFODATA

  Data pointer to pass to the progress meter callback. See *[CURLOPT\_XFERINFODATA(3)](/CURLOPT_XFERINFODATA/3.md)*

- CURLOPT\_HEADERFUNCTION

  Callback for writing received headers. See *[CURLOPT\_HEADERFUNCTION(3)](/CURLOPT_HEADERFUNCTION/3.md)*

- CURLOPT\_HEADERDATA

  Data pointer to pass to the header callback. See *[CURLOPT\_HEADERDATA(3)](/CURLOPT_HEADERDATA/3.md)*

- CURLOPT\_DEBUGFUNCTION

  Callback for debug information. See *[CURLOPT\_DEBUGFUNCTION(3)](/CURLOPT_DEBUGFUNCTION/3.md)*

- CURLOPT\_DEBUGDATA

  Data pointer to pass to the debug callback. See *[CURLOPT\_DEBUGDATA(3)](/CURLOPT_DEBUGDATA/3.md)*

- CURLOPT\_SSL\_CTX\_FUNCTION

  Callback for SSL context logic. See *[CURLOPT\_SSL\_CTX\_FUNCTION(3)](/CURLOPT_SSL_CTX_FUNCTION/3.md)*

- CURLOPT\_SSL\_CTX\_DATA

  Data pointer to pass to the SSL context callback. See *[CURLOPT\_SSL\_CTX\_DATA(3)](/CURLOPT_SSL_CTX_DATA/3.md)*

- CURLOPT\_CONV\_TO\_NETWORK\_FUNCTION

  **OBSOLETE** Callback for code base conversion. See *[CURLOPT\_CONV\_TO\_NETWORK\_FUNCTION(3)](/CURLOPT_CONV_TO_NETWORK_FUNCTION/3.md)*

- CURLOPT\_CONV\_FROM\_NETWORK\_FUNCTION

  **OBSOLETE** Callback for code base conversion. See *[CURLOPT\_CONV\_FROM\_NETWORK\_FUNCTION(3)](/CURLOPT_CONV_FROM_NETWORK_FUNCTION/3.md)*

- CURLOPT\_CONV\_FROM\_UTF8\_FUNCTION

  **OBSOLETE** Callback for code base conversion. See *[CURLOPT\_CONV\_FROM\_UTF8\_FUNCTION(3)](/CURLOPT_CONV_FROM_UTF8_FUNCTION/3.md)*

- CURLOPT\_INTERLEAVEFUNCTION

  Callback for RTSP interleaved data. See *[CURLOPT\_INTERLEAVEFUNCTION(3)](/CURLOPT_INTERLEAVEFUNCTION/3.md)*

- CURLOPT\_INTERLEAVEDATA

  Data pointer to pass to the RTSP interleave callback. See *[CURLOPT\_INTERLEAVEDATA(3)](/CURLOPT_INTERLEAVEDATA/3.md)*

- CURLOPT\_CHUNK\_BGN\_FUNCTION

  Callback for wildcard download start of chunk. See *[CURLOPT\_CHUNK\_BGN\_FUNCTION(3)](/CURLOPT_CHUNK_BGN_FUNCTION/3.md)*

- CURLOPT\_CHUNK\_END\_FUNCTION

  Callback for wildcard download end of chunk. See *[CURLOPT\_CHUNK\_END\_FUNCTION(3)](/CURLOPT_CHUNK_END_FUNCTION/3.md)*

- CURLOPT\_CHUNK\_DATA

  Data pointer to pass to the chunk callbacks. See *[CURLOPT\_CHUNK\_DATA(3)](/CURLOPT_CHUNK_DATA/3.md)*

- CURLOPT\_FNMATCH\_FUNCTION

  Callback for wildcard matching. See *[CURLOPT\_FNMATCH\_FUNCTION(3)](/CURLOPT_FNMATCH_FUNCTION/3.md)*

- CURLOPT\_FNMATCH\_DATA

  Data pointer to pass to the wildcard matching callback. See *[CURLOPT\_FNMATCH\_DATA(3)](/CURLOPT_FNMATCH_DATA/3.md)*

- CURLOPT\_SUPPRESS\_CONNECT\_HEADERS

  Suppress proxy CONNECT response headers from user callbacks. See *[CURLOPT\_SUPPRESS\_CONNECT\_HEADERS(3)](/CURLOPT_SUPPRESS_CONNECT_HEADERS/3.md)*

- CURLOPT\_RESOLVER\_START\_FUNCTION

  Callback to be called before a new resolve request is started. See *[CURLOPT\_RESOLVER\_START\_FUNCTION(3)](/CURLOPT_RESOLVER_START_FUNCTION/3.md)*

- CURLOPT\_RESOLVER\_START\_DATA

  Data pointer to pass to resolver start callback. See *[CURLOPT\_RESOLVER\_START\_DATA(3)](/CURLOPT_RESOLVER_START_DATA/3.md)*

- CURLOPT\_PREREQFUNCTION

  Callback to be called after a connection is established but before a request is made on that connection. See *[CURLOPT\_PREREQFUNCTION(3)](/CURLOPT_PREREQFUNCTION/3.md)*

- CURLOPT\_PREREQDATA

  Data pointer to pass to the CURLOPT\_PREREQFUNCTION callback. See *[CURLOPT\_PREREQDATA(3)](/CURLOPT_PREREQDATA/3.md)*

## ERROR OPTIONS

- CURLOPT\_ERRORBUFFER

  Error message buffer. See *[CURLOPT\_ERRORBUFFER(3)](/CURLOPT_ERRORBUFFER/3.md)*

- CURLOPT\_STDERR

  stderr replacement stream. See *[CURLOPT\_STDERR(3)](/CURLOPT_STDERR/3.md)*

- CURLOPT\_FAILONERROR

  Fail on HTTP 4xx errors. *[CURLOPT\_FAILONERROR(3)](/CURLOPT_FAILONERROR/3.md)*

- CURLOPT\_KEEP\_SENDING\_ON\_ERROR

  Keep sending on HTTP \>= 300 errors. *[CURLOPT\_KEEP\_SENDING\_ON\_ERROR(3)](/CURLOPT_KEEP_SENDING_ON_ERROR/3.md)*

## NETWORK OPTIONS

- CURLOPT\_URL

  URL to work on. See *[CURLOPT\_URL(3)](/CURLOPT_URL/3.md)*

- CURLOPT\_PATH\_AS\_IS

  Disable squashing /../ and /./ sequences in the path. See *[CURLOPT\_PATH\_AS\_IS(3)](/CURLOPT_PATH_AS_IS/3.md)*

- CURLOPT\_PROTOCOLS

  **Deprecated option** Allowed protocols. See *[CURLOPT\_PROTOCOLS(3)](/CURLOPT_PROTOCOLS/3.md)*

- CURLOPT\_PROTOCOLS\_STR

  Allowed protocols. See *[CURLOPT\_PROTOCOLS\_STR(3)](/CURLOPT_PROTOCOLS_STR/3.md)*

- CURLOPT\_REDIR\_PROTOCOLS

  **Deprecated option** Protocols to allow redirects to. See *[CURLOPT\_REDIR\_PROTOCOLS(3)](/CURLOPT_REDIR_PROTOCOLS/3.md)*

- CURLOPT\_REDIR\_PROTOCOLS\_STR

  Protocols to allow redirects to. See *[CURLOPT\_REDIR\_PROTOCOLS\_STR(3)](/CURLOPT_REDIR_PROTOCOLS_STR/3.md)*

- CURLOPT\_DEFAULT\_PROTOCOL

  Default protocol. See *[CURLOPT\_DEFAULT\_PROTOCOL(3)](/CURLOPT_DEFAULT_PROTOCOL/3.md)*

- CURLOPT\_PROXY

  Proxy to use. See *[CURLOPT\_PROXY(3)](/CURLOPT_PROXY/3.md)*

- CURLOPT\_PRE\_PROXY

  Socks proxy to use. See *[CURLOPT\_PRE\_PROXY(3)](/CURLOPT_PRE_PROXY/3.md)*

- CURLOPT\_PROXYPORT

  Proxy port to use. See *[CURLOPT\_PROXYPORT(3)](/CURLOPT_PROXYPORT/3.md)*

- CURLOPT\_PROXYTYPE

  Proxy type. See *[CURLOPT\_PROXYTYPE(3)](/CURLOPT_PROXYTYPE/3.md)*

- CURLOPT\_NOPROXY

  Filter out hosts from proxy use. *[CURLOPT\_NOPROXY(3)](/CURLOPT_NOPROXY/3.md)*

- CURLOPT\_HTTPPROXYTUNNEL

  Tunnel through the HTTP proxy. *[CURLOPT\_HTTPPROXYTUNNEL(3)](/CURLOPT_HTTPPROXYTUNNEL/3.md)*

- CURLOPT\_CONNECT\_TO

  Connect to a specific host and port. See *[CURLOPT\_CONNECT\_TO(3)](/CURLOPT_CONNECT_TO/3.md)*

- CURLOPT\_SOCKS5\_AUTH

  Socks5 authentication methods. See *[CURLOPT\_SOCKS5\_AUTH(3)](/CURLOPT_SOCKS5_AUTH/3.md)*

- CURLOPT\_SOCKS5\_GSSAPI\_SERVICE

  **Deprecated option** Socks5 GSSAPI service name. See *[CURLOPT\_SOCKS5\_GSSAPI\_SERVICE(3)](/CURLOPT_SOCKS5_GSSAPI_SERVICE/3.md)*

- CURLOPT\_SOCKS5\_GSSAPI\_NEC

  Socks5 GSSAPI NEC mode. See *[CURLOPT\_SOCKS5\_GSSAPI\_NEC(3)](/CURLOPT_SOCKS5_GSSAPI_NEC/3.md)*

- CURLOPT\_PROXY\_SERVICE\_NAME

  Proxy authentication service name. *[CURLOPT\_PROXY\_SERVICE\_NAME(3)](/CURLOPT_PROXY_SERVICE_NAME/3.md)*

- CURLOPT\_HAPROXYPROTOCOL

  Send an HAProxy PROXY protocol v1 header. See *[CURLOPT\_HAPROXYPROTOCOL(3)](/CURLOPT_HAPROXYPROTOCOL/3.md)*

- CURLOPT\_HAPROXY\_CLIENT\_IP

  Spoof the client IP in an HAProxy PROXY protocol v1 header. See *[CURLOPT\_HAPROXY\_CLIENT\_IP(3)](/CURLOPT_HAPROXY_CLIENT_IP/3.md)*

- CURLOPT\_SERVICE\_NAME

  Authentication service name. *[CURLOPT\_SERVICE\_NAME(3)](/CURLOPT_SERVICE_NAME/3.md)*

- CURLOPT\_INTERFACE

  Bind connection locally to this. See *[CURLOPT\_INTERFACE(3)](/CURLOPT_INTERFACE/3.md)*

- CURLOPT\_LOCALPORT

  Bind connection locally to this port. See *[CURLOPT\_LOCALPORT(3)](/CURLOPT_LOCALPORT/3.md)*

- CURLOPT\_LOCALPORTRANGE

  Bind connection locally to port range. See *[CURLOPT\_LOCALPORTRANGE(3)](/CURLOPT_LOCALPORTRANGE/3.md)*

- CURLOPT\_DNS\_CACHE\_TIMEOUT

  Timeout for DNS cache. See *[CURLOPT\_DNS\_CACHE\_TIMEOUT(3)](/CURLOPT_DNS_CACHE_TIMEOUT/3.md)*

- CURLOPT\_DNS\_USE\_GLOBAL\_CACHE

  **OBSOLETE** Enable global DNS cache. See *[CURLOPT\_DNS\_USE\_GLOBAL\_CACHE(3)](/CURLOPT_DNS_USE_GLOBAL_CACHE/3.md)*

- CURLOPT\_DOH\_URL

  Use this DoH server for name resolves. See *[CURLOPT\_DOH\_URL(3)](/CURLOPT_DOH_URL/3.md)*

- CURLOPT\_BUFFERSIZE

  Ask for alternate buffer size. See *[CURLOPT\_BUFFERSIZE(3)](/CURLOPT_BUFFERSIZE/3.md)*

- CURLOPT\_PORT

  Port number to connect to. See *[CURLOPT\_PORT(3)](/CURLOPT_PORT/3.md)*

- CURLOPT\_TCP\_FASTOPEN

  Enable TCP Fast Open. See *[CURLOPT\_TCP\_FASTOPEN(3)](/CURLOPT_TCP_FASTOPEN/3.md)*

- CURLOPT\_TCP\_NODELAY

  Disable the Nagle algorithm. See *[CURLOPT\_TCP\_NODELAY(3)](/CURLOPT_TCP_NODELAY/3.md)*

- CURLOPT\_ADDRESS\_SCOPE

  IPv6 scope for local addresses. See *[CURLOPT\_ADDRESS\_SCOPE(3)](/CURLOPT_ADDRESS_SCOPE/3.md)*

- CURLOPT\_TCP\_KEEPALIVE

  Enable TCP keep-alive. See *[CURLOPT\_TCP\_KEEPALIVE(3)](/CURLOPT_TCP_KEEPALIVE/3.md)*

- CURLOPT\_TCP\_KEEPIDLE

  Idle time before sending keep-alive. See *[CURLOPT\_TCP\_KEEPIDLE(3)](/CURLOPT_TCP_KEEPIDLE/3.md)*

- CURLOPT\_TCP\_KEEPINTVL

  Interval between keep-alive probes. See *[CURLOPT\_TCP\_KEEPINTVL(3)](/CURLOPT_TCP_KEEPINTVL/3.md)*

- CURLOPT\_UNIX\_SOCKET\_PATH

  Path to a Unix domain socket. See *[CURLOPT\_UNIX\_SOCKET\_PATH(3)](/CURLOPT_UNIX_SOCKET_PATH/3.md)*

- CURLOPT\_ABSTRACT\_UNIX\_SOCKET

  Path to an abstract Unix domain socket. See *[CURLOPT\_ABSTRACT\_UNIX\_SOCKET(3)](/CURLOPT_ABSTRACT_UNIX_SOCKET/3.md)*

## NAMES and PASSWORDS OPTIONS (Authentication)

- CURLOPT\_NETRC

  Enable .netrc parsing. See *[CURLOPT\_NETRC(3)](/CURLOPT_NETRC/3.md)*

- CURLOPT\_NETRC\_FILE

  .netrc filename. See *[CURLOPT\_NETRC\_FILE(3)](/CURLOPT_NETRC_FILE/3.md)*

- CURLOPT\_USERPWD

  User name and password. See *[CURLOPT\_USERPWD(3)](/CURLOPT_USERPWD/3.md)*

- CURLOPT\_PROXYUSERPWD

  Proxy user name and password. See *[CURLOPT\_PROXYUSERPWD(3)](/CURLOPT_PROXYUSERPWD/3.md)*

- CURLOPT\_USERNAME

  User name. See *[CURLOPT\_USERNAME(3)](/CURLOPT_USERNAME/3.md)*

- CURLOPT\_PASSWORD

  Password. See *[CURLOPT\_PASSWORD(3)](/CURLOPT_PASSWORD/3.md)*

- CURLOPT\_LOGIN\_OPTIONS

  Login options. See *[CURLOPT\_LOGIN\_OPTIONS(3)](/CURLOPT_LOGIN_OPTIONS/3.md)*

- CURLOPT\_PROXYUSERNAME

  Proxy user name. See *[CURLOPT\_PROXYUSERNAME(3)](/CURLOPT_PROXYUSERNAME/3.md)*

- CURLOPT\_PROXYPASSWORD

  Proxy password. See *[CURLOPT\_PROXYPASSWORD(3)](/CURLOPT_PROXYPASSWORD/3.md)*

- CURLOPT\_HTTPAUTH

  HTTP server authentication methods. See *[CURLOPT\_HTTPAUTH(3)](/CURLOPT_HTTPAUTH/3.md)*

- CURLOPT\_TLSAUTH\_USERNAME

  TLS authentication user name. See *[CURLOPT\_TLSAUTH\_USERNAME(3)](/CURLOPT_TLSAUTH_USERNAME/3.md)*

- CURLOPT\_PROXY\_TLSAUTH\_USERNAME

  Proxy TLS authentication user name. See *[CURLOPT\_PROXY\_TLSAUTH\_USERNAME(3)](/CURLOPT_PROXY_TLSAUTH_USERNAME/3.md)*

- CURLOPT\_TLSAUTH\_PASSWORD

  TLS authentication password. See *[CURLOPT\_TLSAUTH\_PASSWORD(3)](/CURLOPT_TLSAUTH_PASSWORD/3.md)*

- CURLOPT\_PROXY\_TLSAUTH\_PASSWORD

  Proxy TLS authentication password. See *[CURLOPT\_PROXY\_TLSAUTH\_PASSWORD(3)](/CURLOPT_PROXY_TLSAUTH_PASSWORD/3.md)*

- CURLOPT\_TLSAUTH\_TYPE

  TLS authentication methods. See *[CURLOPT\_TLSAUTH\_TYPE(3)](/CURLOPT_TLSAUTH_TYPE/3.md)*

- CURLOPT\_PROXY\_TLSAUTH\_TYPE

  Proxy TLS authentication methods. See *[CURLOPT\_PROXY\_TLSAUTH\_TYPE(3)](/CURLOPT_PROXY_TLSAUTH_TYPE/3.md)*

- CURLOPT\_PROXYAUTH

  HTTP proxy authentication methods. See *[CURLOPT\_PROXYAUTH(3)](/CURLOPT_PROXYAUTH/3.md)*

- CURLOPT\_SASL\_AUTHZID

  SASL authorization identity (identity to act as). See *[CURLOPT\_SASL\_AUTHZID(3)](/CURLOPT_SASL_AUTHZID/3.md)*

- CURLOPT\_SASL\_IR

  Enable SASL initial response. See *[CURLOPT\_SASL\_IR(3)](/CURLOPT_SASL_IR/3.md)*

- CURLOPT\_XOAUTH2\_BEARER

  OAuth2 bearer token. See *[CURLOPT\_XOAUTH2\_BEARER(3)](/CURLOPT_XOAUTH2_BEARER/3.md)*

- CURLOPT\_DISALLOW\_USERNAME\_IN\_URL

  Do not allow username in URL. See *[CURLOPT\_DISALLOW\_USERNAME\_IN\_URL(3)](/CURLOPT_DISALLOW_USERNAME_IN_URL/3.md)*

## HTTP OPTIONS

- CURLOPT\_AUTOREFERER

  Automatically set Referer: header. See *[CURLOPT\_AUTOREFERER(3)](/CURLOPT_AUTOREFERER/3.md)*

- CURLOPT\_ACCEPT\_ENCODING

  Accept-Encoding and automatic decompressing data. See *[CURLOPT\_ACCEPT\_ENCODING(3)](/CURLOPT_ACCEPT_ENCODING/3.md)*

- CURLOPT\_TRANSFER\_ENCODING

  Request Transfer-Encoding. See *[CURLOPT\_TRANSFER\_ENCODING(3)](/CURLOPT_TRANSFER_ENCODING/3.md)*

- CURLOPT\_FOLLOWLOCATION

  Follow HTTP redirects. See *[CURLOPT\_FOLLOWLOCATION(3)](/CURLOPT_FOLLOWLOCATION/3.md)*

- CURLOPT\_UNRESTRICTED\_AUTH

  Do not restrict authentication to original host. *[CURLOPT\_UNRESTRICTED\_AUTH(3)](/CURLOPT_UNRESTRICTED_AUTH/3.md)*

- CURLOPT\_MAXREDIRS

  Maximum number of redirects to follow. See *[CURLOPT\_MAXREDIRS(3)](/CURLOPT_MAXREDIRS/3.md)*

- CURLOPT\_POSTREDIR

  How to act on redirects after POST. See *[CURLOPT\_POSTREDIR(3)](/CURLOPT_POSTREDIR/3.md)*

- CURLOPT\_PUT

  **Deprecated option** Issue an HTTP PUT request. See *[CURLOPT\_PUT(3)](/CURLOPT_PUT/3.md)*

- CURLOPT\_POST

  Issue an HTTP POST request. See *[CURLOPT\_POST(3)](/CURLOPT_POST/3.md)*

- CURLOPT\_POSTFIELDS

  Send a POST with this data. See *[CURLOPT\_POSTFIELDS(3)](/CURLOPT_POSTFIELDS/3.md)*

- CURLOPT\_POSTFIELDSIZE

  The POST data is this big. See *[CURLOPT\_POSTFIELDSIZE(3)](/CURLOPT_POSTFIELDSIZE/3.md)*

- CURLOPT\_POSTFIELDSIZE\_LARGE

  The POST data is this big. See *[CURLOPT\_POSTFIELDSIZE\_LARGE(3)](/CURLOPT_POSTFIELDSIZE_LARGE/3.md)*

- CURLOPT\_COPYPOSTFIELDS

  Send a POST with this data - and copy it. See *[CURLOPT\_COPYPOSTFIELDS(3)](/CURLOPT_COPYPOSTFIELDS/3.md)*

- CURLOPT\_HTTPPOST

  **Deprecated option** Multipart formpost HTTP POST. See *[CURLOPT\_HTTPPOST(3)](/CURLOPT_HTTPPOST/3.md)*

- CURLOPT\_REFERER

  Referer: header. See *[CURLOPT\_REFERER(3)](/CURLOPT_REFERER/3.md)*

- CURLOPT\_USERAGENT

  User-Agent: header. See *[CURLOPT\_USERAGENT(3)](/CURLOPT_USERAGENT/3.md)*

- CURLOPT\_HTTPHEADER

  Custom HTTP headers. See *[CURLOPT\_HTTPHEADER(3)](/CURLOPT_HTTPHEADER/3.md)*

- CURLOPT\_HEADEROPT

  Control custom headers. See *[CURLOPT\_HEADEROPT(3)](/CURLOPT_HEADEROPT/3.md)*

- CURLOPT\_PROXYHEADER

  Custom HTTP headers sent to proxy. See *[CURLOPT\_PROXYHEADER(3)](/CURLOPT_PROXYHEADER/3.md)*

- CURLOPT\_HTTP200ALIASES

  Alternative versions of 200 OK. See *[CURLOPT\_HTTP200ALIASES(3)](/CURLOPT_HTTP200ALIASES/3.md)*

- CURLOPT\_COOKIE

  Cookie(s) to send. See *[CURLOPT\_COOKIE(3)](/CURLOPT_COOKIE/3.md)*

- CURLOPT\_COOKIEFILE

  File to read cookies from. See *[CURLOPT\_COOKIEFILE(3)](/CURLOPT_COOKIEFILE/3.md)*

- CURLOPT\_COOKIEJAR

  File to write cookies to. See *[CURLOPT\_COOKIEJAR(3)](/CURLOPT_COOKIEJAR/3.md)*

- CURLOPT\_COOKIESESSION

  Start a new cookie session. See *[CURLOPT\_COOKIESESSION(3)](/CURLOPT_COOKIESESSION/3.md)*

- CURLOPT\_COOKIELIST

  Add or control cookies. See *[CURLOPT\_COOKIELIST(3)](/CURLOPT_COOKIELIST/3.md)*

- CURLOPT\_ALTSVC

  Specify the Alt-Svc: cache filename. See *[CURLOPT\_ALTSVC(3)](/CURLOPT_ALTSVC/3.md)*

- CURLOPT\_ALTSVC\_CTRL

  Enable and configure Alt-Svc: treatment. See *[CURLOPT\_ALTSVC\_CTRL(3)](/CURLOPT_ALTSVC_CTRL/3.md)*

- CURLOPT\_HSTS

  Set HSTS cache file. See *[CURLOPT\_HSTS(3)](/CURLOPT_HSTS/3.md)*

- CURLOPT\_HSTS\_CTRL

  Enable HSTS. See *[CURLOPT\_HSTS\_CTRL(3)](/CURLOPT_HSTS_CTRL/3.md)*

- CURLOPT\_HSTSREADFUNCTION

  Set HSTS read callback. See *[CURLOPT\_HSTSREADFUNCTION(3)](/CURLOPT_HSTSREADFUNCTION/3.md)*

- CURLOPT\_HSTSREADDATA

  Pass pointer to the HSTS read callback. See *[CURLOPT\_HSTSREADDATA(3)](/CURLOPT_HSTSREADDATA/3.md)*

- CURLOPT\_HSTSWRITEFUNCTION

  Set HSTS write callback. See *[CURLOPT\_HSTSWRITEFUNCTION(3)](/CURLOPT_HSTSWRITEFUNCTION/3.md)*

- CURLOPT\_HSTSWRITEDATA

  Pass pointer to the HSTS write callback. See *[CURLOPT\_HSTSWRITEDATA(3)](/CURLOPT_HSTSWRITEDATA/3.md)*

- CURLOPT\_HTTPGET

  Do an HTTP GET request. See *[CURLOPT\_HTTPGET(3)](/CURLOPT_HTTPGET/3.md)*

- CURLOPT\_REQUEST\_TARGET

  Set the request target. *[CURLOPT\_REQUEST\_TARGET(3)](/CURLOPT_REQUEST_TARGET/3.md)*

- CURLOPT\_HTTP\_VERSION

  HTTP version to use. *[CURLOPT\_HTTP\_VERSION(3)](/CURLOPT_HTTP_VERSION/3.md)*

- CURLOPT\_HTTP09\_ALLOWED

  Allow HTTP/0.9 responses. *[CURLOPT\_HTTP09\_ALLOWED(3)](/CURLOPT_HTTP09_ALLOWED/3.md)*

- CURLOPT\_IGNORE\_CONTENT\_LENGTH

  Ignore Content-Length. See *[CURLOPT\_IGNORE\_CONTENT\_LENGTH(3)](/CURLOPT_IGNORE_CONTENT_LENGTH/3.md)*

- CURLOPT\_HTTP\_CONTENT\_DECODING

  Disable Content decoding. See *[CURLOPT\_HTTP\_CONTENT\_DECODING(3)](/CURLOPT_HTTP_CONTENT_DECODING/3.md)*

- CURLOPT\_HTTP\_TRANSFER\_DECODING

  Disable Transfer decoding. See *[CURLOPT\_HTTP\_TRANSFER\_DECODING(3)](/CURLOPT_HTTP_TRANSFER_DECODING/3.md)*

- CURLOPT\_EXPECT\_100\_TIMEOUT\_MS

  100-continue timeout. See *[CURLOPT\_EXPECT\_100\_TIMEOUT\_MS(3)](/CURLOPT_EXPECT_100_TIMEOUT_MS/3.md)*

- CURLOPT\_TRAILERFUNCTION

  Set callback for sending trailing headers. See *[CURLOPT\_TRAILERFUNCTION(3)](/CURLOPT_TRAILERFUNCTION/3.md)*

- CURLOPT\_TRAILERDATA

  Custom pointer passed to the trailing headers callback. See *[CURLOPT\_TRAILERDATA(3)](/CURLOPT_TRAILERDATA/3.md)*

- CURLOPT\_PIPEWAIT

  Wait on connection to pipeline on it. See *[CURLOPT\_PIPEWAIT(3)](/CURLOPT_PIPEWAIT/3.md)*

- CURLOPT\_STREAM\_DEPENDS

  This HTTP/2 stream depends on another. See *[CURLOPT\_STREAM\_DEPENDS(3)](/CURLOPT_STREAM_DEPENDS/3.md)*

- CURLOPT\_STREAM\_DEPENDS\_E

  This HTTP/2 stream depends on another exclusively. See *[CURLOPT\_STREAM\_DEPENDS\_E(3)](/CURLOPT_STREAM_DEPENDS_E/3.md)*

- CURLOPT\_STREAM\_WEIGHT

  Set this HTTP/2 stream's weight. See *[CURLOPT\_STREAM\_WEIGHT(3)](/CURLOPT_STREAM_WEIGHT/3.md)*

## SMTP OPTIONS

- CURLOPT\_MAIL\_FROM

  Address of the sender. See *[CURLOPT\_MAIL\_FROM(3)](/CURLOPT_MAIL_FROM/3.md)*

- CURLOPT\_MAIL\_RCPT

  Address of the recipients. See *[CURLOPT\_MAIL\_RCPT(3)](/CURLOPT_MAIL_RCPT/3.md)*

- CURLOPT\_MAIL\_AUTH

  Authentication address. See *[CURLOPT\_MAIL\_AUTH(3)](/CURLOPT_MAIL_AUTH/3.md)*

- CURLOPT\_MAIL\_RCPT\_ALLOWFAILS

  Allow RCPT TO command to fail for some recipients. See *[CURLOPT\_MAIL\_RCPT\_ALLOWFAILS(3)](/CURLOPT_MAIL_RCPT_ALLOWFAILS/3.md)*

## TFTP OPTIONS

- CURLOPT\_TFTP\_BLKSIZE

  TFTP block size. See *[CURLOPT\_TFTP\_BLKSIZE(3)](/CURLOPT_TFTP_BLKSIZE/3.md)*

- CURLOPT\_TFTP\_NO\_OPTIONS

  Do not send TFTP options requests. See *[CURLOPT\_TFTP\_NO\_OPTIONS(3)](/CURLOPT_TFTP_NO_OPTIONS/3.md)*

## FTP OPTIONS

- CURLOPT\_FTPPORT

  Use active FTP. See *[CURLOPT\_FTPPORT(3)](/CURLOPT_FTPPORT/3.md)*

- CURLOPT\_QUOTE

  Commands to run before transfer. See *[CURLOPT\_QUOTE(3)](/CURLOPT_QUOTE/3.md)*

- CURLOPT\_POSTQUOTE

  Commands to run after transfer. See *[CURLOPT\_POSTQUOTE(3)](/CURLOPT_POSTQUOTE/3.md)*

- CURLOPT\_PREQUOTE

  Commands to run just before transfer. See *[CURLOPT\_PREQUOTE(3)](/CURLOPT_PREQUOTE/3.md)*

- CURLOPT\_APPEND

  Append to remote file. See *[CURLOPT\_APPEND(3)](/CURLOPT_APPEND/3.md)*

- CURLOPT\_FTP\_USE\_EPRT

  Use EPRT. See *[CURLOPT\_FTP\_USE\_EPRT(3)](/CURLOPT_FTP_USE_EPRT/3.md)*

- CURLOPT\_FTP\_USE\_EPSV

  Use EPSV. See *[CURLOPT\_FTP\_USE\_EPSV(3)](/CURLOPT_FTP_USE_EPSV/3.md)*

- CURLOPT\_FTP\_USE\_PRET

  Use PRET. See *[CURLOPT\_FTP\_USE\_PRET(3)](/CURLOPT_FTP_USE_PRET/3.md)*

- CURLOPT\_FTP\_CREATE\_MISSING\_DIRS

  Create missing directories on the remote server. See *[CURLOPT\_FTP\_CREATE\_MISSING\_DIRS(3)](/CURLOPT_FTP_CREATE_MISSING_DIRS/3.md)*

- CURLOPT\_SERVER\_RESPONSE\_TIMEOUT

  Timeout for server responses. See *[CURLOPT\_SERVER\_RESPONSE\_TIMEOUT(3)](/CURLOPT_SERVER_RESPONSE_TIMEOUT/3.md)*

- CURLOPT\_SERVER\_RESPONSE\_TIMEOUT\_MS

  Timeout for server responses. See *[CURLOPT\_SERVER\_RESPONSE\_TIMEOUT\_MS(3)](/CURLOPT_SERVER_RESPONSE_TIMEOUT_MS/3.md)*

- CURLOPT\_FTP\_ALTERNATIVE\_TO\_USER

  Alternative to USER. See *[CURLOPT\_FTP\_ALTERNATIVE\_TO\_USER(3)](/CURLOPT_FTP_ALTERNATIVE_TO_USER/3.md)*

- CURLOPT\_FTP\_SKIP\_PASV\_IP

  Ignore the IP address in the PASV response. See *[CURLOPT\_FTP\_SKIP\_PASV\_IP(3)](/CURLOPT_FTP_SKIP_PASV_IP/3.md)*

- CURLOPT\_FTPSSLAUTH

  Control how to do TLS. See *[CURLOPT\_FTPSSLAUTH(3)](/CURLOPT_FTPSSLAUTH/3.md)*

- CURLOPT\_FTP\_SSL\_CCC

  Back to non-TLS again after authentication. See *[CURLOPT\_FTP\_SSL\_CCC(3)](/CURLOPT_FTP_SSL_CCC/3.md)*

- CURLOPT\_FTP\_ACCOUNT

  Send ACCT command. See *[CURLOPT\_FTP\_ACCOUNT(3)](/CURLOPT_FTP_ACCOUNT/3.md)*

- CURLOPT\_FTP\_FILEMETHOD

  Specify how to reach files. See *[CURLOPT\_FTP\_FILEMETHOD(3)](/CURLOPT_FTP_FILEMETHOD/3.md)*

## RTSP OPTIONS

- CURLOPT\_RTSP\_REQUEST

  RTSP request. See *[CURLOPT\_RTSP\_REQUEST(3)](/CURLOPT_RTSP_REQUEST/3.md)*

- CURLOPT\_RTSP\_SESSION\_ID

  RTSP session-id. See *[CURLOPT\_RTSP\_SESSION\_ID(3)](/CURLOPT_RTSP_SESSION_ID/3.md)*

- CURLOPT\_RTSP\_STREAM\_URI

  RTSP stream URI. See *[CURLOPT\_RTSP\_STREAM\_URI(3)](/CURLOPT_RTSP_STREAM_URI/3.md)*

- CURLOPT\_RTSP\_TRANSPORT

  RTSP Transport: header. See *[CURLOPT\_RTSP\_TRANSPORT(3)](/CURLOPT_RTSP_TRANSPORT/3.md)*

- CURLOPT\_RTSP\_CLIENT\_CSEQ

  Client CSEQ number. See *[CURLOPT\_RTSP\_CLIENT\_CSEQ(3)](/CURLOPT_RTSP_CLIENT_CSEQ/3.md)*

- CURLOPT\_RTSP\_SERVER\_CSEQ

  CSEQ number for RTSP Server-\>Client request. See *[CURLOPT\_RTSP\_SERVER\_CSEQ(3)](/CURLOPT_RTSP_SERVER_CSEQ/3.md)*

- CURLOPT\_AWS\_SIGV4

  AWS HTTP V4 Signature. See *[CURLOPT\_AWS\_SIGV4(3)](/CURLOPT_AWS_SIGV4/3.md)*

## PROTOCOL OPTIONS

- CURLOPT\_TRANSFERTEXT

  Use text transfer. See *[CURLOPT\_TRANSFERTEXT(3)](/CURLOPT_TRANSFERTEXT/3.md)*

- CURLOPT\_PROXY\_TRANSFER\_MODE

  Add transfer mode to URL over proxy. See *[CURLOPT\_PROXY\_TRANSFER\_MODE(3)](/CURLOPT_PROXY_TRANSFER_MODE/3.md)*

- CURLOPT\_CRLF

  Convert newlines. See *[CURLOPT\_CRLF(3)](/CURLOPT_CRLF/3.md)*

- CURLOPT\_RANGE

  Range requests. See *[CURLOPT\_RANGE(3)](/CURLOPT_RANGE/3.md)*

- CURLOPT\_RESUME\_FROM

  Resume a transfer. See *[CURLOPT\_RESUME\_FROM(3)](/CURLOPT_RESUME_FROM/3.md)*

- CURLOPT\_RESUME\_FROM\_LARGE

  Resume a transfer. See *[CURLOPT\_RESUME\_FROM\_LARGE(3)](/CURLOPT_RESUME_FROM_LARGE/3.md)*

- CURLOPT\_CURLU

  Set URL to work on with a URL handle. See *[CURLOPT\_CURLU(3)](/CURLOPT_CURLU/3.md)*

- CURLOPT\_CUSTOMREQUEST

  Custom request/method. See *[CURLOPT\_CUSTOMREQUEST(3)](/CURLOPT_CUSTOMREQUEST/3.md)*

- CURLOPT\_FILETIME

  Request file modification date and time. See *[CURLOPT\_FILETIME(3)](/CURLOPT_FILETIME/3.md)*

- CURLOPT\_DIRLISTONLY

  List only. See *[CURLOPT\_DIRLISTONLY(3)](/CURLOPT_DIRLISTONLY/3.md)*

- CURLOPT\_NOBODY

  Do not get the body contents. See *[CURLOPT\_NOBODY(3)](/CURLOPT_NOBODY/3.md)*

- CURLOPT\_INFILESIZE

  Size of file to send. *[CURLOPT\_INFILESIZE(3)](/CURLOPT_INFILESIZE/3.md)*

- CURLOPT\_INFILESIZE\_LARGE

  Size of file to send. *[CURLOPT\_INFILESIZE\_LARGE(3)](/CURLOPT_INFILESIZE_LARGE/3.md)*

- CURLOPT\_UPLOAD

  Upload data. See *[CURLOPT\_UPLOAD(3)](/CURLOPT_UPLOAD/3.md)*

- CURLOPT\_UPLOAD\_BUFFERSIZE

  Set upload buffer size. See *[CURLOPT\_UPLOAD\_BUFFERSIZE(3)](/CURLOPT_UPLOAD_BUFFERSIZE/3.md)*

- CURLOPT\_MIMEPOST

  Post/send MIME data. See *[CURLOPT\_MIMEPOST(3)](/CURLOPT_MIMEPOST/3.md)*

- CURLOPT\_MIME\_OPTIONS

  Set MIME option flags. See *[CURLOPT\_MIME\_OPTIONS(3)](/CURLOPT_MIME_OPTIONS/3.md)*

- CURLOPT\_MAXFILESIZE

  Maximum file size to get. See *[CURLOPT\_MAXFILESIZE(3)](/CURLOPT_MAXFILESIZE/3.md)*

- CURLOPT\_MAXFILESIZE\_LARGE

  Maximum file size to get. See *[CURLOPT\_MAXFILESIZE\_LARGE(3)](/CURLOPT_MAXFILESIZE_LARGE/3.md)*

- CURLOPT\_TIMECONDITION

  Make a time conditional request. See *[CURLOPT\_TIMECONDITION(3)](/CURLOPT_TIMECONDITION/3.md)*

- CURLOPT\_TIMEVALUE

  Time value for the time conditional request. See *[CURLOPT\_TIMEVALUE(3)](/CURLOPT_TIMEVALUE/3.md)*

- CURLOPT\_TIMEVALUE\_LARGE

  Time value for the time conditional request. See *[CURLOPT\_TIMEVALUE\_LARGE(3)](/CURLOPT_TIMEVALUE_LARGE/3.md)*

## CONNECTION OPTIONS

- CURLOPT\_TIMEOUT

  Timeout for the entire request. See *[CURLOPT\_TIMEOUT(3)](/CURLOPT_TIMEOUT/3.md)*

- CURLOPT\_TIMEOUT\_MS

  Millisecond timeout for the entire request. See *[CURLOPT\_TIMEOUT\_MS(3)](/CURLOPT_TIMEOUT_MS/3.md)*

- CURLOPT\_LOW\_SPEED\_LIMIT

  Low speed limit to abort transfer. See *[CURLOPT\_LOW\_SPEED\_LIMIT(3)](/CURLOPT_LOW_SPEED_LIMIT/3.md)*

- CURLOPT\_LOW\_SPEED\_TIME

  Time to be below the speed to trigger low speed abort. See *[CURLOPT\_LOW\_SPEED\_TIME(3)](/CURLOPT_LOW_SPEED_TIME/3.md)*

- CURLOPT\_MAX\_SEND\_SPEED\_LARGE

  Cap the upload speed to this. See *[CURLOPT\_MAX\_SEND\_SPEED\_LARGE(3)](/CURLOPT_MAX_SEND_SPEED_LARGE/3.md)*

- CURLOPT\_MAX\_RECV\_SPEED\_LARGE

  Cap the download speed to this. See *[CURLOPT\_MAX\_RECV\_SPEED\_LARGE(3)](/CURLOPT_MAX_RECV_SPEED_LARGE/3.md)*

- CURLOPT\_MAXCONNECTS

  Maximum number of connections in the connection pool. See *[CURLOPT\_MAXCONNECTS(3)](/CURLOPT_MAXCONNECTS/3.md)*

- CURLOPT\_FRESH\_CONNECT

  Use a new connection. *[CURLOPT\_FRESH\_CONNECT(3)](/CURLOPT_FRESH_CONNECT/3.md)*

- CURLOPT\_FORBID\_REUSE

  Prevent subsequent connections from reusing this. See *[CURLOPT\_FORBID\_REUSE(3)](/CURLOPT_FORBID_REUSE/3.md)*

- CURLOPT\_MAXAGE\_CONN

  Limit the age (idle time) of connections for reuse. See *[CURLOPT\_MAXAGE\_CONN(3)](/CURLOPT_MAXAGE_CONN/3.md)*

- CURLOPT\_MAXLIFETIME\_CONN

  Limit the age (since creation) of connections for reuse. See *[CURLOPT\_MAXLIFETIME\_CONN(3)](/CURLOPT_MAXLIFETIME_CONN/3.md)*

- CURLOPT\_CONNECTTIMEOUT

  Timeout for the connection phase. See *[CURLOPT\_CONNECTTIMEOUT(3)](/CURLOPT_CONNECTTIMEOUT/3.md)*

- CURLOPT\_CONNECTTIMEOUT\_MS

  Millisecond timeout for the connection phase. See *[CURLOPT\_CONNECTTIMEOUT\_MS(3)](/CURLOPT_CONNECTTIMEOUT_MS/3.md)*

- CURLOPT\_IPRESOLVE

  IP version to use. See *[CURLOPT\_IPRESOLVE(3)](/CURLOPT_IPRESOLVE/3.md)*

- CURLOPT\_CONNECT\_ONLY

  Only connect, nothing else. See *[CURLOPT\_CONNECT\_ONLY(3)](/CURLOPT_CONNECT_ONLY/3.md)*

- CURLOPT\_USE\_SSL

  Use TLS/SSL. See *[CURLOPT\_USE\_SSL(3)](/CURLOPT_USE_SSL/3.md)*

- CURLOPT\_RESOLVE

  Provide fixed/fake name resolves. See *[CURLOPT\_RESOLVE(3)](/CURLOPT_RESOLVE/3.md)*

- CURLOPT\_DNS\_INTERFACE

  Bind name resolves to this interface. See *[CURLOPT\_DNS\_INTERFACE(3)](/CURLOPT_DNS_INTERFACE/3.md)*

- CURLOPT\_DNS\_LOCAL\_IP4

  Bind name resolves to this IP4 address. See *[CURLOPT\_DNS\_LOCAL\_IP4(3)](/CURLOPT_DNS_LOCAL_IP4/3.md)*

- CURLOPT\_DNS\_LOCAL\_IP6

  Bind name resolves to this IP6 address. See *[CURLOPT\_DNS\_LOCAL\_IP6(3)](/CURLOPT_DNS_LOCAL_IP6/3.md)*

- CURLOPT\_DNS\_SERVERS

  Preferred DNS servers. See *[CURLOPT\_DNS\_SERVERS(3)](/CURLOPT_DNS_SERVERS/3.md)*

- CURLOPT\_DNS\_SHUFFLE\_ADDRESSES

  Shuffle addresses before use. See *[CURLOPT\_DNS\_SHUFFLE\_ADDRESSES(3)](/CURLOPT_DNS_SHUFFLE_ADDRESSES/3.md)*

- CURLOPT\_ACCEPTTIMEOUT\_MS

  Timeout for waiting for the server's connect back to be accepted. See *[CURLOPT\_ACCEPTTIMEOUT\_MS(3)](/CURLOPT_ACCEPTTIMEOUT_MS/3.md)*

- CURLOPT\_HAPPY\_EYEBALLS\_TIMEOUT\_MS

  Timeout for happy eyeballs. See *[CURLOPT\_HAPPY\_EYEBALLS\_TIMEOUT\_MS(3)](/CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS/3.md)*

- CURLOPT\_UPKEEP\_INTERVAL\_MS

  Sets the interval at which connection upkeep are performed. See *[CURLOPT\_UPKEEP\_INTERVAL\_MS(3)](/CURLOPT_UPKEEP_INTERVAL_MS/3.md)*

## SSL and SECURITY OPTIONS

- CURLOPT\_SSLCERT

  Client cert. See *[CURLOPT\_SSLCERT(3)](/CURLOPT_SSLCERT/3.md)*

- CURLOPT\_SSLCERT\_BLOB

  Client cert memory buffer. See *[CURLOPT\_SSLCERT\_BLOB(3)](/CURLOPT_SSLCERT_BLOB/3.md)*

- CURLOPT\_PROXY\_SSLCERT

  Proxy client cert. See *[CURLOPT\_PROXY\_SSLCERT(3)](/CURLOPT_PROXY_SSLCERT/3.md)*

- CURLOPT\_PROXY\_SSLCERT\_BLOB

  Proxy client cert memory buffer. See *[CURLOPT\_PROXY\_SSLCERT\_BLOB(3)](/CURLOPT_PROXY_SSLCERT_BLOB/3.md)*

- CURLOPT\_SSLCERTTYPE

  Client cert type. See *[CURLOPT\_SSLCERTTYPE(3)](/CURLOPT_SSLCERTTYPE/3.md)*

- CURLOPT\_PROXY\_SSLCERTTYPE

  Proxy client cert type. See *[CURLOPT\_PROXY\_SSLCERTTYPE(3)](/CURLOPT_PROXY_SSLCERTTYPE/3.md)*

- CURLOPT\_SSLKEY

  Client key. See *[CURLOPT\_SSLKEY(3)](/CURLOPT_SSLKEY/3.md)*

- CURLOPT\_SSLKEY\_BLOB

  Client key memory buffer. See *[CURLOPT\_SSLKEY\_BLOB(3)](/CURLOPT_SSLKEY_BLOB/3.md)*

- CURLOPT\_PROXY\_SSLKEY

  Proxy client key. See *[CURLOPT\_PROXY\_SSLKEY(3)](/CURLOPT_PROXY_SSLKEY/3.md)*

- CURLOPT\_PROXY\_SSLKEY\_BLOB

  Proxy client key. See *[CURLOPT\_PROXY\_SSLKEY\_BLOB(3)](/CURLOPT_PROXY_SSLKEY_BLOB/3.md)*

- CURLOPT\_SSLKEYTYPE

  Client key type. See *[CURLOPT\_SSLKEYTYPE(3)](/CURLOPT_SSLKEYTYPE/3.md)*

- CURLOPT\_PROXY\_SSLKEYTYPE

  Proxy client key type. See *[CURLOPT\_PROXY\_SSLKEYTYPE(3)](/CURLOPT_PROXY_SSLKEYTYPE/3.md)*

- CURLOPT\_KEYPASSWD

  Client key password. See *[CURLOPT\_KEYPASSWD(3)](/CURLOPT_KEYPASSWD/3.md)*

- CURLOPT\_PROXY\_KEYPASSWD

  Proxy client key password. See *[CURLOPT\_PROXY\_KEYPASSWD(3)](/CURLOPT_PROXY_KEYPASSWD/3.md)*

- CURLOPT\_SSL\_EC\_CURVES

  Set key exchange curves. See *[CURLOPT\_SSL\_EC\_CURVES(3)](/CURLOPT_SSL_EC_CURVES/3.md)*

- CURLOPT\_SSL\_ENABLE\_ALPN

  Enable use of ALPN. See *[CURLOPT\_SSL\_ENABLE\_ALPN(3)](/CURLOPT_SSL_ENABLE_ALPN/3.md)*

- CURLOPT\_SSL\_ENABLE\_NPN

  **OBSOLETE** Enable use of NPN. See *[CURLOPT\_SSL\_ENABLE\_NPN(3)](/CURLOPT_SSL_ENABLE_NPN/3.md)*

- CURLOPT\_SSLENGINE

  Use identifier with SSL engine. See *[CURLOPT\_SSLENGINE(3)](/CURLOPT_SSLENGINE/3.md)*

- CURLOPT\_SSLENGINE\_DEFAULT

  Default SSL engine. See *[CURLOPT\_SSLENGINE\_DEFAULT(3)](/CURLOPT_SSLENGINE_DEFAULT/3.md)*

- CURLOPT\_SSL\_FALSESTART

  Enable TLS False Start. See *[CURLOPT\_SSL\_FALSESTART(3)](/CURLOPT_SSL_FALSESTART/3.md)*

- CURLOPT\_SSLVERSION

  SSL version to use. See *[CURLOPT\_SSLVERSION(3)](/CURLOPT_SSLVERSION/3.md)*

- CURLOPT\_PROXY\_SSLVERSION

  Proxy SSL version to use. See *[CURLOPT\_PROXY\_SSLVERSION(3)](/CURLOPT_PROXY_SSLVERSION/3.md)*

- CURLOPT\_SSL\_VERIFYHOST

  Verify the hostname in the SSL certificate. See *[CURLOPT\_SSL\_VERIFYHOST(3)](/CURLOPT_SSL_VERIFYHOST/3.md)*

- CURLOPT\_DOH\_SSL\_VERIFYHOST

  Verify the hostname in the DoH (DNS-over-HTTPS) SSL certificate. See *[CURLOPT\_DOH\_SSL\_VERIFYHOST(3)](/CURLOPT_DOH_SSL_VERIFYHOST/3.md)*

- CURLOPT\_PROXY\_SSL\_VERIFYHOST

  Verify the hostname in the proxy SSL certificate. See *[CURLOPT\_PROXY\_SSL\_VERIFYHOST(3)](/CURLOPT_PROXY_SSL_VERIFYHOST/3.md)*

- CURLOPT\_SSL\_VERIFYPEER

  Verify the SSL certificate. See *[CURLOPT\_SSL\_VERIFYPEER(3)](/CURLOPT_SSL_VERIFYPEER/3.md)*

- CURLOPT\_DOH\_SSL\_VERIFYPEER

  Verify the DoH (DNS-over-HTTPS) SSL certificate. See *[CURLOPT\_DOH\_SSL\_VERIFYPEER(3)](/CURLOPT_DOH_SSL_VERIFYPEER/3.md)*

- CURLOPT\_PROXY\_SSL\_VERIFYPEER

  Verify the proxy SSL certificate. See *[CURLOPT\_PROXY\_SSL\_VERIFYPEER(3)](/CURLOPT_PROXY_SSL_VERIFYPEER/3.md)*

- CURLOPT\_SSL\_VERIFYSTATUS

  Verify the SSL certificate's status. See *[CURLOPT\_SSL\_VERIFYSTATUS(3)](/CURLOPT_SSL_VERIFYSTATUS/3.md)*

- CURLOPT\_DOH\_SSL\_VERIFYSTATUS

  Verify the DoH (DNS-over-HTTPS) SSL certificate's status. See *[CURLOPT\_DOH\_SSL\_VERIFYSTATUS(3)](/CURLOPT_DOH_SSL_VERIFYSTATUS/3.md)*

- CURLOPT\_CAINFO

  CA cert bundle. See *[CURLOPT\_CAINFO(3)](/CURLOPT_CAINFO/3.md)*

- CURLOPT\_CAINFO\_BLOB

  CA cert bundle memory buffer. See *[CURLOPT\_CAINFO\_BLOB(3)](/CURLOPT_CAINFO_BLOB/3.md)*

- CURLOPT\_PROXY\_CAINFO

  Proxy CA cert bundle. See *[CURLOPT\_PROXY\_CAINFO(3)](/CURLOPT_PROXY_CAINFO/3.md)*

- CURLOPT\_PROXY\_CAINFO\_BLOB

  Proxy CA cert bundle memory buffer. See *[CURLOPT\_PROXY\_CAINFO\_BLOB(3)](/CURLOPT_PROXY_CAINFO_BLOB/3.md)*

- CURLOPT\_ISSUERCERT

  Issuer certificate. See *[CURLOPT\_ISSUERCERT(3)](/CURLOPT_ISSUERCERT/3.md)*

- CURLOPT\_ISSUERCERT\_BLOB

  Issuer certificate memory buffer. See *[CURLOPT\_ISSUERCERT\_BLOB(3)](/CURLOPT_ISSUERCERT_BLOB/3.md)*

- CURLOPT\_PROXY\_ISSUERCERT

  Proxy issuer certificate. See *[CURLOPT\_PROXY\_ISSUERCERT(3)](/CURLOPT_PROXY_ISSUERCERT/3.md)*

- CURLOPT\_PROXY\_ISSUERCERT\_BLOB

  Proxy issuer certificate memory buffer. See *[CURLOPT\_PROXY\_ISSUERCERT\_BLOB(3)](/CURLOPT_PROXY_ISSUERCERT_BLOB/3.md)*

- CURLOPT\_CAPATH

  Path to CA cert bundle. See *[CURLOPT\_CAPATH(3)](/CURLOPT_CAPATH/3.md)*

- CURLOPT\_PROXY\_CAPATH

  Path to proxy CA cert bundle. See *[CURLOPT\_PROXY\_CAPATH(3)](/CURLOPT_PROXY_CAPATH/3.md)*

- CURLOPT\_CRLFILE

  Certificate Revocation List. See *[CURLOPT\_CRLFILE(3)](/CURLOPT_CRLFILE/3.md)*

- CURLOPT\_PROXY\_CRLFILE

  Proxy Certificate Revocation List. See *[CURLOPT\_PROXY\_CRLFILE(3)](/CURLOPT_PROXY_CRLFILE/3.md)*

- CURLOPT\_CA\_CACHE\_TIMEOUT

  Timeout for CA cache. See *[CURLOPT\_CA\_CACHE\_TIMEOUT(3)](/CURLOPT_CA_CACHE_TIMEOUT/3.md)*

- CURLOPT\_CERTINFO

  Extract certificate info. See *[CURLOPT\_CERTINFO(3)](/CURLOPT_CERTINFO/3.md)*

- CURLOPT\_PINNEDPUBLICKEY

  Set pinned SSL public key . See *[CURLOPT\_PINNEDPUBLICKEY(3)](/CURLOPT_PINNEDPUBLICKEY/3.md)*

- CURLOPT\_PROXY\_PINNEDPUBLICKEY

  Set the proxy's pinned SSL public key. See *[CURLOPT\_PROXY\_PINNEDPUBLICKEY(3)](/CURLOPT_PROXY_PINNEDPUBLICKEY/3.md)*

- CURLOPT\_RANDOM\_FILE

  **OBSOLETE** Provide source for entropy random data. See *[CURLOPT\_RANDOM\_FILE(3)](/CURLOPT_RANDOM_FILE/3.md)*

- CURLOPT\_EGDSOCKET

  **OBSOLETE** Identify EGD socket for entropy. See *[CURLOPT\_EGDSOCKET(3)](/CURLOPT_EGDSOCKET/3.md)*

- CURLOPT\_SSL\_CIPHER\_LIST

  Ciphers to use. See *[CURLOPT\_SSL\_CIPHER\_LIST(3)](/CURLOPT_SSL_CIPHER_LIST/3.md)*

- CURLOPT\_PROXY\_SSL\_CIPHER\_LIST

  Proxy ciphers to use. See *[CURLOPT\_PROXY\_SSL\_CIPHER\_LIST(3)](/CURLOPT_PROXY_SSL_CIPHER_LIST/3.md)*

- CURLOPT\_TLS13\_CIPHERS

  TLS 1.3 cipher suites to use. See *[CURLOPT\_TLS13\_CIPHERS(3)](/CURLOPT_TLS13_CIPHERS/3.md)*

- CURLOPT\_PROXY\_TLS13\_CIPHERS

  Proxy TLS 1.3 cipher suites to use. See *[CURLOPT\_PROXY\_TLS13\_CIPHERS(3)](/CURLOPT_PROXY_TLS13_CIPHERS/3.md)*

- CURLOPT\_SSL\_SESSIONID\_CACHE

  Disable SSL session-id cache. See *[CURLOPT\_SSL\_SESSIONID\_CACHE(3)](/CURLOPT_SSL_SESSIONID_CACHE/3.md)*

- CURLOPT\_SSL\_OPTIONS

  Control SSL behavior. See *[CURLOPT\_SSL\_OPTIONS(3)](/CURLOPT_SSL_OPTIONS/3.md)*

- CURLOPT\_PROXY\_SSL\_OPTIONS

  Control proxy SSL behavior. See *[CURLOPT\_PROXY\_SSL\_OPTIONS(3)](/CURLOPT_PROXY_SSL_OPTIONS/3.md)*

- CURLOPT\_KRBLEVEL

  Kerberos security level. See *[CURLOPT\_KRBLEVEL(3)](/CURLOPT_KRBLEVEL/3.md)*

- CURLOPT\_GSSAPI\_DELEGATION

  Disable GSS-API delegation. See *[CURLOPT\_GSSAPI\_DELEGATION(3)](/CURLOPT_GSSAPI_DELEGATION/3.md)*

## SSH OPTIONS

- CURLOPT\_SSH\_AUTH\_TYPES

  SSH authentication types. See *[CURLOPT\_SSH\_AUTH\_TYPES(3)](/CURLOPT_SSH_AUTH_TYPES/3.md)*

- CURLOPT\_SSH\_COMPRESSION

  Enable SSH compression. See *[CURLOPT\_SSH\_COMPRESSION(3)](/CURLOPT_SSH_COMPRESSION/3.md)*

- CURLOPT\_SSH\_HOST\_PUBLIC\_KEY\_MD5

  MD5 of host's public key. See *[CURLOPT\_SSH\_HOST\_PUBLIC\_KEY\_MD5(3)](/CURLOPT_SSH_HOST_PUBLIC_KEY_MD5/3.md)*

- CURLOPT\_SSH\_HOST\_PUBLIC\_KEY\_SHA256

  SHA256 of host's public key. See *[CURLOPT\_SSH\_HOST\_PUBLIC\_KEY\_SHA256(3)](/CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256/3.md)*

- CURLOPT\_SSH\_PUBLIC\_KEYFILE

  Filename of the public key. See *[CURLOPT\_SSH\_PUBLIC\_KEYFILE(3)](/CURLOPT_SSH_PUBLIC_KEYFILE/3.md)*

- CURLOPT\_SSH\_PRIVATE\_KEYFILE

  Filename of the private key. See *[CURLOPT\_SSH\_PRIVATE\_KEYFILE(3)](/CURLOPT_SSH_PRIVATE_KEYFILE/3.md)*

- CURLOPT\_SSH\_KNOWNHOSTS

  Filename with known hosts. See *[CURLOPT\_SSH\_KNOWNHOSTS(3)](/CURLOPT_SSH_KNOWNHOSTS/3.md)*

- CURLOPT\_SSH\_KEYFUNCTION

  Callback for known hosts handling. See *[CURLOPT\_SSH\_KEYFUNCTION(3)](/CURLOPT_SSH_KEYFUNCTION/3.md)*

- CURLOPT\_SSH\_KEYDATA

  Custom pointer to pass to ssh key callback. See *[CURLOPT\_SSH\_KEYDATA(3)](/CURLOPT_SSH_KEYDATA/3.md)*

- CURLOPT\_SSH\_HOSTKEYFUNCTION

  Callback for checking host key handling. See *[CURLOPT\_SSH\_HOSTKEYFUNCTION(3)](/CURLOPT_SSH_HOSTKEYFUNCTION/3.md)*

- CURLOPT\_SSH\_HOSTKEYDATA

  Custom pointer to pass to ssh host key callback. See *[CURLOPT\_SSH\_HOSTKEYDATA(3)](/CURLOPT_SSH_HOSTKEYDATA/3.md)*

## WEBSOCKET

- CURLOPT\_WS\_OPTIONS

  Set WebSocket options. See *[CURLOPT\_WS\_OPTIONS(3)](/CURLOPT_WS_OPTIONS/3.md)*

## OTHER OPTIONS

- CURLOPT\_PRIVATE

  Private pointer to store. See *[CURLOPT\_PRIVATE(3)](/CURLOPT_PRIVATE/3.md)*

- CURLOPT\_SHARE

  Share object to use. See *[CURLOPT\_SHARE(3)](/CURLOPT_SHARE/3.md)*

- CURLOPT\_NEW\_FILE\_PERMS

  Mode for creating new remote files. See *[CURLOPT\_NEW\_FILE\_PERMS(3)](/CURLOPT_NEW_FILE_PERMS/3.md)*

- CURLOPT\_NEW\_DIRECTORY\_PERMS

  Mode for creating new remote directories. See *[CURLOPT\_NEW\_DIRECTORY\_PERMS(3)](/CURLOPT_NEW_DIRECTORY_PERMS/3.md)*

- CURLOPT\_QUICK\_EXIT

  To be set by toplevel tools like "curl" to skip lengthy cleanups when they are about to call exit() anyway. See *[CURLOPT\_QUICK\_EXIT(3)](/CURLOPT_QUICK_EXIT/3.md)*

## TELNET OPTIONS

- CURLOPT\_TELNETOPTIONS

  TELNET options. See *[CURLOPT\_TELNETOPTIONS(3)](/CURLOPT_TELNETOPTIONS/3.md)*

## EXAMPLE

```
int main(void)
{
  CURL *curl = curl_easy_init();
  if(curl) {
    CURLcode res;
    curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
    res = curl_easy_perform(curl);
    curl_easy_cleanup(curl);
  }
}
```

## AVAILABILITY

Always

## RETURN VALUE

*CURLE\_OK* (zero) means that the option was set properly, non-zero means an error occurred as *\<curl/curl.h\>* defines. See the *[libcurl-errors(3)](/libcurl-errors/3.md)* man page for the full list with descriptions.

Strings passed on to libcurl must be shorter than 8000000 bytes, otherwise *[curl\_easy\_setopt(3)](/curl_easy_setopt/3.md)* returns **CURLE\_BAD\_FUNCTION\_ARGUMENT** (added in 7.65.0).

**CURLE\_BAD\_FUNCTION\_ARGUMENT** is returned when the argument to an option is invalid, like perhaps out of range.

If you try to set an option that libcurl does not know about, perhaps because the library is too old to support it or the option was removed in a recent version, this function returns *CURLE\_UNKNOWN\_OPTION*. If support for the option was disabled at compile-time, it returns *CURLE\_NOT\_BUILT\_IN*.

## SEE ALSO

[**curl\_easy\_cleanup**(3)](/curl_easy_cleanup/3.md), [**curl\_easy\_getinfo**(3)](/curl_easy_getinfo/3.md), [**curl\_easy\_init**(3)](/curl_easy_init/3.md), [**curl\_easy\_option\_by\_id**(3)](/curl_easy_option_by_id/3.md), [**curl\_easy\_option\_by\_name**(3)](/curl_easy_option_by_name/3.md), [**curl\_easy\_option\_next**(3)](/curl_easy_option_next/3.md), [**curl\_easy\_reset**(3)](/curl_easy_reset/3.md), [**curl\_multi\_setopt**(3)](/curl_multi_setopt/3.md)
