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 / minuteGET /api/v1/intents: 60 requests / minuteGET /api/v1/intents/{id}: 120 requests / minuteGET /api/v1/intents/{id}/origins: 120 requests / minutePOST /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.
{
"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.