CanopyAPI docs

rate_limited

Too many requests to this route in the current one-minute window.

HTTP 429

When you see this

Each route has its own per-minute limit:

  • POST /api/v1/intents: 30 requests / minute
  • GET /api/v1/intents: 60 requests / minute
  • GET /api/v1/intents/{id}: 120 requests / minute
  • GET /api/v1/intents/{id}/origins: 120 requests / minute
  • POST /api/v1/intents/{id}/source-inbox: 30 requests / minute

Limits count per API key, not per IP address. Canopy checks the limit after your key authenticates, so requests without a valid key do not use up your limit.

What the response and headers look like

Every response on these routes has three headers, on success and on error: RateLimit-Limit, RateLimit-Remaining and RateLimit-Reset. RateLimit-Reset is the seconds until the window resets. A 429 also has a Retry-After header with the seconds to wait.

json
{
  "error": {
    "code": "rate_limited",
    "message": "Too many requests for this route.",
    "request_id": "req_1a2b3c4d5e6f7a8b9c0d1e2f",
    "docs": "https://canopypay.io/errors/rate_limited"
  }
}

What to do

Wait at least Retry-After seconds, then retry. The retry is safe after that wait. For steady traffic, read RateLimit-Remaining on every response and slow down before you reach zero.