
As of 31 October 2026, 5 of 35 products whose API answered our bad requests on 25 October 2026 sent a rate-limit header (RateLimit, X-RateLimit-* or Retry-After). An agent builder can’t count on a rate-limit header in an API’s error answer. The count covers the headers on those error answers only, not other responses from the same APIs, nor the rest of the 193 products we drove.
X-RateLimit-* headers outnumbered the IETF RateLimit fields
Of the products whose API answered our bad requests, 4 of 35 sent X-RateLimit-* headers, at GitHub, Make, Nifty and SignWell. Each count here comes from the bad requests we sent to the APIs on 25 October 2026, and says what came back, not why.
The IETF RateLimit header fields came back at 1 of 35 products, at Fillout. The error answers at Fillout, GitHub, Make, Nifty and SignWell also said how many requests were left.
On these error answers, a client reading only X-RateLimit-* names misses Fillout’s header, and a client reading only the IETF fields misses the headers of GitHub, Make, Nifty and SignWell.
JSON errors outnumbered web-page errors
21 of 35 products whose API answered our bad requests replied to each of them in JSON.

Share this card: Wide PNG · Tall PNG
As of 31 Oct 2026: our drives of 193 products, 1–31 Oct 2026 · Today's numbers
Data table
| Products | Out of | Share | |
|---|---|---|---|
| APIs that answered each bad request in JSON | 21 | 35 | 60% |
At 8 of 35, a bad request got a web page instead of an API error. An agent reading that answer got markup where it looked for an error message it could parse.
Fillout, GitHub and Nifty answered in JSON and also sent a rate-limit header, so an owner has those error answers to set beside their own.
11 of 35 products named what was wrong in every answer
At Attio, Brevo, Canva, Firecrawl, Notion, Postiz, Resend, Steel, Tinybird, Twenty and UploadThing, the error answers carried no rate-limit header. Steel aside, that list’s error answers all came in JSON. Without a key, UploadThing’s API answered “Missing API Key” and Resend’s answered missing_api_key. Twenty’s documented key endpoint told API-key callers “This endpoint is not available to this caller”.
Across the products whose API answered our bad requests, 33 of 35 named what was wrong in an answer, a wider group than the products above. Nifty’s API answered a project create on a new workspace with an error asking for portfolioId.
A request id came back at more products than a docs link
16 of 35 products whose API answered our bad requests gave a request id with an error, and 7 of 35 linked to their docs in an error.

Share this card: Wide PNG · Tall PNG
As of 31 Oct 2026: our drives of 193 products, 1–31 Oct 2026 · Today's numbers
Data table
| Products | Out of | Share | |
|---|---|---|---|
| APIs that gave a request id with an error | 16 | 35 | 46% |
GitHub is on the docs-link list but not the request-id list; Make and SignWell are on the request-id list as well as the header list.
For an owner comparing their own error answers, Nifty’s carried JSON on every bad request, X-RateLimit-* headers, a request id and a docs link. Steel and Tinybird named the fault in every answer, and each gave a request id and linked its docs in an error.