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?
| Status | Meaning |
|---|---|
draft | Saved, not published. |
pending_approval | Waiting for a reviewer. See approvals. |
pending | Queued, or scheduled for a future time. |
queued, processing, publishing | In flight. |
completed | Every channel published. |
partial_failure | Some channels published, some did not. |
failed | Every channel failed. |
Each channel has its own result.status: pending, success or failed.
How do I check status?
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.socifyr status 6a05032a84584482ace13d5f # one check
socifyr status 6a05032a84584482ace13d5f --wait # poll until it finishesconst 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)
}status = client.uploads.get_status("b3f1c0de-7a52-4d0e-9a7b-5c2f1e6a9d10") # requestId or uploadId
for ch in status["channels"]:
print(ch["platform"], ch["result"]["status"])curl "https://api.socifyr.com/api/content/status?requestId=6a05032a84584482ace13d5f" \
-H "Authorization: Bearer $SOCIFYR_API_KEY" \
-H "X-Workspace-Id: $SOCIFYR_WORKSPACE_ID"{ "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?
{
"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.
socifyr retry 6a05032a84584482ace13d5f --waitconst ack = await socifyr.uploads.retry('6a05032a84584482ace13d5f')
console.log(ack.retriedChannels) // number of channels re-queued
await socifyr.uploads.waitForCompletion('6a05032a84584482ace13d5f')client.uploads.retry("6a05032a84584482ace13d5f")curl -X POST https://api.socifyr.com/api/content/6a05032a84584482ace13d5f/retry \
-H "Authorization: Bearer $SOCIFYR_API_KEY"{ "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.error | Cause | Fix |
|---|---|---|
Starts with reconnect_required: <slug> | The platform rejected the saved credentials. | Refresh or reconnect, then retry. |
| Mentions rate limit, 429 or daily limit | The platform's posting window is full. | Wait for the window to reset, then retry. Daily caps are in platform constraints. |
| Mentions permission, scope or 403 | The app lacks a platform permission. | Reconnect and grant all permissions. Some are pending platform review. |
| Mentions duplicate | The platform rejected repeated content. | Change the text, then post again. |
| Mentions aspect ratio, duration or dimension | Media does not fit the format. | Re-encode, then post again. |
| Mentions size or 413 | File over the platform limit. | Compress. See platform constraints. |
| Mentions timeout, network or 5xx | Temporary 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?
| Error | Status | Meaning |
|---|---|---|
Cannot retry an upload with status "completed" | 409 | Only failed or partial_failure uploads retry. |
No failed channels to retry | 400 | Nothing is failed or pending. |
Upload not found | 404 | Wrong 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.