Errors & limits
Handle validation, unavailable chain state and rate limits explicitly.
Error responses
{
"error": {
"code": "QUOTE_EXPIRED",
"message": "Quote expired",
"requestId": "request-specific-id"
}
}API errors use this envelope and an X-Request-Id response header. Reverse-proxy failures can return a non-JSON body, so check status and content type before parsing. Use the request ID when investigating a failed call.
Recovery by error code
| Code | Recommended action |
|---|---|
| INVALID_REQUEST / INVALID_AMOUNT / INVALID_PAIR | Correct schema fields, base-unit amounts or token pair; do not retry unchanged. |
| QUOTE_EXPIRED / SNAPSHOT_INVALIDATED | Get a new quote and re-review it before building. |
| RPC_BLOCK_UNSUPPORTED / STATE_STALE | Pinned chain state could not be verified. Wait and retry with backoff. |
| CHAIN_REORGANIZED | Re-fetch state or query the same transaction hash again. |
| NOT_DEPLOYED / UNVERIFIED_EXECUTOR | Execution is unavailable. Do not ask for a swap signature. |
| INSUFFICIENT_BALANCE / SIMULATION_FAILED | Check wallet funds, allowance, gas and the returned error. |
| BUSY / QUOTE_TIMEOUT / RATE_LIMITED | Respect Retry-After where present; apply bounded backoff. |
| ORDER_EVENTS_CURSOR_INVALIDATED / ACTIVITY_CURSOR_INVALIDATED | Restart pagination; discard stale page links. |
Request limits and authentication
The deployed API currently accepts requests without an integrator API key. Operators can enable PATH_API_KEY for POST endpoints, using the x-api-key header. Provider keys for RPC, Etherscan, Reown or Pyth are not Path API credentials.
The verified server default is 120 requests per minute per client; fast mode defaults to 600. Operators may configure lower limits. Separate endpoint limits apply to holdings discovery (12/minute) and balance reads (30/minute). The public proxy additionally limits /api/v1 traffic to 2 requests per second with a burst of 8. Proxy and service limits both apply; handle HTTP 429.
Request bodies are limited to 16 KiB. The production quote deadline is 8 seconds, with bounded admission and RPC concurrency. Limits and observed latency are separate: colocated RPC does not guarantee an end-to-end quote time.