For a request body larger than 1024 bytes, curl sends an 'Expect: 100-continue' header and waits for the server's interim 100 response before transmitting the body. Servers and proxies that do not implement it simply never send the interim response, and curl waits out its timeout, then sends the body anyway. The request succeeds but every call carries a fixed extra delay.
The symptom is an API client where small requests are fast and large ones are consistently about a second slower, with the gap visible in '-w "%{time_starttransfer}"' or in a packet capture.
Suppress the header with an empty override: 'curl -H "Expect:" ...'. An empty value after the colon tells curl to remove a header it would otherwise send, which is the general mechanism for dropping any internally generated header. Alternatively '--expect100-timeout' shortens the wait. The default timeout is one second. This mostly affects HTTP/1.1; over HTTP/2 curl does not use the mechanism the same way, so switching a client to HTTP/2 can make the delay disappear for reasons unrelated to the protocol version itself.