Status Codes
HTTP status codes returned by the Chartquery API and how to handle them.
Synchronous calls are billed on 200. Asynchronous calls (is_async=true) return 202 (not billed) and are billed when the job completes successfully — recorded as 201 in your request logs. Polling GET /jobs/{job_id} is always free. Failed jobs (500) are never billed. 404 billing varies by endpoint (check each endpoint page). All other 4xx/5xx responses are free.
| Code | Billed | Status | Action |
|---|---|---|---|
200 | Yes | Successful API Call (sync) | No action required. |
201 | Yes | Async Job Completed | Appears in your request logs when an async job finishes successfully — this is when the job is billed. Not returned as an HTTP response. |
202 | No | Accepted (Async) | The job was accepted and queued. Poll GET /jobs/{job_id} for the result — polling is always free. |
400 | No | Bad Request | Verify your parameters and their types. Check the documentation for more information. |
401 | No | Invalid API Key | Check your API key (x-api-key header or x_api_key query string). |
401 | No | Inactive API Key | Activate your API key in the API Keys section of your account settings. |
401 | No | Expired API Key | Update your API key or generate a new one. |
401 | No | Rate limit exceeded | Back off and retry. Upgrade your plan or raise per-key quotas if this happens often. |
402 | No | Payment required | Top up credits, upgrade your plan, enable Auto Top-Up, or settle any open invoices. |
403 | No | Forbidden | Verify your permissions. For API Stats, HTTP 403 means the endpoint is not enabled on your account: contact support to activate it. |
404 | Varies | Not Found | Billing is endpoint-specific. Check the individual endpoint documentation. |
413 | No | Payload Too Large | The uploaded file or request body exceeds the size limit. Check the API documentation for maximum sizes. |
500 | No | Internal Error | Retry the action or contact our support team. |