---
title: "Publish or schedule a draft post"
method: POST
path: "/social-posts/{id}/publish"
tags: ["Posts"]
---

# Publish or schedule a draft post

`POST /social-posts/{id}/publish`

## Request

- Base URL: `https://post.adaptlypost.com/post/api/v1`
- URL: `https://post.adaptlypost.com/post/api/v1/social-posts/{id}/publish`
- Auth: HTTP bearer

Scheduling the draft for a future `scheduledAt` also needs `posts.schedule`, and publishing it now also needs `posts.publish`, so a key that holds only `posts.draft` cannot publish; the call answers 403 `permission_denied`. Requires the `posts.draft` permission.

## Path parameters

- `id` string, required

## Headers

- `X-Workspace-Id` string

## Request body

- PublishDraftRequest
  - `scheduledAt` string, date-time
  - `timezone` string, required

## Response `201`

Publish result

- object
  - `postId` string
  - `queuedPlatforms` PlatformType[]
  - `isScheduled` boolean
  - `scheduledAt` string, date-time

## Other responses

- `400`: Post is not a draft
- `401`: Invalid or missing API key
- `403`: The key's role does not hold `posts.draft`
- `404`: Post not found
- `429`: Rate limit exceeded

---

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