API
Errors & Limits
API error codes, rate limits, and integration best practices.
Error responses
Errors return JSON with an error message string:
{ "error": "Recording not found" }HTTP status codes
| Code | Error | Cause |
|---|---|---|
400 | Invalid input | Invalid query parameters or request body |
401 | Invalid API key / Unauthorized | Missing, invalid, or revoked key |
403 | Insufficient permissions | API key lacks required scope |
403 | Subscription required | Workspace subscription expired |
403 | API request limit exceeded | Monthly API quota exhausted |
404 | Recording not found | Invalid ID or wrong workspace |
409 | Conflict | Filing a non-COMPLETED recording |
429 | Rate limit exceeded | Too many requests per minute |
500 | Internal server error | Server-side failure |
Validation errors return a generic Invalid input message — field-level details are not exposed.
Rate limits
120 requests per minute per workspace.
When exceeded, the API returns 429 with a Retry-After header (seconds until reset). Implement exponential backoff in your integration.
Monthly API request limits also apply per plan (separate from per-minute rate limiting). Exceeding the monthly quota returns 403.
Best practices
Security
- Never expose API keys in client-side code, mobile apps, or public repositories
- Use HTTPS only
- Rotate keys every 90 days
- Use separate keys for development and production
- Revoke keys when integrations are decommissioned
Performance
- Poll
syncState=unsyncedto avoid reprocessing filed recordings - Use cursor pagination (
meta.nextCursor) for catch-up jobs - Fetch
GET /recordings/:idfor full content instead ofinclude=contenton list endpoints - Recommended poll interval: 5–15 minutes
- Combine webhooks (fast) with polling (reliable recovery)
Idempotency
- Filing with the same
provider+externalIdis safe to retry - Use recording
idas your dedupe key in Zapier and similar tools
Error handling
- Retry 429 and 500 with exponential backoff
- Do not retry 400, 401, 403, or 404 without fixing the request
- Log
x-ardela-deliveryheader values when debugging webhooks
