Webhook Delivery
When a job completes or fails, ScreenshotFreeAPI sends an HTTPS POST to your webhookUrl with a JSON payload describing the outcome. No polling needed.
Payload shape
Webhook payloads
1// Job completed — flat payload, resultUrl is a relative path
2{
3 "event": "job.completed",
4 "jobId": "job_web_7a91bcd3",
5 "type": "WEB",
6 "status": "completed",
7 "resultUrl": "/jobs/job_web_7a91bcd3/result",
8 "timestamp": "2026-06-03T09:21:04Z"
9}
10
11// Job failed
12{
13 "event": "job.failed",
14 "jobId": "job_web_abc123",
15 "type": "WEB",
16 "status": "failed",
17 "resultUrl": "/jobs/job_web_abc123/result",
18 "error": "Navigation timeout after 60000ms",
19 "timestamp": "2026-06-03T09:22:01Z"
20}
21
22// resultUrl is RELATIVE — fetch it against the API base URL with your API key
23// to get the actual screenshot(s):
24// GET https://api.screenshotfreeapi.com/jobs/job_web_7a91bcd3/result
25// Authorization: Bearer <your sfa_... API key>Event types
| Event | Triggered when |
|---|---|
job.completed | Screenshot captured and uploaded successfully |
job.failed | Job failed after all 3 retry attempts |
Expected response
Your endpoint must respond with HTTP 2xx within 10 seconds. Any other status (or a timeout) is treated as a delivery failure and the webhook will be retried. See for the retry schedule.