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

EventTriggered when
job.completedScreenshot captured and uploaded successfully
job.failedJob 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.