Schedule via API

Schedule social posts
with one API call.

Scheduling is one field on the publish call, not a second product. Same addressing and media as an immediate post. Pass timezone (IANA) with a naive local time, or send UTC with a trailing Z. Invalid media is refused when you schedule, not at fire time. The dashboard has a calendar of the queue. For the agent loop (draft a week, approve, then fire), see the content calendar guide.

Get started free →

Free tier. No card · one API for every network · full MCP access

In shortAdd scheduledAt (UTC with a trailing Z, or a naive local time plus timezone) to the same /v1/posts body. Credits charge when it fires. Invalid media is refused at create. Edit/cancel while state is scheduled.

When this guide is for you

You want calendar-style publishing from code or an agent without standing up a separate scheduler product.

Before you start

Same setup the docs quickstart uses. Do this once:

  1. Sign up at app.postlake.dev and verify your email (unlocks free credits).
  2. On Channels, create a profile (e.g. my-brand) and connect at least one account. Bluesky is the fastest first channel: no app review. Instagram/TikTok/Facebook need each platform's review before API posting.
  3. Account menu → API Keys → create a key (sk_live_…). It shows once; treat it like a password.

Schedule a post

Same call you'd use to publish now, plus scheduledAt (UTC, or a local time with timezone):

curl -X POST https://api.postlake.dev/v1/posts \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: friday-recap-001" \
  -d '{
    "text": "Friday recap",
    "profile": "my-brand",
    "scheduledAt": "2026-08-13T07:00:00",
    "timezone": "Europe/London"
  }'

# Response state should be "scheduled" until fire time.

Make it work

Tool-specific glue on top of the shared setup above:

  1. Build the same body you'd use to publish now (text + profile / accounts).
  2. Add scheduledAt. UTC with a trailing Z, or a naive local time together with timezone (IANA, e.g. Europe/London).
  3. Call POST /v1/posts/validate first for TikTok photo posts (JPEG/WebP, max 1080×1920; PNG is converted to JPEG with a warning).
  4. Expect state: "scheduled". At fire time it moves to processing then published / partial / failed.
  5. Before it fires: PATCH /v1/posts/{id} to edit, DELETE /v1/posts/{id} to cancel.
  6. Subscribe to webhooks (or poll) for fire-time results instead of assuming success at schedule time.

Read the response (don't skip this)

You get one Post with an overall state and a targets[] array. One entry per account. Always check each target; partial success is normal.

{
  "id": "post_a1b2c3",
  "state": "partial",
  "targets": [
    { "platform": "bluesky",  "state": "published", "url": "https://bsky.app/…" },
    { "platform": "linkedin", "state": "failed",
      "error": { "type": "invalid_request", "message": "…", "retryable": false } }
  ]
}

Where the post goes

Same rules as the docs. Pick one addressing style:

See Publishing: where to post.

Do more (same API)

Pitfalls specific to this path

Prefer an assistant over Schedule posts via API code? Point it at MCP (https://api.postlake.dev/mcp). Prefer the dashboard? Use Quickstart → No code.

Common questions

How do I schedule a social media post with an API?

POST /v1/posts with scheduledAt. Send UTC with a trailing Z, or a naive local time plus timezone (IANA, e.g. Europe/London). PostLake queues it and publishes at that time. See docs → Scheduling.

What time format does scheduledAt use?

ISO-8601. UTC with a trailing Z, or a naive local time together with timezone. Unparseable values and naive times without a zone get a clear 400.

Can I cancel or change a scheduled post?

Yes, while state is scheduled: PATCH /v1/posts/{id} to edit, DELETE /v1/posts/{id} to cancel.

Do I need Postiz or another calendar app for this?

No. scheduledAt plus timezone is the calendar. The dashboard has a month view of the queue. If an agent is filling the week, use drafts so nothing ships until you approve. Postiz is the right pick only if you want to live in a drag-and-drop calendar UI or self-host the app.

Can an AI agent fill the calendar?

Yes. Point it at https://api.postlake.dev/mcp and ask it to schedule the week. Walkthrough: the agent content calendar guide.

Go deeper in the docs

These guides stay short on purpose. Canonical behaviour lives here:

Also: Media · Errors · MCP · Analytics

Related guides

All guides · Full docs · llms.txt · Markdown

Stuck? The docs are the source of truth, start at Scheduling.

Open the dashboard →