1xx Informational · RFC 9110 §15.2.1

100 Continue

The server has seen the request headers and the client should send the body.

What 100 means

A client that sends Expect: 100-continue waits for this interim response before uploading a large body, so a request the server would reject (wrong auth, too large) fails before the bytes are sent.

You will rarely see 100 in application logs; it is handled inside HTTP libraries and proxies. curl sends the Expect header automatically for bodies over 1024 bytes.

Common causes

  • A client sent Expect: 100-continue and the server agreed to receive the body.

How to fix it

  • Nothing to fix. If a legacy server hangs on it, disable the expectation in the client (curl: -H "Expect:").

What it looks like

A typical response:

HTTP/1.1 100 Continue

HTTP/1.1 201 Created
Content-Type: application/json

The same event in an nginx access log (the status is the number after the request line):

203.0.113.7 - - [10/Sep/2026:10:12:01 +0000] "GET /api/orders HTTP/1.1" 100 153 "-" "Mozilla/5.0"

Check it with curl

-i prints the status line and headers, and -w '%{http_code}' prints only the number, which is handy in scripts and health checks. Replace the URL with yours:

curl -sS -o /dev/null -w '%{http_code} %{time_total}s\n' https://example.com/api/orders

Compare what curl sees with what the browser sees. A different status from the same URL usually means a cache, a CDN edge or a cookie is in the way.

Investigating a run of 100s? Paste the log excerpt into Log Share to get line numbers, highlighting and an expiring link for whoever is on call with you.

  • 101Switching Protocols: The server agrees to change protocol, almost always to a WebSocket.
  • 200OK: The request succeeded and the response carries the result.
  • 413Content Too Large: The request body exceeds what the server is willing to accept.
  • 417Expectation Failed: the server cannot meet the Expect header.

FAQ

Why does my upload wait a second before starting?

The client sent Expect: 100-continue and the server never answered 100; most clients give up waiting after one second and send the body anyway. Configure the server to answer, or drop the header.