logo
Schedulin Developers

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 .