curl_easy_setopt(3) Library Functions Manual curl_easy_setopt(3)

curl_easy_setopt - set options for a curl easy handle

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

curl_easy_setopt(3) 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) 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).

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) returns. The only exception to this rule is really CURLOPT_POSTFIELDS(3), but the alternative that copies the string CURLOPT_COPYPOSTFIELDS(3) 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) or curl_easy_duphandle(3) call.

Path to an abstract Unix domain socket. See CURLOPT_ABSTRACT_UNIX_SOCKET(3)
Timeout for waiting for the server's connect back to be accepted. See CURLOPT_ACCEPTTIMEOUT_MS(3)
Accept-Encoding and automatic decompressing data. See CURLOPT_ACCEPT_ENCODING(3)
IPv6 scope for local addresses. See CURLOPT_ADDRESS_SCOPE(3)
Specify the Alt-Svc: cache filename. See CURLOPT_ALTSVC(3)
Enable and configure Alt-Svc: treatment. See CURLOPT_ALTSVC_CTRL(3)
Append to remote file. See CURLOPT_APPEND(3)
Automatically set Referer: header. See CURLOPT_AUTOREFERER(3)
AWS HTTP V4 Signature. See CURLOPT_AWS_SIGV4(3)
Ask for alternate buffer size. See CURLOPT_BUFFERSIZE(3)
CA cert bundle. See CURLOPT_CAINFO(3)
CA cert bundle memory buffer. See CURLOPT_CAINFO_BLOB(3)
Path to CA cert bundle. See CURLOPT_CAPATH(3)
Timeout for CA cache. See CURLOPT_CA_CACHE_TIMEOUT(3)
Extract certificate info. See CURLOPT_CERTINFO(3)
Callback for wildcard download start of chunk. See CURLOPT_CHUNK_BGN_FUNCTION(3)
Data pointer to pass to the chunk callbacks. See CURLOPT_CHUNK_DATA(3)
Callback for wildcard download end of chunk. See CURLOPT_CHUNK_END_FUNCTION(3)
Data pointer to pass to the close socket callback. See CURLOPT_CLOSESOCKETDATA(3)
Callback for closing socket. See CURLOPT_CLOSESOCKETFUNCTION(3)
Timeout for the connection phase. See CURLOPT_CONNECTTIMEOUT(3)
Millisecond timeout for the connection phase. See CURLOPT_CONNECTTIMEOUT_MS(3)
Only connect, nothing else. See CURLOPT_CONNECT_ONLY(3)
Connect to a specific host and port. See CURLOPT_CONNECT_TO(3)
OBSOLETE Callback for code base conversion. See CURLOPT_CONV_FROM_NETWORK_FUNCTION(3)
OBSOLETE Callback for code base conversion. See CURLOPT_CONV_FROM_UTF8_FUNCTION(3)
OBSOLETE Callback for code base conversion. See CURLOPT_CONV_TO_NETWORK_FUNCTION(3)
Cookie(s) to send. See CURLOPT_COOKIE(3)
File to read cookies from. See CURLOPT_COOKIEFILE(3)
File to write cookies to. See CURLOPT_COOKIEJAR(3)
Add or control cookies. See CURLOPT_COOKIELIST(3)
Start a new cookie session. See CURLOPT_COOKIESESSION(3)
Send a POST with this data - and copy it. See CURLOPT_COPYPOSTFIELDS(3)
Convert newlines. See CURLOPT_CRLF(3)
Certificate Revocation List. See CURLOPT_CRLFILE(3)
Set URL to work on with a URL handle. See CURLOPT_CURLU(3)
Custom request/method. See CURLOPT_CUSTOMREQUEST(3)
Data pointer to pass to the debug callback. See CURLOPT_DEBUGDATA(3)
Callback for debug information. See CURLOPT_DEBUGFUNCTION(3)
Default protocol. See CURLOPT_DEFAULT_PROTOCOL(3)
List only. See CURLOPT_DIRLISTONLY(3)
Do not allow username in URL. See CURLOPT_DISALLOW_USERNAME_IN_URL(3)
Timeout for DNS cache. See CURLOPT_DNS_CACHE_TIMEOUT(3)
Bind name resolves to this interface. See CURLOPT_DNS_INTERFACE(3)
Bind name resolves to this IP4 address. See CURLOPT_DNS_LOCAL_IP4(3)
Bind name resolves to this IP6 address. See CURLOPT_DNS_LOCAL_IP6(3)
Preferred DNS servers. See CURLOPT_DNS_SERVERS(3)
Shuffle addresses before use. See CURLOPT_DNS_SHUFFLE_ADDRESSES(3)
OBSOLETE Enable global DNS cache. See CURLOPT_DNS_USE_GLOBAL_CACHE(3)
Verify the hostname in the DoH (DNS-over-HTTPS) SSL certificate. See CURLOPT_DOH_SSL_VERIFYHOST(3)
Verify the DoH (DNS-over-HTTPS) SSL certificate. See CURLOPT_DOH_SSL_VERIFYPEER(3)
Verify the DoH (DNS-over-HTTPS) SSL certificate's status. See CURLOPT_DOH_SSL_VERIFYSTATUS(3)
Use this DoH server for name resolves. See CURLOPT_DOH_URL(3)
Set the configuration for ECH. See CURLOPT_ECH(3)
OBSOLETE Identify EGD socket for entropy. See CURLOPT_EGDSOCKET(3)
Error message buffer. See CURLOPT_ERRORBUFFER(3)
100-continue timeout. See CURLOPT_EXPECT_100_TIMEOUT_MS(3)
Fail on HTTP 4xx errors. CURLOPT_FAILONERROR(3)
Request file modification date and time. See CURLOPT_FILETIME(3)
Data pointer to pass to the wildcard matching callback. See CURLOPT_FNMATCH_DATA(3)
Callback for wildcard matching. See CURLOPT_FNMATCH_FUNCTION(3)
Follow HTTP redirects. See CURLOPT_FOLLOWLOCATION(3)
Prevent subsequent connections from reusing this. See CURLOPT_FORBID_REUSE(3)
Use a new connection. CURLOPT_FRESH_CONNECT(3)
Use active FTP. See CURLOPT_FTPPORT(3)
Control how to do TLS. See CURLOPT_FTPSSLAUTH(3)
Send ACCT command. See CURLOPT_FTP_ACCOUNT(3)
Alternative to USER. See CURLOPT_FTP_ALTERNATIVE_TO_USER(3)
Create missing directories on the remote server. See CURLOPT_FTP_CREATE_MISSING_DIRS(3)
Specify how to reach files. See CURLOPT_FTP_FILEMETHOD(3)
Ignore the IP address in the PASV response. See CURLOPT_FTP_SKIP_PASV_IP(3)
Back to non-TLS again after authentication. See CURLOPT_FTP_SSL_CCC(3)
Use EPRT. See CURLOPT_FTP_USE_EPRT(3)
Use EPSV. See CURLOPT_FTP_USE_EPSV(3)
Use PRET. See CURLOPT_FTP_USE_PRET(3)
Disable GSS-API delegation. See CURLOPT_GSSAPI_DELEGATION(3)
Timeout for happy eyeballs. See CURLOPT_HAPPY_EYEBALLS_TIMEOUT_MS(3)
Send an HAProxy PROXY protocol v1 header. See CURLOPT_HAPROXYPROTOCOL(3)
Spoof the client IP in an HAProxy PROXY protocol v1 header. See CURLOPT_HAPROXY_CLIENT_IP(3)
Include the header in the body output. See CURLOPT_HEADER(3)
Data pointer to pass to the header callback. See CURLOPT_HEADERDATA(3)
Callback for writing received headers. See CURLOPT_HEADERFUNCTION(3)
Control custom headers. See CURLOPT_HEADEROPT(3)
Set HSTS cache file. See CURLOPT_HSTS(3)
Pass pointer to the HSTS read callback. See CURLOPT_HSTSREADDATA(3)
Set HSTS read callback. See CURLOPT_HSTSREADFUNCTION(3)
Pass pointer to the HSTS write callback. See CURLOPT_HSTSWRITEDATA(3)
Set HSTS write callback. See CURLOPT_HSTSWRITEFUNCTION(3)
Enable HSTS. See CURLOPT_HSTS_CTRL(3)
Allow HTTP/0.9 responses. CURLOPT_HTTP09_ALLOWED(3)
Alternative versions of 200 OK. See CURLOPT_HTTP200ALIASES(3)
HTTP server authentication methods. See CURLOPT_HTTPAUTH(3)
Do an HTTP GET request. See CURLOPT_HTTPGET(3)
Custom HTTP headers. See CURLOPT_HTTPHEADER(3)
Deprecated option Multipart formpost HTTP POST. See CURLOPT_HTTPPOST(3)
Tunnel through the HTTP proxy. CURLOPT_HTTPPROXYTUNNEL(3)
Disable Content decoding. See CURLOPT_HTTP_CONTENT_DECODING(3)
Disable Transfer decoding. See CURLOPT_HTTP_TRANSFER_DECODING(3)
HTTP version to use. CURLOPT_HTTP_VERSION(3)
Ignore Content-Length. See CURLOPT_IGNORE_CONTENT_LENGTH(3)
Size of file to send. CURLOPT_INFILESIZE(3)
Size of file to send. CURLOPT_INFILESIZE_LARGE(3)
Bind connection locally to this. See CURLOPT_INTERFACE(3)
Data pointer to pass to the RTSP interleave callback. See CURLOPT_INTERLEAVEDATA(3)
Callback for RTSP interleaved data. See CURLOPT_INTERLEAVEFUNCTION(3)
Deprecated option Data pointer to pass to the I/O callback. See CURLOPT_IOCTLDATA(3)
Deprecated option Callback for I/O operations. See CURLOPT_IOCTLFUNCTION(3)
IP version to use. See CURLOPT_IPRESOLVE(3)
Issuer certificate. See CURLOPT_ISSUERCERT(3)
Issuer certificate memory buffer. See CURLOPT_ISSUERCERT_BLOB(3)
Keep sending on HTTP >= 300 errors. CURLOPT_KEEP_SENDING_ON_ERROR(3)
Client key password. See CURLOPT_KEYPASSWD(3)
Kerberos security level. See CURLOPT_KRBLEVEL(3)
Bind connection locally to this port. See CURLOPT_LOCALPORT(3)
Bind connection locally to port range. See CURLOPT_LOCALPORTRANGE(3)
Login options. See CURLOPT_LOGIN_OPTIONS(3)
Low speed limit to abort transfer. See CURLOPT_LOW_SPEED_LIMIT(3)
Time to be below the speed to trigger low speed abort. See CURLOPT_LOW_SPEED_TIME(3)
Authentication address. See CURLOPT_MAIL_AUTH(3)
Address of the sender. See CURLOPT_MAIL_FROM(3)
Address of the recipients. See CURLOPT_MAIL_RCPT(3)
Allow RCPT TO command to fail for some recipients. See CURLOPT_MAIL_RCPT_ALLOWFAILS(3)
Limit the age (idle time) of connections for reuse. See CURLOPT_MAXAGE_CONN(3)
Maximum number of connections in the connection pool. See CURLOPT_MAXCONNECTS(3)
Maximum file size to get. See CURLOPT_MAXFILESIZE(3)
Maximum file size to get. See CURLOPT_MAXFILESIZE_LARGE(3)
Limit the age (since creation) of connections for reuse. See CURLOPT_MAXLIFETIME_CONN(3)
Maximum number of redirects to follow. See CURLOPT_MAXREDIRS(3)
Cap the download speed to this. See CURLOPT_MAX_RECV_SPEED_LARGE(3)
Cap the upload speed to this. See CURLOPT_MAX_SEND_SPEED_LARGE(3)
Post/send MIME data. See CURLOPT_MIMEPOST(3)
Set MIME option flags. See CURLOPT_MIME_OPTIONS(3)
Enable .netrc parsing. See CURLOPT_NETRC(3)
.netrc filename. See CURLOPT_NETRC_FILE(3)
Mode for creating new remote directories. See CURLOPT_NEW_DIRECTORY_PERMS(3)
Mode for creating new remote files. See CURLOPT_NEW_FILE_PERMS(3)
Do not get the body contents. See CURLOPT_NOBODY(3)
Shut off the progress meter. See CURLOPT_NOPROGRESS(3)
Filter out hosts from proxy use. CURLOPT_NOPROXY(3)
Do not install signal handlers. See CURLOPT_NOSIGNAL(3)
Data pointer to pass to the open socket callback. See CURLOPT_OPENSOCKETDATA(3)
Callback for socket creation. See CURLOPT_OPENSOCKETFUNCTION(3)
Password. See CURLOPT_PASSWORD(3)
Disable squashing /../ and /./ sequences in the path. See CURLOPT_PATH_AS_IS(3)
Set pinned SSL public key . See CURLOPT_PINNEDPUBLICKEY(3)
Wait on connection to pipeline on it. See CURLOPT_PIPEWAIT(3)
Port number to connect to. See CURLOPT_PORT(3)
Make an HTTP POST. See CURLOPT_POST(3)
The POST data is this big. See CURLOPT_POSTFIELDSIZE(3)
The POST data is this big. See CURLOPT_POSTFIELDSIZE_LARGE(3)
Commands to run after transfer. See CURLOPT_POSTQUOTE(3)
How to act on redirects after POST. See CURLOPT_POSTREDIR(3)
Commands to run just before transfer. See CURLOPT_PREQUOTE(3)
Data pointer to pass to the CURLOPT_PREREQFUNCTION callback. See CURLOPT_PREREQDATA(3)
Callback to be called after a connection is established but before a request is made on that connection. See CURLOPT_PREREQFUNCTION(3)
Socks proxy to use. See CURLOPT_PRE_PROXY(3)
Private pointer to store. See CURLOPT_PRIVATE(3)
Data pointer to pass to the progress meter callback. See CURLOPT_PROGRESSDATA(3)
OBSOLETE callback for progress meter. See CURLOPT_PROGRESSFUNCTION(3)
Deprecated option Allowed protocols. See CURLOPT_PROTOCOLS(3)
Allowed protocols. See CURLOPT_PROTOCOLS_STR(3)
Proxy to use. See CURLOPT_PROXY(3)
HTTP proxy authentication methods. See CURLOPT_PROXYAUTH(3)
Custom HTTP headers sent to proxy. See CURLOPT_PROXYHEADER(3)
Proxy password. See CURLOPT_PROXYPASSWORD(3)
Proxy port to use. See CURLOPT_PROXYPORT(3)
Proxy type. See CURLOPT_PROXYTYPE(3)
Proxy username. See CURLOPT_PROXYUSERNAME(3)
Proxy username and password. See CURLOPT_PROXYUSERPWD(3)
Proxy CA cert bundle. See CURLOPT_PROXY_CAINFO(3)
Proxy CA cert bundle memory buffer. See CURLOPT_PROXY_CAINFO_BLOB(3)
Path to proxy CA cert bundle. See CURLOPT_PROXY_CAPATH(3)
Proxy Certificate Revocation List. See CURLOPT_PROXY_CRLFILE(3)
Proxy issuer certificate. See CURLOPT_PROXY_ISSUERCERT(3)
Proxy issuer certificate memory buffer. See CURLOPT_PROXY_ISSUERCERT_BLOB(3)
Proxy client key password. See CURLOPT_PROXY_KEYPASSWD(3)
Set the proxy's pinned SSL public key. See CURLOPT_PROXY_PINNEDPUBLICKEY(3)
Proxy authentication service name. CURLOPT_PROXY_SERVICE_NAME(3)
Proxy client cert. See CURLOPT_PROXY_SSLCERT(3)
Proxy client cert type. See CURLOPT_PROXY_SSLCERTTYPE(3)
Proxy client cert memory buffer. See CURLOPT_PROXY_SSLCERT_BLOB(3)
Proxy client key. See CURLOPT_PROXY_SSLKEY(3)
Proxy client key type. See CURLOPT_PROXY_SSLKEYTYPE(3)
Proxy client key. See CURLOPT_PROXY_SSLKEY_BLOB(3)
Proxy SSL version to use. See CURLOPT_PROXY_SSLVERSION(3)
Proxy ciphers to use. See CURLOPT_PROXY_SSL_CIPHER_LIST(3)
Control proxy SSL behavior. See CURLOPT_PROXY_SSL_OPTIONS(3)
Verify the hostname in the proxy SSL certificate. See CURLOPT_PROXY_SSL_VERIFYHOST(3)
Verify the proxy SSL certificate. See CURLOPT_PROXY_SSL_VERIFYPEER(3)
Proxy TLS 1.3 cipher suites to use. See CURLOPT_PROXY_TLS13_CIPHERS(3)
Proxy TLS authentication password. See CURLOPT_PROXY_TLSAUTH_PASSWORD(3)
Proxy TLS authentication methods. See CURLOPT_PROXY_TLSAUTH_TYPE(3)
Proxy TLS authentication username. See CURLOPT_PROXY_TLSAUTH_USERNAME(3)
Add transfer mode to URL over proxy. See CURLOPT_PROXY_TRANSFER_MODE(3)
Deprecated option Issue an HTTP PUT request. See CURLOPT_PUT(3)
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)
Commands to run before transfer. See CURLOPT_QUOTE(3)
OBSOLETE Provide source for entropy random data. See CURLOPT_RANDOM_FILE(3)
Range requests. See CURLOPT_RANGE(3)
Data pointer to pass to the read callback. See CURLOPT_READDATA(3)
Callback for reading data. See CURLOPT_READFUNCTION(3)
Deprecated option Protocols to allow redirects to. See CURLOPT_REDIR_PROTOCOLS(3)
Protocols to allow redirects to. See CURLOPT_REDIR_PROTOCOLS_STR(3)
Referer: header. See CURLOPT_REFERER(3)
Set the request target. CURLOPT_REQUEST_TARGET(3)
Provide fixed/fake name resolves. See CURLOPT_RESOLVE(3)
Data pointer to pass to resolver start callback. See CURLOPT_RESOLVER_START_DATA(3)
Callback to be called before a new resolve request is started. See CURLOPT_RESOLVER_START_FUNCTION(3)
Resume a transfer. See CURLOPT_RESUME_FROM(3)
Resume a transfer. See CURLOPT_RESUME_FROM_LARGE(3)
Client CSEQ number. See CURLOPT_RTSP_CLIENT_CSEQ(3)
RTSP request. See CURLOPT_RTSP_REQUEST(3)
CSEQ number for RTSP Server->Client request. See CURLOPT_RTSP_SERVER_CSEQ(3)
RTSP session-id. See CURLOPT_RTSP_SESSION_ID(3)
RTSP stream URI. See CURLOPT_RTSP_STREAM_URI(3)
RTSP Transport: header. See CURLOPT_RTSP_TRANSPORT(3)
SASL authorization identity (identity to act as). See CURLOPT_SASL_AUTHZID(3)
Enable SASL initial response. See CURLOPT_SASL_IR(3)
Data pointer to pass to the seek callback. See CURLOPT_SEEKDATA(3)
Callback for seek operations. See CURLOPT_SEEKFUNCTION(3)
Timeout for server responses. See CURLOPT_SERVER_RESPONSE_TIMEOUT(3)
Timeout for server responses. See CURLOPT_SERVER_RESPONSE_TIMEOUT_MS(3)
Authentication service name. CURLOPT_SERVICE_NAME(3)
Share object to use. See CURLOPT_SHARE(3)
Data pointer to pass to the sockopt callback. See CURLOPT_SOCKOPTDATA(3)
Callback for sockopt operations. See CURLOPT_SOCKOPTFUNCTION(3)
Socks5 authentication methods. See CURLOPT_SOCKS5_AUTH(3)
Socks5 GSSAPI NEC mode. See CURLOPT_SOCKS5_GSSAPI_NEC(3)
Deprecated option Socks5 GSSAPI service name. See CURLOPT_SOCKS5_GSSAPI_SERVICE(3)
SSH authentication types. See CURLOPT_SSH_AUTH_TYPES(3)
Enable SSH compression. See CURLOPT_SSH_COMPRESSION(3)
Custom pointer to pass to ssh host key callback. See CURLOPT_SSH_HOSTKEYDATA(3)
Callback for checking host key handling. See CURLOPT_SSH_HOSTKEYFUNCTION(3)
MD5 of host's public key. See CURLOPT_SSH_HOST_PUBLIC_KEY_MD5(3)
SHA256 of host's public key. See CURLOPT_SSH_HOST_PUBLIC_KEY_SHA256(3)
Custom pointer to pass to ssh key callback. See CURLOPT_SSH_KEYDATA(3)
Callback for known hosts handling. See CURLOPT_SSH_KEYFUNCTION(3)
Filename with known hosts. See CURLOPT_SSH_KNOWNHOSTS(3)
Filename of the private key. See CURLOPT_SSH_PRIVATE_KEYFILE(3)
Filename of the public key. See CURLOPT_SSH_PUBLIC_KEYFILE(3)
Client cert. See CURLOPT_SSLCERT(3)
Client cert type. See CURLOPT_SSLCERTTYPE(3)
Client cert memory buffer. See CURLOPT_SSLCERT_BLOB(3)
Use identifier with SSL engine. See CURLOPT_SSLENGINE(3)
Default SSL engine. See CURLOPT_SSLENGINE_DEFAULT(3)
Client key. See CURLOPT_SSLKEY(3)
Client key type. See CURLOPT_SSLKEYTYPE(3)
Client key memory buffer. See CURLOPT_SSLKEY_BLOB(3)
SSL version to use. See CURLOPT_SSLVERSION(3)
Ciphers to use. See CURLOPT_SSL_CIPHER_LIST(3)
Data pointer to pass to the SSL context callback. See CURLOPT_SSL_CTX_DATA(3)
Callback for SSL context logic. See CURLOPT_SSL_CTX_FUNCTION(3)
Set key exchange curves. See CURLOPT_SSL_EC_CURVES(3)
Enable use of ALPN. See CURLOPT_SSL_ENABLE_ALPN(3)
OBSOLETE Enable use of NPN. See CURLOPT_SSL_ENABLE_NPN(3)
Enable TLS False Start. See CURLOPT_SSL_FALSESTART(3)
Control SSL behavior. See CURLOPT_SSL_OPTIONS(3)
Disable SSL session-id cache. See CURLOPT_SSL_SESSIONID_CACHE(3)
Verify the hostname in the SSL certificate. See CURLOPT_SSL_VERIFYHOST(3)
Verify the SSL certificate. See CURLOPT_SSL_VERIFYPEER(3)
Verify the SSL certificate's status. See CURLOPT_SSL_VERIFYSTATUS(3)
Redirect stderr to another stream. See CURLOPT_STDERR(3)
This HTTP/2 stream depends on another. See CURLOPT_STREAM_DEPENDS(3)
This HTTP/2 stream depends on another exclusively. See CURLOPT_STREAM_DEPENDS_E(3)
Set this HTTP/2 stream's weight. See CURLOPT_STREAM_WEIGHT(3)
Suppress proxy CONNECT response headers from user callbacks. See CURLOPT_SUPPRESS_CONNECT_HEADERS(3)
Enable TCP Fast Open. See CURLOPT_TCP_FASTOPEN(3)
Enable TCP keep-alive. See CURLOPT_TCP_KEEPALIVE(3)
Maximum number of keep-alive probes. See CURLOPT_TCP_KEEPCNT(3)
Idle time before sending keep-alive. See CURLOPT_TCP_KEEPIDLE(3)
Interval between keep-alive probes. See CURLOPT_TCP_KEEPINTVL(3)
Disable the Nagle algorithm. See CURLOPT_TCP_NODELAY(3)
TELNET options. See CURLOPT_TELNETOPTIONS(3)
TFTP block size. See CURLOPT_TFTP_BLKSIZE(3)
Do not send TFTP options requests. See CURLOPT_TFTP_NO_OPTIONS(3)
Make a time conditional request. See CURLOPT_TIMECONDITION(3)
Timeout for the entire request. See CURLOPT_TIMEOUT(3)
Millisecond timeout for the entire request. See CURLOPT_TIMEOUT_MS(3)
Time value for the time conditional request. See CURLOPT_TIMEVALUE(3)
Time value for the time conditional request. See CURLOPT_TIMEVALUE_LARGE(3)
TLS 1.3 cipher suites to use. See CURLOPT_TLS13_CIPHERS(3)
TLS authentication password. See CURLOPT_TLSAUTH_PASSWORD(3)
TLS authentication methods. See CURLOPT_TLSAUTH_TYPE(3)
TLS authentication username. See CURLOPT_TLSAUTH_USERNAME(3)
Custom pointer passed to the trailing headers callback. See CURLOPT_TRAILERDATA(3)
Set callback for sending trailing headers. See CURLOPT_TRAILERFUNCTION(3)
Use text transfer. See CURLOPT_TRANSFERTEXT(3)
Request Transfer-Encoding. See CURLOPT_TRANSFER_ENCODING(3)
Path to a Unix domain socket. See CURLOPT_UNIX_SOCKET_PATH(3)
Do not restrict authentication to original host. CURLOPT_UNRESTRICTED_AUTH(3)
Sets the interval at which connection upkeep are performed. See CURLOPT_UPKEEP_INTERVAL_MS(3)
Upload data. See CURLOPT_UPLOAD(3)
Set upload buffer size. See CURLOPT_UPLOAD_BUFFERSIZE(3)
URL to work on. See CURLOPT_URL(3)
User-Agent: header. See CURLOPT_USERAGENT(3)
Username. See CURLOPT_USERNAME(3)
Username and password. See CURLOPT_USERPWD(3)
Use TLS/SSL. See CURLOPT_USE_SSL(3)
Display verbose information. See CURLOPT_VERBOSE(3)
Transfer multiple files according to a filename pattern. See CURLOPT_WILDCARDMATCH(3)
Data pointer to pass to the write callback. See CURLOPT_WRITEDATA(3)
Callback for writing data. See CURLOPT_WRITEFUNCTION(3)
Set WebSocket options. See CURLOPT_WS_OPTIONS(3)
Data pointer to pass to the progress meter callback. See CURLOPT_XFERINFODATA(3)
Callback for progress meter. See CURLOPT_XFERINFOFUNCTION(3)
OAuth2 bearer token. See CURLOPT_XOAUTH2_BEARER(3)

This functionality affects all supported protocols

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);
  }
}

Added in curl 7.1

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) man page for the full list with descriptions.

Strings passed on to libcurl must be shorter than 8000000 bytes, otherwise curl_easy_setopt(3) 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.

curl_easy_cleanup(3), curl_easy_getinfo(3), curl_easy_init(3), curl_easy_option_by_id(3), curl_easy_option_by_name(3), curl_easy_option_next(3), curl_easy_reset(3), curl_multi_setopt(3)

2024-09-18 libcurl