For AI agents: a documentation index is available at /llms.txt. Every guide and example is also available as markdown by adding .md to its URL.
Create a scheduled post
Set action: "schedule" and an ISO 8601 scheduledAt timestamp (UTC, or with an offset).
Each media item needs a url — any publicly reachable image or video URL works.
scheduledAt is required with action: "schedule" and must be in the future — a missing
or past time is rejected with 422. The examples use a fixed future date; in practice
compute one, e.g. new Date(Date.now() + 60 * 60 * 1000).toISOString() for an hour from
now.
curl -X POST https://api.schedulin.app/v0/posts \ -H "x-api-key: $SCHEDULIN_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "socialAccountId": "acc_123", "caption": "Weekend sale starts now ☀️", "media": [{ "url": "https://www.schedulin.app/schedulin-post-preview-light.png" }], "action": "schedule", "scheduledAt": "2030-01-15T15:00:00Z" }'
import { SchedulinClient } from "@schedulin/sdk"; const client = new SchedulinClient({ apiKey: process.env.SCHEDULIN_API_KEY! }); await client.posts.create({ socialAccountId: "acc_123", caption: "Weekend sale starts now ☀️", media: [{ url: "https://www.schedulin.app/schedulin-post-preview-light.png" }], action: "schedule", scheduledAt: "2030-01-15T15:00:00Z", });
import os from datetime import datetime, timezone from schedulin import Schedulin client = Schedulin(api_key=os.environ["SCHEDULIN_API_KEY"]) client.posts.create( social_account_id="acc_123", caption="Weekend sale starts now ☀️", media=[{"url": "https://www.schedulin.app/schedulin-post-preview-light.png"}], action="schedule", scheduled_at=datetime(2030, 1, 15, 15, 0, tzinfo=timezone.utc), )
TIP
To take the channel's next free queue slot instead of a fixed time, use and omit . See .