---
title: "Edit a still-scheduled post: time, text, media, settings, first comment, or the target account (same platform)."
method: PATCH
path: "/api/posts/{id}"
---

# Edit a still-scheduled post: time, text, media, settings, first comment, or the target account (same platform).

`PATCH /api/posts/{id}`

## Request

- Base URL: `https://shapelessai.com`
- URL: `https://shapelessai.com/api/posts/{id}`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://shapelessai.com/api/auth/mcp/authorize`, token URL `https://shapelessai.com/api/auth/mcp/token`, scopes: `write`)

## Path parameters

- `id` string, required

## Request body

- PostPatch
  - `scheduledAt` string, date-time
  - `postText` string
  - `mediaKeys` string[]
  - `settings` object
  - `connectionId` string: Another connected account on the same platform.
  - `firstComment` string, nullable: null clears it.

## Response `200`

OK

- Post
  - `id` string, required
  - `connectionId` string, nullable
  - `platform` string, nullable
  - `postText` string, required
  - `mediaKeys` string[]
  - `scheduledAt` string, date-time, required
  - `status` 'proposed' | 'scheduled' | 'publishing' | 'published' | 'handoff' | 'failed' | 'canceled', required
  - `settings` object, nullable
  - `firstComment` string, nullable
  - `firstCommentUrl` string, nullable: Where the first comment landed, once it did.
  - `firstCommentError` string, nullable: Set when the post published but its first comment did not.
  - `publishedLocation` string, nullable
  - `error` string, nullable
  - `handoffNote` string, nullable
  - `rationale` string, nullable
  - `inspiration` object, nullable
  - `metrics` object, nullable
  - `cover` object, nullable: What the feed shows before the video plays. Null without a video.
    - `kind` 'designed' | 'frame' | 'platform': designed: our thumbnail is uploaded as the cover (YouTube, LinkedIn, Facebook, Instagram). frame: a frame of the video at atMs (TikTok). platform: the platform picks its own frame.
    - `url` string: The cover image, signed for 48 hours.
    - `thumbnailKey` string, nullable: The designed thumbnail's media key.
    - `atMs` number, nullable: TikTok's cover frame, in milliseconds.

## Other responses

- `401`: No credential, or not valid.
- `403`: The key is missing the "write" scope.
- `409`: Already publishing, or the new account is another platform.
- `429`: Over the key's rate limit (600 requests an hour).

---

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