---
title: "Schedule Post"
method: POST
path: "/v1/posts/{id}/schedule"
tags: ["Drafts"]
---

# Schedule Post

`POST /v1/posts/{id}/schedule`

## Request

- Base URL: `https://api.linkedmash.com`
- URL: `https://api.linkedmash.com/v1/posts/{id}/schedule`
- Auth: one of:
  - OAuth 2 (client credentials, token URL `https://api.linkedmash.com/auth/oauth/token`, scopes: `content:write`)
  - HTTP bearer
  - API key in header `linkedmash-api-key`

Schedule a draft for publishing now, at the next open slot, or at a specific time. Requires a paid Premium or Lifetime plan.

POST /v1/posts/{id}/schedule takes an existing draft and either publishes it immediately or places it in the posting queue. publish_at drives the behaviour: 'now' publishes straight to LinkedIn, 'next-slot' resolves the next free slot from the account's posting schedule, and an ISO-8601 timestamp schedules that exact time.

timezone is an IANA name and is required for everything except 'now', because a wall-clock time without a zone is ambiguous. Media can be attached at schedule time with post_type, media_url and media_mime_type if it was not attached to the draft.

## Path parameters

- `id` string, required

## Request body

- object
  - `publish_at` union, required: 'now', 'next-slot', or an ISO-8601 timestamp.
    - 'now' | 'next-slot'
    - string: ISO-8601 local or offset timestamp, interpreted with the timezone field.
  - `timezone` string: IANA timezone. Required unless publish_at is 'now'.
  - `post_type` string: Media type to attach: text, image, video, or pdf.
  - `media_url` string, uri: Public URL of an image, video, or PDF to attach.
  - `media_mime_type` string: MIME type of the attached media (e.g., 'image/png').

## Response `201`

Successful response.

- object
  - `status` boolean, required
  - `data` object, required
    - `ok` boolean, required
    - `scheduleId` string, required
    - `runAtUTC` string, date-time, required

## Other responses

- `400`: Bad Request. publish_at missing; timezone missing for a non-'now' publish; empty draft text on 'now'; or no free slot available for 'next-slot'.
- `401`: Unauthorized. The Authorization header is missing or the key is not a valid LinkedMash API key. Create or rotate keys on the API page in your LinkedMash settings.
- `402`: Payment Required. Returned with code SUBSCRIPTION_REQUIRED. The content API requires a Premium or Lifetime plan; Reader and free accounts get this on every /v1/posts, /v1/queue, /v1/schedule, /v1/media and /v1/analytics call.
- `404`: Not Found. No draft with that id on this account.
- `500`: Server Error. Something failed on our side. The body carries message "Failed to schedule post". Retry once; if it persists the request is not the problem.

---

[API](https://skmtc.dev/linkedmash/apis/linkedmash-api.md) · [All operations](https://skmtc.dev/linkedmash/apis/linkedmash-api/llms.txt) · [OpenAPI document](https://skmtc.dev/linkedmash/apis/linkedmash-api/revisions/eef45d6fbea3?raw)
