Social Media Scheduling API

Schedule content across every major platform with a single API call. Set a time, pick a timezone, and Onepostly delivers your posts at the exact moment.

InstagramFacebookTikTokYouTubeXThreadsLinkedInReddit+ more

No credit card required

Schedule a Post (cURL)
curl -X POST https://api.onepostly.com/v1/posts \
-H "x-api-key: op_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"text": "Ship once. Post everywhere.",
"mediaKind": "image",
"mediaUrls": ["https://cdn.example.com/launch.png"],
"scheduledFor": "2026-07-16T09:00:00",
"timezone": "America/New_York",
"destinations": [
{ "connectionId": "conn_x_123" },
{ "connectionId": "conn_ig_456" }
]
}'

Supported Platforms

Key Features

Everything you need to add timezone-aware scheduling to your product without owning queues or platform timing logic.

Cross-Platform Scheduling

Schedule the same content to X, Instagram, Facebook, and Threads in one request. Each destination gets the right formatting.

Timezone-Aware Delivery

Pass an IANA timezone like America/New_York. Onepostly interprets scheduledFor as local time and delivers at that moment.

Rich Media Scheduling

Schedule text, images, videos, and multi-image posts. Media rules are validated per destination when you create the job.

Reliable Delivery Queue

Due posts move into the publish queue automatically. Retries and per-destination status keep delivery predictable in production.

Manage Scheduled Posts

List scheduled jobs, inspect status, and cancel before release with DELETE /v1/posts/:id when plans change.

Simple API Key Auth

Authenticate with x-api-key. Connect accounts once via OAuth, then schedule by connection ID.

Schedule Webhooks

Get notified when posts are scheduled, published, or fail so your product stays in sync without polling.

Multiple Social Accounts

Connect multiple accounts per platform and target each with its own connection ID in the same payload.

How it works

Ship scheduling in 3 steps

Sign up, connect accounts, and schedule with one endpoint.

1

Create an API key

Create a workspace, generate an API key from the dashboard, and authenticate every request with x-api-key.

2

Connect social accounts

Complete OAuth for each destination account. Onepostly stores and refreshes tokens so you only pass connection IDs.

3

Schedule with timezone

POST /v1/posts with scheduledFor and an IANA timezone. Onepostly queues the job and publishes when the local time arrives.

Why developers choose Onepostly

No cron jobs to maintain

Skip building queues, timezone math, and per-platform release logic. Onepostly runs the schedule pipeline for you.

Built for production delivery

Due posts enqueue with retries and clear per-destination status, so your product can show what is waiting and what failed.

Scales with your workspace

Start on Free, then move to Growth or Scale as you connect more accounts. Your schedule integration stays the same.

Great developer experience

REST docs, OpenAPI, and copy-paste cURL examples. Know when a post is queued, live, or failed without checking status endpoints.

Transparent pricing

Simple plan limits for connected accounts. Scheduling is included. X actions debit a prepaid wallet at X list prices.

Platform changes handled for you

When social APIs change, Onepostly updates the adapters. Your schedule calls keep the same shape.

Code Examples

Schedule a Post (cURL)
curl -X POST https://api.onepostly.com/v1/posts \
-H "x-api-key: op_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"text": "Ship once. Post everywhere.",
"mediaKind": "image",
"mediaUrls": ["https://cdn.example.com/launch.png"],
"scheduledFor": "2026-07-16T09:00:00",
"timezone": "America/New_York",
"destinations": [
{ "connectionId": "conn_x_123" },
{ "connectionId": "conn_ig_456" }
]
}'
Cancel a Scheduled Post
curl -X DELETE https://api.onepostly.com/v1/posts/POST_ID \
-H "x-api-key: op_YOUR_KEY"
 
# Response:
# {
# "id": "POST_ID",
# "status": "cancelled",
# "scheduledFor": null,
# "destinations": [
# { "connectionId": "conn_x_123", "status": "cancelled" },
# { "connectionId": "conn_ig_456", "status": "cancelled" }
# ]
# }
 

Frequently asked questions

Timezone, multi-platform queues, cancel behavior, and everything else about scheduling through Onepostly.

Schedule up to one year ahead. Pass a timezone-naive local datetime in scheduledFor and an IANA timezone such as America/New_York or Europe/Berlin.

Yes. Include multiple destinations in one POST /v1/posts request. Each connection gets the same schedule and Onepostly delivers when the local time arrives.

Any valid IANA timezone. If timezone is omitted, Onepostly defaults to UTC. Do not send Z or a numeric offset on scheduledFor.

Yes. DELETE /v1/posts/:id cancels scheduled, queued, or processing posts before they publish. It does not remote-delete content that already went live.

Due posts move into the publish queue with retries and per-destination status. Your product can show which destinations succeeded and which failed.

Yes. Schedule text, images, videos, and multi-image posts. Media rules are validated per destination when you create the job.

Ship once. Post everywhere.