Scheduling API

Instagram scheduling API

Queue a post for Instagram through the same call you use for every other network, with Instagram's real rules checked before it is queued rather than at the moment it fires.

Scheduling to Instagram

Send the post with a scheduledAt and it is queued. Credits are spent when it publishes, not when you schedule it, so a queue you never fire costs nothing.

curl -X POST https://api.postlake.dev/v1/posts \
  -H "Authorization: Bearer $POSTLAKE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "text": "Ready when you are",
    "accounts": ["acc_…"],
    "scheduledAt": "2026-09-01T07:00:00",
    "timezone": "Europe/London"
  }'

That fires at 7am London, through the clock change, because the zone travels with the post instead of being flattened into UTC by whoever wrote the integration. Sending a local time with a trailing Z is the single most common scheduling bug there is: the post goes out an hour off for half the year.

Instagram's real limits

These come from the same registry the publish path validates against, so nothing here can promise something the API would refuse.

Caption limit2200 characters
Mediaat least one image or video is required, up to 10 images, 1 video, video up to 15 minutes
Daily limit100 posts a day
PublishingSynchronous. The result is known when the call returns.
Editing a queued postYes, until it fires
CancellingYes, until it fires

Instagram-specific settings you can send with a scheduled post: shareToFeed, locationId, collaborators, thumbOffset.

It is checked when you schedule, not at 7am

A queued post that turns out to be invalid is the worst failure a scheduler has, because nobody is watching when it happens. So the same checks that run on a live publish run when you queue it: media rules, caption length, the network's own option values, and whether the connection is still alive. A post Instagram would refuse comes back as an error now, with the field at fault and the fix, rather than as silence tomorrow morning.

If it does fail at fire time, for something only Instagram could know, the failure reaches you by webhook and in the daily summary, and nothing is charged for it.

Common questions

Can I schedule Instagram posts through an API?

Yes. Send a scheduledAt with the post and PostLake queues it, then publishes it at that moment. You can edit or cancel it at any point before it fires, and you are only charged when it actually publishes.

How do I schedule in my own timezone?

Pass timezone as an IANA name alongside a naive scheduledAt, for example Europe/London with 2026-09-01T07:00:00. The stored fire time is UTC, but the zone is kept so the post survives a clock change and lists show the local time you meant.

How many times a day can I post to Instagram?

Instagram allows around 100 posts a day. PostLake tells you the limit through GET /v1/platforms rather than making you find out by being refused.

Can an AI agent schedule the post instead?

Yes. Over the hosted MCP server it is the create_post tool with the same scheduledAt. The agent authorises with OAuth, so no API key is pasted into a chat, and you can cap what it may do: which brands, which networks, and how much in a day.

Related