Rate limits & errors
Rate limits
Section titled “Rate limits”Endpoints are rate-limited per account. Organization endpoints allow 60
requests per minute; some sensitive operations carry tighter, per-endpoint
limits. Exceeding a limit returns HTTP 429 with a structured body:
{ "status": "error", "message": "Too many requests", "errors": [ { "type": "RateLimitError", "key": "rate_limit", "retry_after": 42 } ]}Honor retry_after (seconds) before retrying. For bulk work, spread writes
instead of bursting — limits are per minute, so a steady 1 req/s never
throttles.
Status codes
Section titled “Status codes”| Code | Meaning | Typical cause |
|---|---|---|
200 / 201 |
OK / created | — |
400 |
Bad request | Malformed body, token scope not valid for the route |
401 |
Unauthenticated | Missing, revoked, or expired API key |
403 |
Forbidden | Route not available to API keys (credential/billing), plan gate, org role |
404 |
Not found | Wrong id — or a resource your role can’t see (Lynqu never confirms existence of records you can’t access) |
422 |
Validation failed | Field errors listed in errors[] |
429 |
Rate limited | Retry after retry_after seconds |
5xx |
Server error | Safe to retry with backoff |
Error envelope
Section titled “Error envelope”errors[] entries are machine-readable:
{ "type": "ValidationError", "key": "label", "errorMessage": "The label field is required.", "errorTitle": "Validation failed"}Branch on type and key; errorMessage/errorTitle are localized,
human-readable strings — display them, don’t parse them.