Skip to main content

How webhooks work

Register an HTTPS endpoint and Framelane will POST a signed JSON payload whenever a job event occurs.
Framelane  →  POST your-endpoint  →  200 OK  ✓
                                   →  non-2xx  →  retry schedule
Each webhook delivery is a new HTTP POST with a signed body. Your endpoint must respond with 2xx within 10 seconds or the delivery is marked failed and queued for retry.

Registering a webhook

curl -X POST https://api.framelane.io/v1/webhooks \
  -H "Authorization: Bearer $FRAMELANE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://yourapp.com/hooks/framelane",
    "events": ["render.completed", "render.failed", "task.completed"]
  }'
Response — the signing secret is returned only once:
{
  "id": "wh_01J...",
  "url": "https://yourapp.com/hooks/framelane",
  "events": ["render.completed", "render.failed", "task.completed"],
  "enabled": true,
  "secret": "whsec_..."
}
Store the secret securely — it’s used to verify signatures.

Per-request webhooks

You can override workspace webhooks for a single job by including webhook_url in the request body:
{
  "source_url": "...",
  "webhook_url": "https://yourapp.com/hooks/framelane?job_ref=123"
}

Endpoints

MethodPathDescription
POST/v1/webhooksRegister a webhook endpoint
GET/v1/webhooksList all webhook endpoints
GET/v1/webhooks/{id}Get a webhook
PATCH/v1/webhooks/{id}Update URL, events, or enabled state
DELETE/v1/webhooks/{id}Delete a webhook
POST/v1/webhooks/{id}/testSend a webhook.test event
POST/v1/webhooks/{id}/rotate-secretRotate the signing secret
GET/v1/webhooks/{id}/deliveriesList delivery attempts
POST/v1/webhooks/{id}/deliveries/{did}/retryManually retry a delivery