Status codes
| Status | Meaning |
|---|---|
200 | Successful GET or PATCH. |
201 | Successful POST — a new resource was created. |
204 | Successful request with no response body (for example, revoking a key). |
400 | Bad request. Typically a validation failure; message identifies the field that failed validation. |
401 | Missing, malformed, revoked, or expired API key. |
402 | Payment required. Returned by POST /scans when the organization has insufficient Whitebox Scan credits. |
403 | Your API key does not have the required scope. |
404 | The resource does not exist, or is not visible to your organization. |
409 | Conflict. For example, exceeding the maximum active API key count when creating a new key. |
429 | Rate limit exceeded. See Rate limits. |
500 | Unexpected server error. Safe to retry with backoff; contact support if it persists. |
Error body shape
Errors are returned as JSON with a consistent shape:message as an array of field‑level errors:
Common failure modes
”This endpoint requires API key authentication”
A REST endpoint was called with a dashboard session token instead of an API key. REST endpoints under/v1/* require the X-Api-Key header.
”API key authentication is only supported on /api/v1/rest/ endpoints”
This only appears when calling the backend route directly instead of the public API host. Use the public base URL from Introduction and call/v1/* endpoints with X-Api-Key. Dashboard endpoints use session
authentication and are not part of this API reference.
”API key missing required scope: write”
The key was created withread only but the request targets a write endpoint. Create a new key that includes the write scope and retry.
”Insufficient credits to start this scan”
The organization does not have enough Whitebox Scan credits for the requested scan. Top up from Credits and billing in the dashboard, or submit a smaller cost estimation.”cost_estimation_id is required for pentest scans”
Whitebox Scan-only inputs such astarget_urls, auth_instructions,
custom_context, or context_document_ids require a cost estimation so credits
can be deducted correctly. Create a cost estimation first, then pass its id as
cost_estimation_id.
”Cost estimation is not ready”
The estimation is stillpending or running. Poll
GET /cost-estimations/{id}
until the status reaches completed or partial before starting the scan.