Skip to content

How to schedule a post ​

Add scheduledAt, an ISO 8601 date-time in the future, to any content request. Socifyr queues the job and publishes at that time. Scheduled posts have the status pending until they run.

Scheduling needs a paid plan. On the free plan the API returns Scheduling is not available on your current plan. Upgrade to continue. See limits.

How do I schedule a post? ​

text
1. Sidebar > New Post. Select accounts and write the post.
2. Click Schedule, choose "Schedule for later" and pick the date and time.
3. Click Schedule to confirm.
Scheduled posts show on the Calendar and in Content.
bash
socifyr post "Deploy window opens at 9am" --to linkedin-myhandle --at 2026-12-01T09:00:00-05:00
typescript
const upload = await socifyr.uploads.text({
  connections: ['linkedin-myhandle'],
  text: 'Deploy window opens at 9am',
  scheduledAt: '2026-12-01T09:00:00-05:00',
  timezone: 'America/New_York',
})
python
res = client.uploads.text(
    connections=["linkedin-myhandle"],
    text="Deploy window opens at 9am",
    scheduled_at="2026-12-01T09:00:00-05:00",
    timezone="America/New_York",
)
print(res["message"], res["scheduledAt"])  # "Upload scheduled", ...
bash
curl -X POST https://api.socifyr.com/api/content/text \
  -H "Authorization: Bearer $SOCIFYR_API_KEY" \
  -H "X-Workspace-Id: $SOCIFYR_WORKSPACE_ID" \
  -H "Content-Type: application/json" \
  -d '{
    "connections": ["linkedin-myhandle"],
    "text": "Deploy window opens at 9am",
    "scheduledAt": "2026-12-01T09:00:00-05:00",
    "timezone": "America/New_York"
  }'
json
{
  "tool": "schedule_post",
  "arguments": {
    "caption": "Deploy window opens at 9am",
    "connections": ["linkedin-myhandle"],
    "scheduledAt": "2026-12-01T14:00:00Z"
  }
}

Prompt for your agent: "Schedule 'Deploy window opens at 9am' on LinkedIn for 9am Eastern on December 1." Agents should send UTC or an explicit offset; the MCP tool takes scheduledAt as a plain ISO string.

Images and videos schedule the same way: add scheduledAt to post_image, post_video, photos() or video().

What does the response look like? ​

A scheduled post returns requestId and the post ID. With async: true (the Python SDK always sends it) you also get a message:

json
{
  "success": true,
  "data": {
    "success": true,
    "requestId": "d0f5e5a8-2b3a-4e33-8d91-0b1d2c3e4f50",
    "message": "Upload scheduled",
    "scheduledAt": "2026-12-01T14:00:00.000Z",
    "totalChannels": 1
  }
}

How do I reschedule a scheduled post? ​

Update scheduledAt on the post. Rescheduling re-syncs the queued job, and the new time must be in the future. Only drafts and not-yet-published scheduled posts can be edited.

bash
socifyr edit 6a05032a84584482ace13d5f --at 2026-12-02T09:00:00Z
typescript
await socifyr.uploads.update('6a05032a84584482ace13d5f', {
  scheduledAt: '2026-12-02T09:00:00Z',
})
bash
curl -X PATCH https://api.socifyr.com/api/content/6a05032a84584482ace13d5f \
  -H "Authorization: Bearer $SOCIFYR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"scheduledAt": "2026-12-02T09:00:00Z"}'
json
{
  "tool": "update_post",
  "arguments": { "postId": "6a05032a84584482ace13d5f", "scheduledAt": "2026-12-02T09:00:00Z" }
}

The Python SDK has no update method. Use REST, TypeScript, the CLI or MCP.

How do I list scheduled posts? ​

Scheduled posts are stored with status pending.

typescript
const { data, meta } = await socifyr.uploads.list({ status: 'pending', limit: 50 })
python
res = client.uploads.list(status="pending", limit=50)
bash
curl "https://api.socifyr.com/api/content?status=pending&limit=50" \
  -H "Authorization: Bearer $SOCIFYR_API_KEY"
json
{ "tool": "list_posts", "arguments": { "status": "scheduled", "limit": 50 } }

The MCP tool accepts scheduled as an alias for pending. The CLI has no list command; use the calendar or REST.

How do I cancel a scheduled post? ​

Delete it. A post that is already processing or publishing returns 409.

bash
curl -X DELETE https://api.socifyr.com/api/content/6a05032a84584482ace13d5f \
  -H "Authorization: Bearer $SOCIFYR_API_KEY"
typescript
await socifyr.uploads.cancel('6a05032a84584482ace13d5f')

The CLI, the Python SDK and MCP have no cancel command today.

What errors can I get, and how do I fix them? ​

ErrorStatusFix
Scheduling is not available on your current plan. Upgrade to continue.403Upgrade, or publish immediately.
Scheduled time must be in the future (when editing a scheduled post, or scheduledAt must be in the future in a bulk row)400Send a later scheduledAt.
Validation error on scheduledAt400Use a full ISO 8601 string such as 2026-12-01T09:00:00Z.
409 on update409The post is already publishing or published and cannot be edited.

FAQ ​

Which time zone does scheduledAt use? ​

An explicit offset or Z in the string wins. The timezone field is an IANA name used to interpret the value and defaults to UTC.

Can I schedule recurring posts? ​

There is no built-in recurrence. Run your own cron and schedule each occurrence, or generate many rows and use bulk CSV scheduling.

Does a scheduled post keep working if the token expires? ​

Reconnecting updates the connection in place, so the slug and scheduled posts stay valid. See Connect, refresh and reconnect accounts.

Next steps ​