Код ошибки CURL |
Название ошибки |
Описание |
0 |
CURLE_OK |
Curl работает без ошибки |
1 |
CURLE_UNSUPPORTED_PROTOCOL |
Протокол, который вы передали в url не поддерживается, по каким-либо причинам (может быть не актуальная версия curl или не верно определён PATH) |
2 |
CURLE_FAILED_INIT |
Проблема с инициализацией кода, которая может быть связанна с не установкой необходимых пакетов. |
3 |
CURLE_URL_MALFORMAT |
Неверно передан URL. Необходимо проверить url, который вы передаёте libcurl |
4 |
CURLE_NOT_BUILT_IN |
Функция, протокол или параметры, которые вы вызываете не включены в библиотеку CURL. |
5 |
CURLE_COULDNT_RESOLVE_PROXY |
Не возможна работа с Proxy. Быстрее всего он просто не правильно настроен. Вам необходимо обратиться к системному администратору. |
6 |
CURLE_COULDNT_RESOLVE_HOST |
К удалённому хосту доступ не разрешен. Необходимо настроить этот доступ. Не забудьте добавить хост в DNS. |
7 |
CURLE_COULDNT_CONNECT |
Не удалось подключиться к хосту или прокси серверу. Проверьте не блокирует ли брандмауэр. |
8 |
CURLE_FTP_WEIRD_SERVER_REPLY (CURLE_WEIRD_SERVER_REPLY) |
CURL не смог разобрать ваш отправленный URL |
9 |
CURLE_REMOTE_ACCESS_DENIED |
Отказ в доступе к удалённому каталогу. Это может быть связанно с тем, что происходит проверка сертификата. |
18 |
CURLE_PARTIAL_FILE |
Размер передаваемого файла и полученного не совпадают. Проверьте если существует стабильное соединение. Выполните telnet или ping и проанализируйте. |
22 |
CURLE_HTTP_RETURNED_ERROR |
Эта ошибка появляется тогда, когда параметр CURLOPT_FAILONERROR установлен в значение TRUE, а HTTP-сервер возвращает код ошибки > = 400 |
23 |
CURLE_WRITE_ERROR |
Ошибка при записи полученных данных в файл. |
26 |
CURLE_READ_ERROR |
Ошибка при чтении файла или появляется при обратном вызове чтения. Это может быть связанно с ошибками в локальном диске, повреждении файла. |
27 |
CURLE_OUT_OF_MEMORY |
Ошибка, которая появляется, когда требует для своей работы больше памяти |
28 |
CURLE_OPERATION_TIMEDOUT |
Time-out выполнения операции. При отправлении запроса CURL есть параметр CURLOPT_TIMEOUT
|
33 |
CURLE_RANGE_ERROR |
Сервер, на который вы отсылаете запрос не поддерживает такие запросы |
34 |
CURLE_HTTP_POST_ERROR |
Ошибка при отправке CURL методом post, если не правильно переданы параметры или запрос построен не верно. |
35 |
CURLE_SSL_CONNECT_ERROR |
Ошибка произошла на уровне SSL / TLS приветствия. Это может быть связано с авторизацией или другими видами проверки |
41 |
CURLE_FUNCTION_NOT_FOUND |
Функция CURL, которую вы пытаетесь вызвать, не найдена. Проверьте пакеты и зависимости, если они правильно установлены. |
42 |
CURLE_ABORTED_BY_CALLBACK |
Ошибка появляется когда обратный вызов вернул “abort” |
43 |
CURLE_BAD_FUNCTION_ARGUMENT |
Ошибка появляется когда вызываемая функция имеет неверные аргументы |
45 |
CURLE_INTERFACE_FAILED |
Ошибка интерфейса. Необходимо указать, какой интерфейс использовать для исходного IP-адреса исходящих соединений с помощью CURLOPT_INTERFACE. |
47 |
CURLE_TOO_MANY_REDIRECTS |
Эта ошибка возникает когда количество перенаправлений превышает установленный лимит в CURLOPT_MAXREDIRS |
48 |
CURLE_UNKNOWN_OPTION |
Опция, которую вы пытаетесь использовать неопределенна |
52 |
CURLE_GOT_NOTHING |
С сервера ничего не вернулось, что является также ошибкой |
53 |
CURLE_SSL_ENGINE_NOTFOUND |
Ошибка, в результате не нахождения SSL кодировщика |
54 |
CURLE_SSL_ENGINE_SETFAILED |
Не удалось установить SSL шифрование |
55 |
CURLE_SEND_ERROR |
Ошибка при отправке CURL запроса |
56 |
CURLE_RECV_ERROR |
Ошибка, возникает при сбое получения данных по сети |
58 |
CURLE_SSL_CERTPROBLEM |
Проблема с локальным сертификатом |
59 |
CURLE_SSL_CIPHER |
Ошибка, при использовании указанного шифра |
60 |
CURLE_SSL_CACERT |
Одноранговый сертификат не может быть аутентифицирован с помощью известных сертификатов CA |
61 |
CURLE_BAD_CONTENT_ENCODING |
При передаче данных кодировка не распознана. |
62 |
CURLE_LDAP_INVALID_URL |
Неверный URL LDAP |
63 |
CURLE_FILESIZE_EXCEEDED |
Ошибка, возникающая при превышении максимального размера файла |
64 |
CURLE_USE_SSL_FAILED |
Ошибка при использовании SSL сертификата |
65 |
CURLE_SEND_FAIL_REWIND |
При отправке данных необходимо было выбрать данные для повторной передачи, но произошла ошибка |
66 |
CURLE_SSL_ENGINE_INITFAILED |
При инициализации SSL произошла ошибка |
67 |
CURLE_LOGIN_DENIED |
Вход в систему на удалённый сервер |
68 |
CURLE_TFTP_NOTFOUND |
Не найден файл на TFTP сервере |
69 |
CURLE_TFTP_PERM |
Проблемы с правами на TFTP сервере |
30 |
CURLE_REMOTE_DISK_FULL |
Ошибка, связанная с тем, что дисковое пространство закончилось |
71 |
CURLE_TFTP_ILLEGAL |
Недопустимая операция TFTP |
72 |
CURLE_TFTP_UNKNOWNID |
Неизвестный идентификатор передачи TFTP |
73 |
CURLE_REMOTE_FILE_EXISTS |
Файл не может быть перезаписан, так как уже перезаписан |
74 |
CURLE_TFTP_NOSUCHUSER |
Эта ошибка никогда не должна возвращаться правильно работающим TFTP-сервером. |
75 |
CURLE_CONV_FAILED |
В результате преобразования символом произошла ошибка |
76 |
CURLE_CONV_REQD |
При регистрации обратного вызова произошла ошибка |
77 |
CURLE_SSL_CACERT_BADFILE |
Проблема с чтением сертификата SSL CA |
78 |
CURLE_REMOTE_FILE_NOT_FOUND |
Запрашиваемый ресурс на удалённом сервере не найден |
79 |
CURLE_SSH |
Во время сеанса SSH произошла неопределенная ошибка. |
80 |
CURLE_SSL_SHUTDOWN_FAILED |
Ошибка при неудачном завершении соединения SSL |
81 |
CURLE_AGAIN |
Этот код возврата появляется только из curl_easy_recv и curl_easy_send |
82 |
CURLE_SSL_CRL_BADFILE |
Не удалось загрузить файл CRL |
83 |
CURLE_SSL_ISSUER_ERROR |
Определенный код ошибки (CURLE_SSL_ISSUER_ERROR) определяется с параметром, который возвращается, если настройка сеанса SSL / TLS |
84 |
CURLE_FTP_PRET_FAILED |
Сервер FTP не понимает команду PRET или не поддерживает данный аргумент |
85 |
CURLE_RTSP_CSEQ_ERROR |
Несоответствие чисел RTSP CSeq |
86 |
CURLE_RTSP_SESSION_ERROR |
Несоответствие идентификаторов сеансов RTSP |
87 |
CURLE_FTP_BAD_FILE_LIST |
Невозможно проанализировать список файлов FTP (во время загрузки по шаблону FTP). |
88 |
CURLE_CHUNK_FAILED |
Чанк обратного вызова сообщил об ошибке |
89 |
CURLE_NO_CONNECTION_AVAILABLE |
Нет доступного соединения, сеанс будет поставлен в очередь. |
90 |
CURLE_SSL_PINNEDPUBKEYNOTMATCH |
Не удалось сопоставить закрепленный ключ, указанный в CURLOPT_PINNEDPUBLICKEY |
91 |
CURLE_SSL_INVALIDCERTSTATUS |
Статус вернул ошибку при запросе с CURLOPT_SSL_VERIFYSTATUS |
92 |
CURLE_HTTP2_STREAM |
Ошибка потока в слое кадрирования HTTP / 2 |
Below is the list of most common error codes and its meaning in cURL.
cURL Error Code | cURLcode | Description |
---|---|---|
0 | CURLE_OK | All fine. Proceed as usual. |
1 | CURLE_UNSUPPORTED_PROTOCOL | The URL you passed to libcurl used a protocol that this libcurl does not support. |
2 | CURLE_FAILED_INIT | Early initialization code failed. |
3 | CURLE_URL_MALFORMAT | The URL was not properly formatted. |
4 | CURLE_NOT_BUILT_IN | A requested feature, protocol, or option was not found built-in in this libcurl due to a build-time decision. |
5 | CURLE_COULDNT_RESOLVE_PROXY | Could not resolve the proxy host. |
6 | CURLE_COULDNT_RESOLVE_HOST | Could not resolve the host. |
7 | CURLE_COULDNT_CONNECT | Failed to connect to host or proxy. |
8 | CURLE_WEIRD_SERVER_REPLY | The server sent data libcurl could not parse. |
9 | CURLE_REMOTE_ACCESS_DENIED | We were denied access to the resource given in the URL. |
10 | CURLE_FTP_ACCEPT_FAILED | While waiting for the server to connect back when an active FTP session is used, an error code was sent over the control connection or similar. |
11 | CURLE_FTP_WEIRD_PASS_REPLY | After having sent the FTP password to the server, libcurl expects a proper reply. This error code indicates that an unexpected code was returned. |
12 | CURLE_FTP_ACCEPT_TIMEOUT | During an active FTP session while waiting for the server to connect, the CURLOPT_ACCEPTTIMEOUT_MS (or the internal default) timeout expired. |
13 | CURLE_FTP_WEIRD_PASV_REPLY | libcurl failed to get a sensible result back from the server as a response to either a PASV or a EPSV command. The server is flawed. |
14 | CURLE_FTP_WEIRD_227_FORMAT | FTP servers return a 227-line as a response to a PASV command. If libcurl fails to parse that line, this return code is passed back. |
15 | CURLE_FTP_CANT_GET_HOST | An internal failure to lookup the host used for the new connection. |
16 | CURLE_HTTP2 | A problem was detected in the HTTP2 framing layer. |
17 | CURLE_FTP_COULDNT_SET_TYPE | Received an error when trying to set the transfer mode to binary or ASCII. |
18 | CURLE_PARTIAL_FILE | A file transfer was shorter or larger than expected. |
19 | CURLE_FTP_COULDNT_RETR_FILE | This was either a weird reply to a ‘RETR’ command or a zero byte transfer complete. |
21 | CURLE_QUOTE_ERROR | When sending custom «QUOTE» commands to the remote server, one of the commands returned an error code that was 400 or higher (for FTP) or otherwise indicated unsuccessful completion of the command. |
22 | CURLE_HTTP_RETURNED_ERROR | This is returned if CURLOPT_FAILONERROR is set TRUE and the HTTP server returns an error code that is >= 400. |
23 | CURLE_WRITE_ERROR | An error occurred when writing received data to a local file, or an error was returned to libcurl from a write callback. |
25 | CURLE_UPLOAD_FAILED | Failed starting the upload. For FTP, the server typically denied the STOR command. The error buffer usually contains the server’s explanation for this. |
26 | CURLE_READ_ERROR | There was a problem reading a local file or an error returned by the read callback. |
27 | CURLE_OUT_OF_MEMORY | A memory allocation request failed. |
28 | CURLE_OPERATION_TIMEDOUT | Operation timeout. The specified time-out period was reached according to the conditions. |
30 | CURLE_FTP_PORT_FAILED | The FTP PORT command returned an error. |
31 | CURLE_FTP_COULDNT_USE_REST | The FTP REST command returned an error. |
33 | CURLE_RANGE_ERROR | The server does not support or accept range requests. |
34 | CURLE_HTTP_POST_ERROR | An odd error that mainly occurs due to internal confusion. |
35 | CURLE_SSL_CONNECT_ERROR | A problem occurred somewhere in the SSL/TLS handshake. |
36 | CURLE_BAD_DOWNLOAD_RESUME | The download could not be resumed because the specified offset was out of the file boundary. |
37 | CURLE_FILE_COULDNT_READ_FILE | A file given with FILE:// could not be opened. |
38 | CURLE_LDAP_CANNOT_BIND | LDAP cannot bind. LDAP bind operation failed. |
39 | CURLE_LDAP_SEARCH_FAILED | LDAP search failed. |
41 | CURLE_FUNCTION_NOT_FOUND | Function not found. A required zlib function was not found. |
42 | CURLE_ABORTED_BY_CALLBACK | Aborted by callback. A callback returned «abort» to libcurl. |
43 | CURLE_BAD_FUNCTION_ARGUMENT | A function was called with a bad parameter. |
45 | CURLE_INTERFACE_FAILED | Interface error. A specified outgoing interface could not be used. |
47 | CURLE_TOO_MANY_REDIRECTS | Too many redirects. When following redirects, libcurl hit the maximum amount. |
48 | CURLE_UNKNOWN_OPTION | An option passed to libcurl is not recognized/known. |
49 | CURLE_SETOPT_OPTION_SYNTAX | An option passed in to a setopt was wrongly formatted. |
50-51 | Obsolete errors | Not used in modern versions. |
52 | CURLE_GOT_NOTHING | Nothing was returned from the server, and getting nothing is considered an error. |
53 | CURLE_SSL_ENGINE_NOTFOUND | The specified crypto engine was not found. |
54 | CURLE_SSL_ENGINE_SETFAILED | Failed setting the selected SSL crypto engine as default. |
55 | CURLE_SEND_ERROR | Failed sending network data. |
56 | CURLE_RECV_ERROR | Failure with receiving network data. |
57 | Obsolete error | Not used in modern versions. |
58 | CURLE_SSL_CERTPROBLEM | Problem with the local client certificate. |
59 | CURLE_SSL_CIPHER | Could not use the specified cipher. |
60 | CURLE_PEER_FAILED_VERIFICATION | The remote server’s SSL certificate or SSH fingerprint was deemed not OK. |
61 | CURLE_BAD_CONTENT_ENCODING | Unrecognized transfer encoding. |
62 | Obsolete error | Not used in modern versions. |
63 | CURLE_FILESIZE_EXCEEDED | Maximum file size exceeded. |
64 | CURLE_USE_SSL_FAILED | Requested FTP SSL level failed. |
65 | CURLE_SEND_FAIL_REWIND | When doing a send operation, curl had to rewind the data to retransmit, but the rewinding operation failed. |
66 | CURLE_SSL_ENGINE_INITFAILED | Initiating the SSL Engine failed. |
67 | CURLE_LOGIN_DENIED | The remote server denied curl to login (Added in 7.13.1). |
68 | CURLE_TFTP_NOTFOUND | File not found on TFTP server. |
69 | CURLE_TFTP_PERM | Permission problem on TFTP server. |
70 | CURLE_REMOTE_DISK_FULL | Out of disk space on the server. |
71 | CURLE_TFTP_ILLEGAL | Illegal TFTP operation. |
72 | CURLE_TFTP_UNKNOWNID | Unknown TFTP transfer ID. |
73 | CURLE_REMOTE_FILE_EXISTS | File already exists and will not be overwritten. |
74 | CURLE_TFTP_NOSUCHUSER | This error should never be returned by a properly functioning TFTP server. |
75-76 | Obsolete errors | Not used in modern versions. |
77 | CURLE_SSL_CACERT_BADFILE | Problem with reading the SSL CA cert (path? access rights?) |
78 | CURLE_REMOTE_FILE_NOT_FOUND | The resource referenced in the URL does not exist. |
79 | CURLE_SSH | An unspecified error occurred during the SSH session. |
80 | CURLE_SSL_SHUTDOWN_FAILED | Failed to shut down the SSL connection. |
81 | CURLE_AGAIN | Socket is not ready for send/recv; wait till it’s ready and try again. (Added in 7.18.2) |
82 | CURLE_SSL_CRL_BADFILE | Failed to load CRL file (Added in 7.19.0) |
83 | CURLE_SSL_ISSUER_ERROR | Issuer check failed (Added in 7.19.0) |
84 | CURLE_FTP_PRET_FAILED | The FTP server does not understand the PRET command at all or does not support the given argument. Be careful when using CURLOPT_CUSTOMREQUEST; a custom LIST command will be sent with the PRET command before PASV as well. (Added in 7.20.0) |
85 | CURLE_RTSP_CSEQ_ERROR | Mismatch of RTSP CSeq numbers. |
86 | CURLE_RTSP_SESSION_ERROR | Mismatch of RTSP Session Identifiers. |
87 | CURLE_FTP_BAD_FILE_LIST | Unable to parse FTP file list (during FTP wildcard downloading). |
88 | CURLE_CHUNK_FAILED | Chunk callback reported an error. |
89 | CURLE_NO_CONNECTION_AVAILABLE | (For internal use only, will never be returned by libcurl) No connection available, the session will be queued. (Added in 7.30.0) |
90 | CURLE_SSL_PINNEDPUBKEYNOTMATCH | Failed to match the pinned key specified with CURLOPT_PINNEDPUBLICKEY. |
91 | CURLE_SSL_INVALIDCERTSTATUS | Status returned failure when asked with CURLOPT_SSL_VERIFYSTATUS. |
92 | CURLE_HTTP2_STREAM | Stream error in the HTTP/2 framing layer. |
93 | CURLE_RECURSIVE_API_CALL | An API function was called from inside a callback. |
94 | CURLE_AUTH_ERROR | An authentication function returned an error. |
95 | CURLE_HTTP3 | A problem was detected in the HTTP/3 layer. This is somewhat generic and can be one out of several problems; see the error buffer for details. |
96 | CURLE_QUIC_CONNECT_ERROR | QUIC connection error. This error may be caused by an SSL library error. QUIC is the protocol used for HTTP/3 transfers. |
97 | CURLE_PROXY | Proxy handshake error. CURLINFO_PROXY_ERROR provides extra details on the specific problem. |
98 | CURLE_SSL_CLIENTCERT | SSL Client Certificate required. |
99 | CURLE_UNRECOVERABLE_POLL | An internal call to poll() or select() returned an error that is not recoverable. |
Reference: https://curl.se/libcurl/c/libcurl-errors.html
—
Facing issues? Have Questions? Post them here! I am happy to answer!
-
1.
Unsupported protocol. This build of curl has no support for this protocol. Usually this happens because the URL was misspelled to use a scheme part that either has a space in front of it or spells
http
likehtpt
or similar. Another common mistake is that you use a libcurl installation that was built with one or more protocols disabled and you now ask libcurl to use one of those protocols that were disabled in the build. -
2.
Failed to initialize. This is mostly an internal error or a problem with the libcurl installation or system libcurl runs in.
-
3.
URL malformed. The syntax was not correct. This happens when you mistype a URL so that it ends up wrong, or in rare situations you are using a URL that is accepted by another tool that curl does not support only because there is no universal URL standard that everyone adheres to.
-
4.
A feature or option that was needed to perform the desired request was not enabled or was explicitly disabled at build-time. To make curl able to do this, you probably need another build of libcurl.
-
5.
Couldn’t resolve proxy. The address of the given proxy host could not be resolved. Either the given proxy name is just wrong, or the DNS server is misbehaving and does not know about this name when it should or perhaps even the system you run curl on is misconfigured so that it does not find/use the correct DNS server.
-
6.
Couldn’t resolve host. The given remote host’s address was not resolved. The address of the given server could not be resolved. Either the given host name is just wrong, or the DNS server is misbehaving and does not know about this name when it should or perhaps even the system you run curl on is misconfigured so that it does not find/use the correct DNS server.
-
7.
Failed to connect to host. curl managed to get an IP address to the machine and it tried to setup a TCP connection to the host but failed. This can be because you have specified the wrong port number, entered the wrong host name, the wrong protocol or perhaps because there is a firewall or another network equipment in between that blocks the traffic from getting through.
-
8.
Unknown FTP server response. The server sent data curl could not parse. This is either because of a bug in curl, a bug in the server or because the server is using an FTP protocol extension that curl does not support. The only real work-around for this is to tweak curl options to try it to use other FTP commands that perhaps will not get this unknown server response back.
-
9.
FTP access denied. The server denied login or denied access to the particular resource or directory you wanted to reach. Most often you tried to change to a directory that does not exist on the server. The directory of course is what you specify in the URL.
-
10.
FTP accept failed. While waiting for the server to connect back when an active FTP session is used, an error code was sent over the control connection or similar.
-
11.
FTP weird PASS reply. Curl could not parse the reply sent to the PASS request. PASS in the command curl sends the password to the server with, and even anonymous connections to FTP server actually sends a password — a fixed anonymous string. Getting a response back from this command that curl does not understand is a strong indication that this is not an FTP server at all or that the server is badly broken.
-
12.
During an active FTP session (PORT is used) while waiting for the server to connect, the timeout expired. It took too long for the server to get back. This is usually a sign that something is preventing the server from reaching curl successfully. Like a firewall or other network arrangements. .
-
13.
Unknown response to FTP PASV command, Curl could not parse the reply sent to the PASV request. This is a strange server. PASV is used to setup the second data transfer connection in passive mode, see the
FTP uses two connections
section for more on that. You might be able to work-around this problem by using PORT instead, with the
--ftp-port
option. -
14.
Unknown FTP 227 format. Curl could not parse the 227-line the server sent. This is most certainly a broken server. A 227 is the FTP server’s response when sending back information on how curl should connect back to it in passive mode. You might be able to work-around this problem by using PORT instead, with the
--ftp-port
option. -
15.
FTP cannot get host. Couldn’t use the host IP address we got in the 227-line. This is most likely an internal error.
-
16.
HTTP/2 error. A problem was detected in the HTTP2 framing layer. This is somewhat generic and can be one out of several problems, see the error message for details.
-
17.
FTP could not set binary. Couldn’t change transfer method to binary. This server is broken. curl needs to set the transfer to the correct mode before it is started as otherwise the transfer cannot work.
-
18.
Partial file. Only a part of the file was transferred. When the transfer is considered complete, curl will verify that it actually received the same amount of data that it was told before-hand that it was going to get. If the two numbers do not match, this is the error code. It could mean that curl got fewer bytes than advertised or that it got more. curl itself cannot know which number that is wrong or which is correct. If any.
-
19.
FTP could not download/access the given file. The RETR (or similar) command failed. curl got an error from the server when trying to download the file.
-
21.
Quote error. A quote command returned an error from the server. curl allows several different ways to send custom commands to a IMAP, POP3, SMTP or FTP server and features a generic check that the commands work. When any of the individually issued commands fails, this is exit status is returned. The advice is generally to watch the headers in the FTP communication to better understand exactly what failed and how.
-
22.
HTTP page not retrieved. The requested URL was not found or returned another error with the HTTP error code being 400 or above. This return code only appears if
-f, --fail
is used. -
23.
Write error. Curl could not write data to a local filesystem or similar. curl receives data chunk by chunk from the network and it stores it like at (or writes it to stdout), one piece at a time. If that write action gets an error, this is the exit status.
-
25.
Upload failed. The server refused to accept or store the file that curl tried to send to it. This is usually due to wrong access rights on the server but can also happen due to out of disk space or other resource constraints. This error can happen for many protocols.
-
26.
Read error. Various reading problems. The inverse to exit status 23. When curl sends data to a server, it reads data chunk by chunk from a local file or stdin or similar, and if that reading fails in some way this is the exit status curl will return.
-
27.
Out of memory. A memory allocation request failed. curl needed to allocate more memory than what the system was willing to give it and curl had to exit. Try using smaller files or make sure that curl gets more memory to work with.
-
28.
Operation timeout. The specified time-out period was reached according to the conditions. curl offers several
timeouts
, and this exit code tells one of those timeout limits were reached. Extend the timeout or try changing something else that allows curl to finish its operation faster. Often, this happens due to network and remote server situations that you cannot affect locally.
-
30.
FTP PORT failed. The PORT command failed. Not all FTP servers support the PORT command; try doing a transfer using PASV instead. The PORT command is used to ask the server to create the data connection by connecting back to curl. See also the
FTP uses two connections
section.
-
31.
FTP could not use REST. The REST command failed. This command is used for resumed FTP transfers. curl needs to issue the REST command to do range or resumed transfers. The server is broken, try the same operation without range/resume as a crude work-around.
-
33.
HTTP range error. The range request did not work. Resumed HTTP requests are not necessary acknowledged or supported, so this exit code signals that for this resource on this server, there can be no range or resumed transfers.
-
34.
HTTP post error. Internal post-request generation error. If you get this error, please report the exact circumstances to the curl project.
-
35.
A TLS/SSL connect error. The SSL handshake failed. The SSL handshake can fail due to numerous different reasons so the error message may offer some additional clues. Maybe the parties could not agree to a SSL/TLS version, an agreeable cipher suite or similar.
-
36.
Bad download resume. Could not continue an earlier aborted download. When asking to resume a transfer that then ends up not possible to do, this error can get returned. For FILE, FTP or SFTP.
-
37.
Couldn’t read the given file when using the FILE:// scheme. Failed to open the file. The file could be non-existing or is it a permission problem perhaps?
-
38.
LDAP cannot bind. LDAP «bind» operation failed, which is a necessary step in the LDAP operation and thus this means the LDAP query could not be performed. This might happen because of wrong username or password, or for other reasons.
-
39.
LDAP search failed. The given search terms caused the LDAP search to return an error.
-
42.
Aborted by callback. An application told libcurl to abort the operation. This error code is not generally made visible to users and not to users of the curl tool.
-
43.
Bad function argument. A function was called with a bad parameter — this return code is present to help application authors to understand why libcurl cannot perform certain actions and should never be return by the curl tool. Please file a bug report to the curl project if this happens to you.
-
45.
Interface error. A specified outgoing network interface could not be used. curl will typically decide outgoing network and IP addresses by itself but when explicitly asked to use a specific one that curl cannot use, this error can occur.
-
47.
Too many redirects. When following HTTP redirects, libcurl hit the maximum number set by the application. The maximum number of redirects is unlimited by libcurl but is set to 50 by default by the curl tool. The limit is present to stop endless redirect loops. Change the limit with
--max-redirs
. -
48.
Unknown option specified to libcurl. This could happen if you use a curl version that is out of sync with the underlying libcurl version. Perhaps your newer curl tries to use an option in the older libcurl that was not introduced until after the libcurl version you are using but is known to your curl tool code as that is newer. To decrease the risk of this and make sure it does not happen: use curl and libcurl of the same version number.
-
49.
Malformed telnet option. The telnet options you provide to curl was not using the correct syntax.
-
51.
The server’s SSL/TLS certificate or SSH fingerprint failed verification. curl can then not be sure of the server being who it claims to be. See the
using TLS with curl
section for more TLS details and
using SCP and SFTP with curl
for more SSH specific details.
-
52.
The server did not reply anything, which in this context is considered an error. When an HTTP(S) server responds to an HTTP(S) request, it will always return something as long as it is alive and sound. All valid HTTP responses have a status line and responses header. Not getting anything at all back is an indication the server is faulty or perhaps that something prevented curl from reaching the right server or that you are trying to connect to the wrong port number etc.
-
53.
SSL crypto engine not found.
-
54.
Cannot set SSL crypto engine as default.
-
55.
Failed sending network data. Sending data over the network is a crucial part of most curl operations and when curl gets an error from the lowest networking layers that the sending failed, this exit status gets returned. To pinpoint why this happens, some serious digging is usually required. Start with enabling verbose mode, do tracing and if possible check the network traffic with a tool like Wireshark or similar.
-
56.
Failure in receiving network data. Receiving data over the network is a crucial part of most curl operations and when curl gets an error from the lowest networking layers that the receiving of data failed, this exit status gets returned. To pinpoint why this happens, some serious digging is usually required. Start with enabling verbose mode, do tracing and if possible check the network traffic with a tool like Wireshark or similar.
-
58.
Problem with the local certificate. The client certificate had a problem so it could not be used. Permissions? The wrong pass phrase?
-
59.
Couldn’t use the specified SSL cipher. The cipher names need to be specified exact and they are also unfortunately specific to the particular TLS backend curl has been built to use. For the current list of support ciphers and how to write them, see the online docs at
https://curl.se/docs/ssl-ciphers.html
.
-
60.
Peer certificate cannot be authenticated with known CA certificates. This usually means that the certificate is either self-signed or signed by a CA (Certificate Authority) that is not present in the CA store curl uses.
-
61.
Unrecognized transfer encoding. Content received from the server could not be parsed by curl.
-
63.
Maximum file size exceeded. When curl has been told to restrict downloads to not do it if the file is too big, this is the exit code for that condition.
-
64.
Requested SSL (TLS) level failed. In most cases this means that curl failed to upgrade the connection to TLS when asked to.
-
65.
Sending the data requires a rewind that failed. In some situations curl needs to rewind in order to send the data again and if this can’t be done, the operations fails.
-
66.
Failed to initialize the OpenSSL SSL Engine. This can only happen when OpenSSL is used and would signify a serious internal problem.
-
67.
The user name, password, or similar was not accepted and curl failed to log in. Verify that the credentials are provided correctly and that they are encoded the right way.
-
68.
File not found on TFTP server.
-
69.
Permission problem on TFTP server.
-
70.
Out of disk space on TFTP server.
-
72.
Unknown TFTP transfer ID.
-
73.
File already exists (TFTP).
-
77.
Problem with reading the SSL CA cert. The default or specified CA cert bundle could not be read/used to verify the server certificate.
-
78.
The resource (file) referenced in the URL does not exist.
-
79.
An unspecified error occurred during the SSH session. This sometimes indicate an incompatibility problem between the SSH libcurl curl uses and the SSH version used by the server curl speaks to.
-
80.
Failed to shut down the SSL connection.
-
82.
Could not load CRL file, missing or wrong format
-
83.
TLS certificate issuer check failed. The most common reason for this is that the server did not send the proper intermediate certificate in the TLS handshake.
-
84.
The FTP
PRET
command failed. This is a non-standard command and far from all servers support it. -
85.
RTSP: mismatch of CSeq numbers
-
86.
RTSP: mismatch of Session Identifiers
-
87.
Unable to parse FTP file list. The FTP directory listing format used by the server could not be parsed by curl. FTP wildcards can not be used on this server.
-
88.
FTP chunk callback reported error
-
89.
No connection available, the session will be queued
-
90.
SSL public key does not matched pinned public key. Either you provided a bad public key, or the server has changed.
-
91.
Invalid SSL certificate status. The server did not provide a proper valid certificate in the TLS handshake.
-
92.
Stream error in HTTP/2 framing layer. This is usually an unrecoverable error, but trying to force curl to speak HTTP/1 instead might circumvent it.
-
93.
An API function was called from inside a callback. If the curl tool returns this, something has gone wrong internally
-
95.
HTTP/3 layer error. This is somewhat generic and can be one out of several problems, see the error message for details.
-
96.
QUIC connection error. This error may be caused by an TLS library error. QUIC is the transport protocol used for HTTP/3.
-
97.
Proxy handshake error. Usually that means that a SOCKS proxy did not play along.
-
98.
A TLS client certificate is required but was not provided.
-
99.
An internal call to poll() or select() returned error that is not recoverable.
Below is the list of all cURL errors and the reasons behind these errors.
- Ok
- Unsupported Protocol
- Failed Init
- URL Malfomat
- Not Built In
- Couldn’t Resolve Proxy
- Couldn’t resolve host
- Couldn’t connect
- Weird server reply
- Remote access denied
- FTP accept failed
- FTP weird pass reply
- FTP accept timeout
- FTP weird pasv reply
- FTP weird 227 format
- FTP cant get host
- HTTP2
- FTP couldnt set type
- Partial file
- FTP couldnt retr file
- Quote error
- HTTP returned error
- Write error
- Upload failed
- Read error
- Out of memory
- Operation timedout
- FTP port failed
- FTP couldnt use rest
- Range error
- HTTP post error
- SSL connect error
- Bad download resume
- File couldnt read file
- LDAP cannot bind
- LDAP search failed
- Function not found
- Aborted by callback
- Bad function argument
- Interface failed
- Too many redirects
- Unknown option
- Telnet option syntax
- Got nothing
- SSL engine notfound
- SSL engine setfailed
- Send error
- Recv error
- SSL certproblem
- SSL cipher
- PEER failed verification
- Bad content encoding
- LDAP invalid url
- Filesize exceeded
- Use ssl failed
- Send fail rewind
- SSL engine initfailed
- Login denied
- TFTP notfound
- TFTP perm
- Remote disk full
- TFTP illegal
- TFTP unknownid
- Remote file exists
- TFTP nosuchuser
- Conv failed
- Conv reqd
- SSL cacert badfile
- Remote file not found
- SSH
- SSL shutdown failed
- Again
- SSL crl badfile
- SSL issuer error
- FTP pret failed
- RTSP cseq error
- RTSP session error
- FTP bad file list
- Chunk failed
- No connection available
- SSL pinnedpubkeynotmatch
- SSL invalidcertstatus
- HTTP2 stream
- Recursive api call
- Auth error
- HTTP3
- Quic connect error
- Obsolete*
Ok Ok
CURL error code 0 – CURLE_OK (0)
All fine. Proceed as usual.
Top ↑
Unsupported Protocol Unsupported Protocol
CURL error code 1 – CURLE_UNSUPPORTED_PROTOCOL (1)
The URL you passed to libcurl used a protocol that this libcurl does not support. The support might be a compile-time option that you didn’t use, it can be a misspelled protocol string or just a protocol libcurl has no code for.
Top ↑
Failed Init Failed Init
CURL error code 2 – CURLE_FAILED_INIT (2)
Very early initialization code failed. This is likely to be an internal error or problem, or a resource problem where something fundamental couldn’t get done at init time.
Top ↑
URL Malfomat URL Malfomat
CURL error code 3 – CURLE_URL_MALFORMAT (3)
The URL was not properly formatted.
Top ↑
Not Built In Not Built In
CURL error code 4 – CURLE_NOT_BUILT_IN (4)
A requested feature, protocol or option was not found built-in in this libcurl due to a build-time decision. This means that a feature or option was not enabled or explicitly disabled when libcurl was built and in order to get it to function you have to get a rebuilt libcurl.
Top ↑
Couldn’t Resolve Proxy Couldn’t Resolve Proxy
CURL error code 5 – CURLE_COULDNT_RESOLVE_PROXY (5)
Couldn’t resolve proxy. The given proxy host could not be resolved.
Top ↑
Couldn’t resolve host Couldn’t resolve host
CURL error code 6 – CURLE_COULDNT_RESOLVE_HOST (6)
Couldn’t resolve host. The given remote host was not resolved.
Top ↑
Couldn’t connect Couldn’t connect
CURL error code 7 – CURLE_COULDNT_CONNECT (7)
Failed to connect() to host or proxy.
Top ↑
Weird server reply Weird server reply
CURL error code 8 – CURLE_WEIRD_SERVER_REPLY (8)
The server sent data libcurl couldn’t parse. This error code was known as as CURLE_FTP_WEIRD_SERVER_REPLY before 7.51.0.
Top ↑
Remote access denied Remote access denied
CURL error code 9 – CURLE_REMOTE_ACCESS_DENIED (9)
We were denied access to the resource given in the URL. For FTP, this occurs while trying to change to the remote directory.
Top ↑
FTP accept failed FTP accept failed
CURL error code 10 – CURLE_FTP_ACCEPT_FAILED (10)
While waiting for the server to connect back when an active FTP session is used, an error code was sent over the control connection or similar.
Top ↑
FTP weird pass reply FTP weird pass reply
CURL error code 11 – CURLE_FTP_WEIRD_PASS_REPLY (11)
After having sent the FTP password to the server, libcurl expects a proper reply. This error code indicates that an unexpected code was returned.
Top ↑
FTP accept timeout FTP accept timeout
CURL error code 12 – CURLE_FTP_ACCEPT_TIMEOUT (12)
During an active FTP session while waiting for the server to connect, the CURLOPT_ACCEPTTIMEOUT_MS (or the internal default) timeout expired.
Top ↑
FTP weird pasv reply FTP weird pasv reply
CURL error code 13 – CURLE_FTP_WEIRD_PASV_REPLY (13)
libcurl failed to get a sensible result back from the server as a response to either a PASV or a EPSV command. The server is flawed.
Top ↑
FTP weird 227 format FTP weird 227 format
CURL error code 14 – CURLE_FTP_WEIRD_227_FORMAT (14)
FTP servers return a 227-line as a response to a PASV command. If libcurl fails to parse that line, this return code is passed back.
Top ↑
FTP cant get host FTP cant get host
CURL error code 15 – CURLE_FTP_CANT_GET_HOST (15)
An internal failure to lookup the host used for the new connection.
Top ↑
HTTP2 HTTP2
CURL error code 16 – CURLE_HTTP2 (16)
A problem was detected in the HTTP2 framing layer. This is somewhat generic and can be one out of several problems, see the error buffer for details.
Top ↑
FTP couldnt set type FTP couldnt set type
CURL error code 17 – CURLE_FTP_COULDNT_SET_TYPE (17)
Received an error when trying to set the transfer mode to binary or ASCII.
Top ↑
Partial file Partial file
CURL error code 18 – CURLE_PARTIAL_FILE (18)
A file transfer was shorter or larger than expected. This happens when the server first reports an expected transfer size, and then delivers data that doesn’t match the previously given size.
Top ↑
FTP couldnt retr file FTP couldnt retr file
CURL error code 19 – CURLE_FTP_COULDNT_RETR_FILE (19)
This was either a weird reply to a ‘RETR’ command or a zero byte transfer complete.
Top ↑
Quote error Quote error
CURL error code 21 – CURLE_QUOTE_ERROR (21)
When sending custom “QUOTE” commands to the remote server, one of the commands returned an error code that was 400 or higher (for FTP) or otherwise indicated unsuccessful completion of the command.
Top ↑
HTTP returned error HTTP returned error
CURL error code 22 – CURLE_HTTP_RETURNED_ERROR (22)
This is returned if CURLOPT_FAILONERROR is set TRUE and the HTTP server returns an error code that is >= 400.
Top ↑
Write error Write error
CURL error code 23 – CURLE_WRITE_ERROR (23)
An error occurred when writing received data to a local file, or an error was returned to libcurl from a write callback.
Top ↑
Upload failed Upload failed
CURL error code 25 – CURLE_UPLOAD_FAILED (25)
Failed starting the upload. For FTP, the server typically denied the STOR command. The error buffer usually contains the server’s explanation for this.
Top ↑
Read error Read error
CURL error code 26 – CURLE_READ_ERROR (26)
There was a problem reading a local file or an error returned by the read callback.
Top ↑
Out of memory Out of memory
CURL error code 27 – CURLE_OUT_OF_MEMORY (27)
A memory allocation request failed. This is serious badness and things are severely screwed up if this ever occurs.
Top ↑
Operation timedout Operation timedout
CURL error code 28 – CURLE_OPERATION_TIMEDOUT (28)
Operation timeout. The specified time-out period was reached according to the conditions.
Top ↑
FTP port failed FTP port failed
CURL error code 30 – CURLE_FTP_PORT_FAILED (30)
The FTP PORT command returned error. This mostly happens when you haven’t specified a good enough address for libcurl to use. See CURLOPT_FTPPORT.
Top ↑
FTP couldnt use rest FTP couldnt use rest
CURL error code 31 – CURLE_FTP_COULDNT_USE_REST (31)
The FTP REST command returned error. This should never happen if the server is sane.
Top ↑
Range error Range error
CURL error code 33 – CURLE_RANGE_ERROR (33)
The server does not support or accept range requests.
Top ↑
HTTP post error HTTP post error
CURL error code 34 – CURLE_HTTP_POST_ERROR (34)
This is an odd error that mainly occurs due to internal confusion.
Top ↑
SSL connect error SSL connect error
CURL error code 35 – CURLE_SSL_CONNECT_ERROR (35)
A problem occurred somewhere in the SSL/TLS handshake. You really want the error buffer and read the message there as it pinpoints the problem slightly more. Could be certificates (file formats, paths, permissions), passwords, and others.
Top ↑
Bad download resume Bad download resume
CURL error code 36 – CURLE_BAD_DOWNLOAD_RESUME (36)
The download could not be resumed because the specified offset was out of the file boundary.
Top ↑
File couldnt read file File couldnt read file
CURL error code 37 – CURLE_FILE_COULDNT_READ_FILE (37)
A file given with FILE:// couldn’t be opened. Most likely because the file path doesn’t identify an existing file. Did you check file permissions?
Top ↑
LDAP cannot bind LDAP cannot bind
CURL error code 38 – CURLE_LDAP_CANNOT_BIND (38)
LDAP cannot bind. LDAP bind operation failed.
Top ↑
LDAP search failed LDAP search failed
CURL error code 39 – CURLE_LDAP_SEARCH_FAILED (39)
LDAP search failed.
Top ↑
Function not found Function not found
CURL error code 41 – CURLE_FUNCTION_NOT_FOUND (41)
Function not found. A required zlib function was not found.
Top ↑
Aborted by callback Aborted by callback
CURL error code 42 – CURLE_ABORTED_BY_CALLBACK (42)
Aborted by callback. A callback returned “abort” to libcurl.
Top ↑
Bad function argument Bad function argument
CURL error code 43 – CURLE_BAD_FUNCTION_ARGUMENT (43)
A function was called with a bad parameter.
Top ↑
Interface failed Interface failed
CURL error code 45 – CURLE_INTERFACE_FAILED (45)
Interface error. A specified outgoing interface could not be used. Set which interface to use for outgoing connections’ source IP address with CURLOPT_INTERFACE.
Top ↑
Too many redirects Too many redirects
CURL error code 47 – CURLE_TOO_MANY_REDIRECTS (47)
Too many redirects. When following redirects, libcurl hit the maximum amount. Set your limit with CURLOPT_MAXREDIRS.
Top ↑
Unknown option Unknown option
CURL error code 48 – CURLE_UNKNOWN_OPTION (48)
An option passed to libcurl is not recognized/known. Refer to the appropriate documentation. This is most likely a problem in the program that uses libcurl. The error buffer might contain more specific information about which exact option it concerns.
Top ↑
Telnet option syntax Telnet option syntax
CURL error code 49 – CURLE_TELNET_OPTION_SYNTAX (49)
A telnet option string was Illegally formatted.
Top ↑
Got nothing Got nothing
CURL error code 52 – CURLE_GOT_NOTHING (52)
Nothing was returned from the server, and under the circumstances, getting nothing is considered an error.
Top ↑
SSL engine notfound SSL engine notfound
CURL error code 53 – CURLE_SSL_ENGINE_NOTFOUND (53)
The specified crypto engine wasn’t found.
Top ↑
SSL engine setfailed SSL engine setfailed
CURL error code 54 – CURLE_SSL_ENGINE_SETFAILED (54)
Failed setting the selected SSL crypto engine as default!
Top ↑
Send error Send error
CURL error code 55 – CURLE_SEND_ERROR (55)
Failed sending network data.
Top ↑
Recv error Recv error
CURL error code 56 – CURLE_RECV_ERROR (56)
Failure with receiving network data.
Top ↑
SSL certproblem SSL certproblem
CURL error code 58 – CURLE_SSL_CERTPROBLEM (58)
problem with the local client certificate.
Top ↑
SSL cipher SSL cipher
CURL error code 59 – CURLE_SSL_CIPHER (59)
Couldn’t use specified cipher.
Top ↑
PEER failed verification PEER failed verification
CURL error code 60 – CURLE_PEER_FAILED_VERIFICATION (60)
The remote server’s SSL certificate or SSH md5 fingerprint was deemed not OK. This error code has been unified with ## CURL error code – CURLE_SSL_CACERT since 7.62.0. Its previous value was 51.
Top ↑
Bad content encoding Bad content encoding
CURL error code 61 – CURLE_BAD_CONTENT_ENCODING (61)
Unrecognized transfer encoding.
Top ↑
LDAP invalid url LDAP invalid url
CURL error code 62 – CURLE_LDAP_INVALID_URL (62)
Invalid LDAP URL.
Top ↑
Filesize exceeded Filesize exceeded
CURL error code 63 – CURLE_FILESIZE_EXCEEDED (63)
Maximum file size exceeded.
Top ↑
Use ssl failed Use ssl failed
CURL error code 64 – CURLE_USE_SSL_FAILED (64)
Requested FTP SSL level failed.
Top ↑
Send fail rewind Send fail rewind
CURL error code 65 – CURLE_SEND_FAIL_REWIND (65)
When doing a send operation curl had to rewind the data to retransmit, but the rewinding operation failed.
Top ↑
SSL engine initfailed SSL engine initfailed
CURL error code 66 – CURLE_SSL_ENGINE_INITFAILED (66)
Initiating the SSL Engine failed.
Top ↑
Login denied Login denied
CURL error code 67 – CURLE_LOGIN_DENIED (67)
The remote server denied curl to login (Added in 7.13.1)
Top ↑
TFTP notfound TFTP notfound
CURL error code 68 – CURLE_TFTP_NOTFOUND (68)
File not found on TFTP server.
Top ↑
TFTP perm TFTP perm
CURL error code 69 – CURLE_TFTP_PERM (69)
Permission problem on TFTP server.
Top ↑
Remote disk full Remote disk full
CURL error code 70 – CURLE_REMOTE_DISK_FULL (70)
Out of disk space on the server.
Top ↑
TFTP illegal TFTP illegal
CURL error code 71 – CURLE_TFTP_ILLEGAL (71)
Illegal TFTP operation.
Top ↑
TFTP unknownid TFTP unknownid
CURL error code 72 – CURLE_TFTP_UNKNOWNID (72)
Unknown TFTP transfer ID.
Top ↑
Remote file exists Remote file exists
CURL error code 73 – CURLE_REMOTE_FILE_EXISTS (73)
File already exists and will not be overwritten.
Top ↑
TFTP nosuchuser TFTP nosuchuser
CURL error code 74 – CURLE_TFTP_NOSUCHUSER (74)
This error should never be returned by a properly functioning TFTP server.
Top ↑
Conv failed Conv failed
CURL error code 75 – CURLE_CONV_FAILED (75)
Character conversion failed.
Top ↑
Conv reqd Conv reqd
CURL error code 76 – CURLE_CONV_REQD (76)
Caller must register conversion callbacks.
Top ↑
SSL cacert badfile SSL cacert badfile
CURL error code 77 – CURLE_SSL_CACERT_BADFILE (77)
Problem with reading the SSL CA cert (path? access rights?)
Top ↑
Remote file not found Remote file not found
CURL error code 78 – CURLE_REMOTE_FILE_NOT_FOUND (78)
The resource referenced in the URL does not exist.
Top ↑
SSH SSH
CURL error code 79 – CURLE_SSH (79)
An unspecified error occurred during the SSH session.
Top ↑
SSL shutdown failed SSL shutdown failed
CURL error code 80 – CURLE_SSL_SHUTDOWN_FAILED (80)
Failed to shut down the SSL connection.
Top ↑
Again Again
CURL error code 81 – CURLE_AGAIN (81)
Socket is not ready for send/recv wait till it’s ready and try again. This return code is only returned from curl_easy_recv and curl_easy_send (Added in 7.18.2)
Top ↑
SSL crl badfile SSL crl badfile
CURL error code 82 – CURLE_SSL_CRL_BADFILE (82)
Failed to load CRL file (Added in 7.19.0)
Top ↑
SSL issuer error SSL issuer error
CURL error code 83 – CURLE_SSL_ISSUER_ERROR (83)
Issuer check failed (Added in 7.19.0)
Top ↑
FTP pret failed FTP pret failed
CURL error code 84 – CURLE_FTP_PRET_FAILED (84)
The FTP server does not understand the PRET command at all or does not support the given argument. Be careful when using CURLOPT_CUSTOMREQUEST, a custom LIST command will be sent with PRET CMD before PASV as well. (Added in 7.20.0)
Top ↑
RTSP cseq error RTSP cseq error
CURL error code 85 – CURLE_RTSP_CSEQ_ERROR (85)
Mismatch of RTSP CSeq numbers.
Top ↑
RTSP session error RTSP session error
CURL error code 86 – CURLE_RTSP_SESSION_ERROR (86)
Mismatch of RTSP Session Identifiers.
Top ↑
FTP bad file list FTP bad file list
CURL error code 87 – CURLE_FTP_BAD_FILE_LIST (87)
Unable to parse FTP file list (during FTP wildcard downloading).
Top ↑
Chunk failed Chunk failed
CURL error code 88 – CURLE_CHUNK_FAILED (88)
Chunk callback reported error.
Top ↑
No connection available No connection available
CURL error code 89 – CURLE_NO_CONNECTION_AVAILABLE (89)
(For internal use only, will never be returned by libcurl) No connection available, the session will be queued. (added in 7.30.0)
Top ↑
SSL pinnedpubkeynotmatch SSL pinnedpubkeynotmatch
CURL error code 90 – CURLE_SSL_PINNEDPUBKEYNOTMATCH (90)
Failed to match the pinned key specified with CURLOPT_PINNEDPUBLICKEY.
Top ↑
SSL invalidcertstatus SSL invalidcertstatus
CURL error code 91 – CURLE_SSL_INVALIDCERTSTATUS (91)
Status returned failure when asked with CURLOPT_SSL_VERIFYSTATUS.
Top ↑
HTTP2 stream HTTP2 stream
CURL error code 92 – CURLE_HTTP2_STREAM (92)
Stream error in the HTTP/2 framing layer.
Top ↑
Recursive api call Recursive api call
CURL error code 93 – CURLE_RECURSIVE_API_CALL (93)
An API function was called from inside a callback.
Top ↑
Auth error Auth error
CURL error code 94 – CURLE_AUTH_ERROR (94)
An authentication function returned an error.
Top ↑
HTTP3 HTTP3
CURL error code 95 – CURLE_HTTP3 (95)
A problem was detected in the HTTP/3 layer. This is somewhat generic and can be one out of several problems, see the error buffer for details.
Top ↑
Quic connect error Quic connect error
CURL error code 96 – CURLE_QUIC_CONNECT_ERROR (96)
QUIC connection error. This error may be caused by an SSL library error. QUIC is the protocol used for HTTP/3 transfers.
Top ↑
Obsolete* Obsolete*
CURL error code * – CURLE_OBSOLETE*
These error codes will never be returned. They were used in an old libcurl version and are currently unused.
CURLE_OK (0) — All fine. Proceed as usual.
CURLE_UNSUPPORTED_PROTOCOL (1) — The URL you passed to libcurl used a protocol that this libcurl does not support. The support might be a compile-time option that you didn’t use, it can be a misspelled protocol string or just a protocol libcurl has no code for.
CURLE_FAILED_INIT(2) -Very early initialization code failed. This is likely to be an internal error or problem.
CURLE_URL_MALFORMAT (3) — The URL was not properly formatted.
CURLE_URL_MALFORMAT_USER (4) — This is never returned by current libcurl.
CURLE_COULDNT_RESOLVE_PROXY (5) — Couldn’t resolve proxy. The given proxy host could not be resolved.
CURLE_COULDNT_RESOLVE_HOST (6) — Couldn’t resolve host. The given remote host was not resolved.
CURLE_COULDNT_CONNECT (7) — Failed to connect() to host or proxy.
CURLE_FTP_WEIRD_SERVER_REPLY (8) — After connecting to an FTP server, libcurl expects to get a certain reply back.
This error code implies that it got a strange or bad reply. The given remote server is probably not an OK FTP server.
CURLE_FTP_ACCESS_DENIED (9) — We were denied access when trying to login to an FTP server or when trying to change working directory to the one given in the URL.
CURLE_FTP_USER_PASSWORD_INCORRECT (10) — This is never returned by current libcurl.
CURLE_FTP_WEIRD_PASS_REPLY (11) — After having sent the FTP password to the server, libcurl expects a proper reply. This error code indicates that an unexpected code was returned.
CURLE_FTP_WEIRD_USER_REPLY (12) — After having sent user name to the FTP server, libcurl expects a proper reply.
This error code indicates that an unexpected code was returned.
CURLE_FTP_WEIRD_PASV_REPLY (13) — libcurl failed to get a sensible result back from the server as a response to either a PASV or a EPSV command. The server is flawed.
CURLE_FTP_WEIRD_227_FORMAT (14) — FTP servers return a 227-line as a response to a PASV command. If libcurl fails to parse that line, this return code is passed back.
CURLE_FTP_CANT_GET_HOST (15) — An internal failure to lookup the host used for the new connection.
CURLE_FTP_CANT_RECONNECT (16) — A bad return code on either PASV or EPSV was sent by the FTP server, preventing libcurl from being able to continue.
CURLE_FTP_COULDNT_SET_BINARY (17) — Received an error when trying to set the transfer mode to binary.
CURLE_PARTIAL_FILE (18) — A file transfer was shorter or larger than expected. This happens when the server first reports an expected transfer size, and then delivers data that doesn’t match the previously given size.
CURLE_FTP_COULDNT_RETR_FILE (19) — This was either a weird reply to a ‘RETR’ command or a zero byte transfer complete.
CURLE_FTP_WRITE_ERROR (20) — After a completed file transfer, the FTP server did not respond a proper «transfer successful» code.
CURLE_FTP_QUOTE_ERROR (21) — When sending custom «QUOTE» commands to the remote server, one of the commands returned an error code that was 400 or higher.
CURLE_HTTP_RETURNED_ERROR (22) — This is returned if CURLOPT_FAILONERROR is set TRUE and the HTTP server returns an error code that is >= 400.
URLE_WRITE_ERROR (23) — An error occurred when writing received data to a local file, or an error was returned to libcurl from a write callback.
CURLE_MALFORMAT_USER (24) — This is never returned by current libcurl.
CURLE_FTP_COULDNT_STOR_FILE (25) — FTP couldn’t STOR file. The server denied the STOR operation. The error buffer usually contains the server’s explanation to this.
CURLE_READ_ERROR (26) -There was a problem reading a local file or an error returned by the read callback.
CURLE_OUT_OF_MEMORY (27) -Out of memory. A memory allocation request failed. This is serious badness and things are severely screwed up if this ever occur.
CURLE_OPERATION_TIMEOUTED (28) -Operation timeout. The specified time-out period was reached according to the conditions.
CURLE_FTP_COULDNT_SET_ASCII (29) — libcurl failed to set ASCII transfer type (TYPE A).
CURLE_FTP_PORT_FAILED (30) — The FTP PORT command returned error. This mostly happen when you haven’t specified a good enough address for libcurl to use. See CURLOPT_FTPPORT.
CURLE_FTP_COULDNT_USE_REST (31) — The FTP REST command returned error. This should never happen if the server is sane.
CURLE_FTP_COULDNT_GET_SIZE (32) — The FTP SIZE command returned error. SIZE is not a kosher FTP command, it is an extension and not all servers support it. This is not a surprising error.
CURLE_HTTP_RANGE_ERROR (33) — The HTTP server does not support or accept range requests.
CURLE_HTTP_POST_ERROR (34) -This is an odd error that mainly occurs due to internal confusion.
URLE_SSL_CONNECT_ERROR (35) — A problem occurred somewhere in the SSL/TLS handshake. You really want the error buffer and read the message there as it pinpoints the problem slightly more. Could be certificates (file formats, paths, permissions), passwords, and others.
CURLE_FTP_BAD_DOWNLOAD_RESUME (36) — Attempting FTP resume beyond file size.
CURLE_FILE_COULDNT_READ_FILE (37) — A file given with FILE:// couldn’t be opened. Most likely because the file path doesn’t identify an existing file. Did you check file permissions?
CURLE_LDAP_CANNOT_BIND (38) — LDAP cannot bind. LDAP bind operation failed.
CURLE_LDAP_SEARCH_FAILED (39) — LDAP search failed.
CURLE_LIBRARY_NOT_FOUND (40) — Library not found. The LDAP library was not found.
CURLE_FUNCTION_NOT_FOUND (41) — Function not found. A required LDAP function was not found.
CURLE_ABORTED_BY_CALLBACK (42) — Aborted by callback. A callback returned «abort» to libcurl.
CURLE_BAD_FUNCTION_ARGUMENT (43) — Internal error. A function was called with a bad parameter.
CURLE_BAD_CALLING_ORDER (44) — This is never returned by current libcurl.
CURLE_HTTP_PORT_FAILED (45) — Interface error. A specified outgoing interface could not be used. Set which interface to use for outgoing connections’ source IP address with CURLOPT_INTERFACE.
CURLE_BAD_PASSWORD_ENTERED (46) — This is never returned by current libcurl.
CURLE_TOO_MANY_REDIRECTS (47) — Too many redirects. When following redirects, libcurl hit the maximum amount. Set your limit with CURLOPT_MAXREDIRS.
CURLE_UNKNOWN_TELNET_OPTION (48) -An option set withCURLOPT_TELNETOPTIONS was not recognized/known. Refer to the appropriate documentation.
CURLE_TELNET_OPTION_SYNTAX (49) — A telnet option string was Illegally formatted.
CURLE_OBSOLETE (50) — This is not an error. This used to be another error code in an old libcurl version and is currently unused.
CURLE_SSL_PEER_CERTIFICATE (51) — The remote server’s SSL certificate was deemed not OK.
CURLE_GOT_NOTHING (52) — Nothing was returned from the server, and under the circumstances, getting nothing is considered an error.
CURLE_SSL_ENGINE_NOTFOUND (53) — The specified crypto engine wasn’t found.
CURLE_SSL_ENGINE_SETFAILED (54) — Failed setting the selected SSL crypto engine as default!
CURLE_SEND_ERROR (55) — Failed sending network data.CURLE_RECV_ERROR (56) — Failure with receiving network data.
CURLE_SHARE_IN_USE (57) — Share is in useCURLE_SSL_CERTPROBLEM (58) — problem with the local client certificate
CURLE_SSL_CIPHER (59) — couldn’t use specified cipher
CURLE_SSL_CACERT (60) — problem with the CA cert (path? access rights?)
CURLE_BAD_CONTENT_ENCODING (61) — Unrecognized transfer encoding
CURLE_LDAP_INVALID_URL (62) — Invalid LDAP URLCURLE_FILESIZE_EXCEEDED (63) — Maximum file size exceeded
CURLE_FTP_SSL_FAILED (64) — Requested FTP SSL level failed
CURLE_SEND_FAIL_REWIND (65) — When doing a send operation curl had to rewind the data to retransmit, but the rewinding operation failed
CURLE_SSL_ENGINE_INITFAILED (66) — Initiating the SSL Engine failed
CURLE_LOGIN_DENIED (67) — The remote server denied curl to login (Added in 7.13.1)
CURLE_TFTP_NOTFOUND (68) — File not found on TFTP server
CURLE_TFTP_PERM (69 — Permission problem on TFTP server
CURLE_TFTP_DISKFULL (70) — Out of disk space on TFTP server
CURLE_TFTP_ILLEGAL (71) — Illegal TFTP operation
CURLE_TFTP_UNKNOWNID (72) — Unknown TFTP transfer ID
CURLE_TFTP_EXISTS (73) — TFTP File already exists
CURLE_TFTP_NOSUCHUSER (74) — No such TFTP user
CURLE_CONV_FAILED (75) — Character conversion failed
CURLE_CONV_REQD (76) — Caller must register conversion callbacks