API reference

Check job status

GET/api/v1/screenshots/{job_uuid}

Returns the current state of a job. Poll every 5 seconds until status is completed or failed. A failed capture still answers 200: the success field describes the capture, not the call, and only transport and admission problems answer with an error status.

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.

response · completed
{
  "success": true,
  "job_uuid": "a818dd25-d93e-4148-8aed-9ebb109ceeda",
  "status": "completed",
  "url": "https://example.com",
  "final_url": "https://example.com/",
  "page_title": "Example Domain",
  "image_url": "https://api.previewapi.dev/storage/screenshots/a818dd25.png",
  "width": 1280,
  "height": 800,
  "format": "png",
  "image_bytes": 184223,
  "duration_ms": 3410,
  "created_at": "2026-08-05T09:12:44Z",
  "completed_at": "2026-08-05T09:12:48Z"
}
response · failed
{
  "success": false,
  "job_uuid": "a818dd25-d93e-4148-8aed-9ebb109ceeda",
  "status": "failed",
  "error": "Page did not finish loading within 30s",
  "error_code": "PAGE_TIMEOUT"
}

Polling guidance

  • Poll every 5 seconds. That is the interval the dashboard uses.
  • Stop polling on completed, failed, or after 2 minutes.
  • image_url is stable for the life of the image, so it can be stored or hotlinked — but see retention below.

Image retention

Stored images are swept after the service's retention window, 14 days at present. After that the job reports image_expired and the URL stops resolving, so copy the image into your own storage if you need it for longer. Credits are tracked on your account rather than on the job body — see Credits.