Go to App

Errors

The API uses standard HTTP status codes and returns structured error responses.

Error Response Format

All errors return a JSON object with these fields:

json
{
"status_code": 400,
"error_code": "INVALID_REQUEST",
"detail": "The URL provided is not supported."
}

HTTP Status Codes

CodeMeaning
200Success
201Resource created
204Deleted (no content)
400Bad request - invalid parameters
401Unauthorized - missing or invalid token
403Forbidden - insufficient permissions or expired plan
404Not found
422Validation error
429Rate limit exceeded
500Internal server error

Error Codes

Error CodeStatusDescription
INVALID_REQUEST400The request body or parameters are invalid
INVALID_URL400The provided URL is not supported or malformed
AUTH_HEADER_TOKEN401Missing or invalid X-AUTH-TOKEN header
TOKEN_EXPIRED403The API token has expired
PLAN_EXPIRED403Your subscription has expired
PLATFORM_NOT_ALLOWED403Platform not available on your tier
DAILY_LIMIT_EXCEEDED429Daily export creation limit exceeded (Premium only — Business is unlimited)
RATE_LIMIT_EXCEEDED429Per-5-minute export creation window exceeded (Premium 20, Business 60 — bulk excluded)
CONCURRENCY_RATE_LIMIT429Too many concurrent exports (Premium 1, Business 5 per token)
QUEUE_LIMIT_EXCEEDED429Too many queued exports (Premium 3, Business 5 per token)

See Rate Limits for the full per-tier matrix.

Rate Limit Error Response

When rate limited, the response includes a seconds_to_wait field:

json
{
"status_code": 429,
"error_code": "RATE_LIMIT_EXCEEDED",
"seconds_to_wait": 42,
"detail": "Rate limit exceeded. You have created 60 exports in the last 5 minutes (limit: 60). Retry in 42 seconds."
}

seconds_to_wait reflects when the oldest in-window export rolls out, so the value adapts to your actual usage shape (typically 30–120 s for steady traffic, up to 4 min if you submitted all your exports in a single burst).