API resource

Webhook endpoints

Create a webhook endpoint

POST/v1/webhooks

Registers a URL for Creator OS to POST events to. The signing secret is returned only in this response, so store it now.

Body

urlhttps urlrequired

Your public HTTPS endpoint.

eventsstring[]

Event types to receive. Empty or omitted means all events.

descriptionstring

A 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"
    ]
  }'
Response 201
{
  "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

GET/v1/webhooks

Your 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"
Response 200
{
  "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

PATCH/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

webhookIdstringrequired

The endpoint id.

Body

urlhttps url

New public HTTPS endpoint.

eventsstring[]

Replacement event list. Empty means all events.

descriptionstring

New note. null clears it.

is_activeboolean

false 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
  }'
Response 200
{
  "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

POST/v1/webhooks/{webhookId}/test

Delivers a signed webhook.test event and returns the endpoint with the delivery result.

Path parameters

webhookIdstringrequired

The 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"
Response 200
{
  "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

GET/v1/webhooks/{webhookId}/deliveries

Every 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

webhookIdstringrequired

The endpoint id.

Query parameters

limitinteger

1 to 100. Defaults to 25.

beforeISO 8601

created_at of the last delivery on the previous page.

failedboolean

true 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"
Response 200
{
  "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

POST/v1/webhooks/{webhookId}/deliveries/{deliveryId}/redeliver

Sends the same event again, with a fresh timestamp and signature. The new attempt is logged with redelivery_of set to the original.

Path parameters

webhookIdstringrequired

The endpoint id.

deliveryIdstringrequired

The 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"
Response 200
{
  "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

DELETE/v1/webhooks/{webhookId}

Stops deliveries to this endpoint.

Path parameters

webhookIdstringrequired

The 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"
Response 200
{
  "ok": true
}