Skip to content

How to check a post's status and retry failures ​

Call GET /api/content/status?requestId=... (or GET /api/content/:id) to see the overall status and a result for every platform. If the status is failed or partial_failure, call POST /api/content/:id/retry. Retry re-queues only the channels that failed or are still pending, so accounts that already published are not posted twice.

What do the status values mean? ​

StatusMeaning
draftSaved, not published.
pending_approvalWaiting for a reviewer. See approvals.
pendingQueued, or scheduled for a future time.
queued, processing, publishingIn flight.
completedEvery channel published.
partial_failureSome channels published, some did not.
failedEvery channel failed.

Each channel has its own result.status: pending, success or failed.

How do I check status? ​

text
Sidebar > Content > open the post. The detail view shows each account's
result, the post link on success, and the error on failure. It refreshes
while the post is publishing.
bash
socifyr status 6a05032a84584482ace13d5f          # one check
socifyr status 6a05032a84584482ace13d5f --wait   # poll until it finishes
typescript
const status = await socifyr.uploads.getStatus('6a05032a84584482ace13d5f')
// or block until a terminal status (3s interval, 5 minute timeout)
const done = await socifyr.uploads.waitForCompletion('6a05032a84584482ace13d5f')

for (const ch of done.channels) {
  console.log(ch.platform, ch.result?.status, ch.result?.postUrl ?? ch.result?.error)
}
python
status = client.uploads.get_status("b3f1c0de-7a52-4d0e-9a7b-5c2f1e6a9d10")  # requestId or uploadId
for ch in status["channels"]:
    print(ch["platform"], ch["result"]["status"])
bash
curl "https://api.socifyr.com/api/content/status?requestId=6a05032a84584482ace13d5f" \
  -H "Authorization: Bearer $SOCIFYR_API_KEY" \
  -H "X-Workspace-Id: $SOCIFYR_WORKSPACE_ID"
json
{ "tool": "check_post_status", "arguments": { "postId": "6a05032a84584482ace13d5f" } }

requestId accepts either the request ID returned at creation or the upload ID.

Prompt for your agent: "Did my last post go out everywhere?" The agent calls list_posts (newest first) and check_post_status.

What does the status response look like? ​

json
{
  "success": true,
  "data": {
    "requestId": "6a05032a84584482ace13d5f",
    "uploadId": "6a05032a84584482ace13d5f",
    "status": "partial_failure",
    "type": "text",
    "createdAt": "2026-12-01T14:00:00.000Z",
    "channels": [
      {
        "platform": "linkedin",
        "connectionId": "65f3a1b2c3d4e5f6a7b8c9d0",
        "targetName": "My Brand",
        "result": {
          "status": "success",
          "postId": "urn:li:share:7000000000000000000",
          "postUrl": "https://www.linkedin.com/feed/update/urn:li:share:7000000000000000000",
          "publishedAt": "2026-12-01T14:00:03.000Z"
        }
      },
      {
        "platform": "x",
        "connectionId": "65f3a1b2c3d4e5f6a7b8c9d1",
        "targetName": "@myhandle",
        "result": {
          "status": "failed",
          "error": "reconnect_required: x-myhandle — x rejected the saved credentials ..."
        }
      }
    ]
  }
}

How do I retry the failed platforms? ​

Fix the cause first. A retry of a dead token fails again. See the table below.

bash
socifyr retry 6a05032a84584482ace13d5f --wait
typescript
const ack = await socifyr.uploads.retry('6a05032a84584482ace13d5f')
console.log(ack.retriedChannels) // number of channels re-queued
await socifyr.uploads.waitForCompletion('6a05032a84584482ace13d5f')
python
client.uploads.retry("6a05032a84584482ace13d5f")
bash
curl -X POST https://api.socifyr.com/api/content/6a05032a84584482ace13d5f/retry \
  -H "Authorization: Bearer $SOCIFYR_API_KEY"
json
{ "tool": "retry_post", "arguments": { "postId": "6a05032a84584482ace13d5f" } }

In the dashboard, open the post and use Retry failed.

Why did a channel fail, and what do I do? ​

Error in result.errorCauseFix
Starts with reconnect_required: <slug>The platform rejected the saved credentials.Refresh or reconnect, then retry.
Mentions rate limit, 429 or daily limitThe platform's posting window is full.Wait for the window to reset, then retry. Daily caps are in platform constraints.
Mentions permission, scope or 403The app lacks a platform permission.Reconnect and grant all permissions. Some are pending platform review.
Mentions duplicateThe platform rejected repeated content.Change the text, then post again.
Mentions aspect ratio, duration or dimensionMedia does not fit the format.Re-encode, then post again.
Mentions size or 413File over the platform limit.Compress. See platform constraints.
Mentions timeout, network or 5xxTemporary platform problem.Retry in a few minutes.

The dashboard turns these into a plain reason and a hint. The patterns come from humanizePublishError in @socifyr/shared.

What errors does retry itself return? ​

ErrorStatusMeaning
Cannot retry an upload with status "completed"409Only failed or partial_failure uploads retry.
No failed channels to retry400Nothing is failed or pending.
Upload not found404Wrong ID or another workspace.

How do I get notified instead of polling? ​

Create a webhook and subscribe to platform.failed and upload.partial_failure. See Webhooks. Webhooks need the Business plan.

FAQ ​

Is retry safe to call twice? ​

It only touches channels still marked failed or pending, so succeeded channels are left alone.

Why does the CLI exit 0 on a failed post with --wait? ​

--wait reports results and exits non-zero only when the command itself errors. Check the printed status or use --json and read status.

Next steps ​