API reference · Posts
Preview a timezone-aware publishing cadence
POST /v1/posts/cadence/preview
Returns deterministic UTC slots without creating, reserving, or charging for posts. Call POST /v1/posts/validate for each proposed post before creating it. Platform pacing limits remain authoritative at publish time. Ambiguous or nonexistent local times are rejected.
Request
Authenticate with a bearer API key. Agents calling over MCP authorise with OAuth instead and never handle the key.
curl -X POST https://api.postlake.dev/v1/posts/cadence/preview \
-H "Authorization: Bearer $POSTLAKE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"timezone":"Europe/London","startDate":"2026-10-01","days":7,"localTime":"09:00","tracks":[{"id":"main"},{"id":"shorts","staggerMinutes":45}]}'Body
| Field | Type | Required | What it is |
|---|---|---|---|
timezone | string | Yes | IANA timezone, such as Europe/London. |
startDate | string | Yes | |
days | integer | Yes | |
localTime | string | Yes | Local HH:mm start time. |
tracks | array of object | Yes | |
gapMinutes | integer | No | |
occupiedAt | array of string | No | Existing UTC or offset-qualified posts to avoid. No database lookup is performed. |
Response
Read-only slot preview (200).
| Field | Type | Required | What it is |
|---|---|---|---|
timezone | string | Yes | |
slots | array of object | Yes |
Example
{
"timezone": "…",
"slots": [
{
"date": "…",
"track": "…",
"localTime": "…",
"scheduledAt": "…"
}
]
}What it costs
Nothing. This is a read-only preview. It does not create posts, reserve slots, query your calendar, or spend publishing credits. Platform pacing limits still apply when you create and publish each post.
Calling this from an agent
Agents do not call REST. They call tools. Over the hosted MCP server this operation is preview_cadence, and the agent authorises with OAuth so your API key is never pasted into a chat or seen by the model. The reply comes back in the same normalised shape you see above, which is what lets an agent reason about it without a per-network branch.
You control what any one agent may do with it: which brands it may act for, which networks it may reach, how much it may do in a day, and whether it may spend credits you bought up front. See the MCP server.
Errors
Every failure uses one shape: a stable type, a granular code, the field at fault in param, and a plain-language fix. An agent can act on it without a person reading the message. See Errors and retries.
Idempotency-Key.Common questions
Can an AI agent do this without the REST API?
Yes. Over MCP the same job is the preview_cadence tool. The agent authorises with OAuth, so no API key is pasted into a chat or seen by the model, and the answer comes back in the same normalised shape.
Is it safe to retry this call?
Yes. This preview is read-only. It creates no posts, reserves no slots, and spends no credits. Send the same input again to get the same slots while the intended start time remains in the future.
What happens when it fails?
You get one error shape: a stable type, a granular code you can branch on, the offending field in param, and a fix written so an agent can correct itself rather than stop. Full list on Errors and retries.