API resource
Webhook endpoints
Create a webhook endpoint
/v1/webhooksRegisters a URL for Creator OS to POST events to. The signing secret is returned only in this response, so store it now.
Body
urlhttps urlrequiredYour public HTTPS endpoint.
eventsstring[]Event types to receive. Empty or omitted means all events.
descriptionstringA note for your own reference.
curl -X POST "https://creatoros-production-5658.up.railway.app/v1/webhooks" \
-H "Authorization: Bearer $CREATOROS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/creatoros/webhooks",
"events": [
"post.published",
"post.failed",
"comment.received",
"message.received"
]
}'{
"id": "9b1f6c2e-4d7a-4c8e-9f21-6a3b5d7e8c90",
"url": "https://example.com/creatoros/webhooks",
"events": [
"post.published",
"post.failed",
"comment.received",
"message.received"
],
"description": null,
"is_active": true,
"last_status": null,
"last_error": null,
"last_delivered_at": null,
"failure_count": 0,
"created_at": "2026-09-25T18:52:00.000Z",
"secret": "whsec_2Rk9LzT4nVs1Pc8Hf3Jd6Gm5Ea2Uo7K"
}List webhook endpoints
/v1/webhooksYour endpoints with their last delivery status, plus the full list of event types.
curl "https://creatoros-production-5658.up.railway.app/v1/webhooks" \
-H "Authorization: Bearer $CREATOROS_API_KEY"{
"webhooks": [
{
"id": "9b1f6c2e-4d7a-4c8e-9f21-6a3b5d7e8c90",
"url": "https://example.com/creatoros/webhooks",
"events": [
"post.published"
],
"is_active": true,
"last_status": 200,
"last_error": null,
"last_delivered_at": "2026-09-25T19:03:11.000Z",
"failure_count": 0,
"created_at": "2026-09-25T18:52:00.000Z"
}
],
"events": [
"post.scheduled",
"post.published",
"post.failed",
"post.partial",
"post.cancelled",
"account.connected",
"account.disconnected",
"comment.received",
"message.received",
"message.sent",
"message.delivered",
"message.read",
"message.failed",
"webhook.test"
]
}Update a webhook endpoint
/v1/webhooks/{webhookId}Change the URL, the events it receives or its note, or pause deliveries with is_active: false. Re-enabling resets failure_count. The signing secret stays the same; to get a new one, delete the endpoint and create it again.
Path parameters
webhookIdstringrequiredThe endpoint id.
Body
urlhttps urlNew public HTTPS endpoint.
eventsstring[]Replacement event list. Empty means all events.
descriptionstringNew note. null clears it.
is_activebooleanfalse pauses deliveries; true resumes them.
curl -X PATCH "https://creatoros-production-5658.up.railway.app/v1/webhooks/9b1f6c2e-4d7a-4c8e-9f21-6a3b5d7e8c90" \
-H "Authorization: Bearer $CREATOROS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"events": [
"comment.received",
"message.received"
],
"is_active": true
}'{
"id": "9b1f6c2e-4d7a-4c8e-9f21-6a3b5d7e8c90",
"url": "https://example.com/creatoros/webhooks",
"events": [
"comment.received",
"message.received"
],
"description": null,
"is_active": true,
"last_status": 200,
"last_error": null,
"last_delivered_at": "2026-09-25T19:03:11.000Z",
"failure_count": 0,
"created_at": "2026-09-25T18:52:00.000Z"
}Send a test event
/v1/webhooks/{webhookId}/testDelivers a signed webhook.test event and returns the endpoint with the delivery result.
Path parameters
webhookIdstringrequiredThe endpoint id.
curl -X POST "https://creatoros-production-5658.up.railway.app/v1/webhooks/9b1f6c2e-4d7a-4c8e-9f21-6a3b5d7e8c90/test" \
-H "Authorization: Bearer $CREATOROS_API_KEY"{
"id": "9b1f6c2e-4d7a-4c8e-9f21-6a3b5d7e8c90",
"url": "https://example.com/creatoros/webhooks",
"is_active": true,
"last_status": 200,
"last_error": null,
"failure_count": 0
}List deliveries
/v1/webhooks/{webhookId}/deliveriesEvery delivery attempt to this endpoint in the last 30 days, newest first: the event, the HTTP status your server answered, any error, and how long it took. Use it to debug an endpoint that isn’t receiving events.
Path parameters
webhookIdstringrequiredThe endpoint id.
Query parameters
limitinteger1 to 100. Defaults to 25.
beforeISO 8601created_at of the last delivery on the previous page.
failedbooleantrue to list failed deliveries only.
curl "https://creatoros-production-5658.up.railway.app/v1/webhooks/9b1f6c2e-4d7a-4c8e-9f21-6a3b5d7e8c90/deliveries" \
-H "Authorization: Bearer $CREATOROS_API_KEY"{
"deliveries": [
{
"id": "5b8e0c1a-7d2f-4e9b-a3c6-1f0d9e8b7a65",
"event_id": "evt_4kZt9Qm2",
"event_type": "comment.received",
"status": 500,
"error": "http_500",
"duration_ms": 212,
"redelivery_of": null,
"created_at": "2026-09-28T18:04:11.000Z"
}
],
"has_more": false
}Resend a delivery
/v1/webhooks/{webhookId}/deliveries/{deliveryId}/redeliverSends the same event again, with a fresh timestamp and signature. The new attempt is logged with redelivery_of set to the original.
Path parameters
webhookIdstringrequiredThe endpoint id.
deliveryIdstringrequiredThe delivery id from List deliveries.
curl -X POST "https://creatoros-production-5658.up.railway.app/v1/webhooks/9b1f6c2e-4d7a-4c8e-9f21-6a3b5d7e8c90/deliveries/5b8e0c1a-7d2f-4e9b-a3c6-1f0d9e8b7a65/redeliver" \
-H "Authorization: Bearer $CREATOROS_API_KEY"{
"id": "9c2d4f6a-1b3e-4a5c-8d7e-0f1a2b3c4d5e",
"event_id": "evt_4kZt9Qm2",
"event_type": "comment.received",
"status": 200,
"error": null,
"duration_ms": 148,
"redelivery_of": "5b8e0c1a-7d2f-4e9b-a3c6-1f0d9e8b7a65",
"created_at": "2026-09-28T18:10:02.000Z"
}Delete a webhook endpoint
/v1/webhooks/{webhookId}Stops deliveries to this endpoint.
Path parameters
webhookIdstringrequiredThe endpoint id.
curl -X DELETE "https://creatoros-production-5658.up.railway.app/v1/webhooks/9b1f6c2e-4d7a-4c8e-9f21-6a3b5d7e8c90" \
-H "Authorization: Bearer $CREATOROS_API_KEY"{
"ok": true
}