Create webhook
/v1/webhooksRegisters an https endpoint of yours to receive events. The signing secret comes back once, in this response, and is never shown again, so store it before you do anything else.
- Store the secret now. Listing webhooks later returns only a masked prefix.
- Credits:
- Free
- Rate limit:
- Default tier, 2/s and 50/min
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| url | body | string | Yes | Public https URL that will receive POST deliveries. |
| events | body | string[] | Yes | Events to subscribe to. Non-empty. One or more of: export.completed, export.failed, autoclip.completed, autoclip.failed, speech_enhancer.completed, speech_enhancer.failed, tracker.refreshed, tracker.refresh_failed, tracker.paused, tracker.alert, credits.low. |
Request
curl -X POST "https://api.crayo.ai/v1/webhooks" \
-H "Authorization: Bearer $CRAYO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/hooks/crayo",
"events": [
"export.completed",
"export.failed"
]
}'Response
{
"success": true,
"webhook": {
"id": "cm7x1p4990001abcd",
"url": "https://example.com/hooks/crayo",
"events": [
"export.completed",
"export.failed"
],
"disabled": false,
"created_at": "2026-08-21T13:58:20.000Z",
"secret": "crayo_whsec_8Kd2mQ1rXv7pLb0aY3sTuW9e"
}
}Errors
- 400VALIDATION_ERRORThe URL is not a valid public https address, or an event name is unknown.
- 401MISSING_API_KEYNo Authorization header was sent, or it does not carry a crayo_sk_ key.
- 401UNAUTHORIZEDThe key sent is malformed, expired, or revoked.
- 409WEBHOOK_LIMIT_REACHEDYou already have 5 endpoints registered.
- 429RATE_LIMITEDOver the rate limit. Wait Retry-After seconds.
- 500SERVER_ERRORSomething failed on our side. Retry with backoff.