API Reference

Rate limits.

Limits are enforced at the API gateway on a sliding 60-second window per API key. Headers tell you exactly where you stand on every response.

Per-plan caps

Free10 / min500 calls / month combined across all your keys.
Builder120 / min50,000 calls / month. Coming soon.
Team600 / minUnlimited monthly cap. Coming soon.

Headers on every response

X-RateLimit-LimitYour per-minute ceiling.
X-RateLimit-RemainingCalls remaining in the current 60-second window.
X-RateLimit-ResetUnix epoch seconds when the window resets.
Retry-AfterOnly on 429. Seconds until you can try again.

Handling 429s

When the limit is exceeded we return 429 Too Many Requests with a Retry-After header. The simplest correct strategy: read the header, wait, retry.

429 Too Many Requests
HTTP/1.1 429 Too Many Requests
Retry-After: 42
X-RateLimit-Limit: 10
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1717000060

{
  "ok": false,
  "error": {
    "code": "RATE_LIMITED",
    "message": "Rate limit of 10/min exceeded. Retry in 42s."
  }
}

Recommended retry strategy

  • On 429, sleep for Retry-After seconds and retry the exact same request. No body changes needed.
  • For client-side throttling, read X-RateLimit-Remaining on every response and queue locally when it's under 2.
  • For batch workloads, prefer the Batch API (coming with the Builder tier) over manual rate-limit dodging.
  • The monthly cap is enforced independently. When it's exceeded you get RATE_LIMITED too, but with a longer reset window.

Web tool usage

Tools used directly on the website (e.g. /pcb-design/pcb-trace-width) run client-side from the same logic that powers the API. They don't consume your API quota — only the /v1/ endpoints do.