API reference

Errors

Errors use conventional HTTP status codes and one consistent JSON envelope. error is the human-readable message, error_code is the stable identifier to branch on, and request_uuid is what to quote in a support mail.

not callable yet

Direct API access is not open during the beta. API keys created in the dashboard authenticate nothing — no request anywhere is accepted with one — and screenshots are captured from the dashboard instead.

These pages describe the capture service the dashboard talks to. Read every request below as the shape of the interface that will open, not as a call you can make today.

error envelope
{
  "success": false,
  "error": "Balance is empty. Buy a credit pack to continue.",
  "error_code": "QUOTA_EXCEEDED",
  "details": null,
  "request_uuid": "0a2f7c31-1c0e-4f4a-9c58-6b0b2a1d55e1"
}

Error codes

400INVALID_URL · BLOCKED_URLURL is malformed, non-http(s), or points to a blocked network.
401MISSING_API_KEY · INVALID_API_KEYMissing, malformed, or revoked API key.
402QUOTA_EXCEEDEDNo credits left for the capture.
404JOB_NOT_FOUND · JOB_DELETEDNo job with that UUID on this account.
409IDEMPOTENCY_KEY_CONFLICT · JOB_NOT_DELETABLEAn idempotency key was reused with a different body, or the job is not in a deletable state.
410IMAGE_EXPIRED · IMAGE_DELETEDThe image is gone; the job row may still be readable.
422VALIDATION_ERRORA parameter is out of range — the message names the field.
429RATE_LIMITEDToo many requests. Back off per Retry-After.
503SERVICE_UNAVAILABLECapture capacity is exhausted. Retry shortly.
500INTERNAL_ERRORSomething broke on our side. Reserved credits are refunded.

The list is not exhaustive — the service defines a wider set of codes and adds to it. Branch on the HTTP status first and treat an unrecognised error_code as its status. Capture-time failures (timeouts, DNS, blocked pages) are not HTTP errors: they arrive as status: "failed" on the job.