Skip to content

Event list

EventFires when
upload.createdA post is created (draft, scheduled, or immediate)
upload.startedProcessing begins after queue pickup
upload.completedAll channels succeeded
upload.failedAll channels failed
upload.partial_failureSome channels succeeded, some failed
channel.publishedA specific platform succeeded
channel.failedA specific platform failed

Payload shape

All events share a common envelope:

json
{
  "id": "evt_<uuid>",
  "event": "upload.completed",
  "createdAt": "2026-05-13T23:03:06.267Z",
  "data": { ... }
}

data varies per event.

upload.completed

json
{
  "id": "evt_...",
  "event": "upload.completed",
  "createdAt": "...",
  "data": {
    "uploadId": "6a05032a84584482ace13d5f",
    "requestId": "...",
    "status": "completed",
    "type": "photo",
    "channels": [
      {
        "platform": "instagram",
        "connectionSlug": "instagram-mybrand",
        "result": {
          "status": "success",
          "postId": "...",
          "postUrl": "https://instagram.com/p/..."
        }
      }
    ]
  }
}

upload.failed

json
{
  "event": "upload.failed",
  "data": {
    "uploadId": "...",
    "status": "failed",
    "channels": [
      {
        "platform": "x",
        "result": {
          "status": "failed",
          "error": "rate limit exceeded"
        }
      }
    ]
  }
}

upload.partial_failure

Same shape as upload.completed, but channels contains a mix of success and failed.

channel.published

json
{
  "event": "channel.published",
  "data": {
    "uploadId": "...",
    "platform": "linkedin",
    "connectionSlug": "linkedin-myhandle",
    "postId": "...",
    "postUrl": "https://linkedin.com/feed/update/..."
  }
}

channel.failed

json
{
  "event": "channel.failed",
  "data": {
    "uploadId": "...",
    "platform": "x",
    "connectionSlug": "x-myhandle",
    "error": "Token has expired"
  }
}

Subscribing to specific events

When registering a webhook, list only the events you want:

typescript
await socifyr.webhooks.create({
  url: 'https://...',
  events: ['channel.failed'], // narrow subscription
})