---
title: "Duplicate a post as a draft"
method: POST
path: "/posts/{id}/duplicate"
tags: ["Posts"]
---

# Duplicate a post as a draft

`POST /posts/{id}/duplicate`

## Request

- Base URL: `https://www.sociahive.com/api/v1`
- URL: `https://www.sociahive.com/api/v1/posts/{id}/duplicate`
- Auth: one of:
  - API key in header `X-API-Key`
  - OAuth 2 (authorization code, authorization URL `/api/oauth/authorize`, token URL `/api/oauth/token`, scopes: `posts:write`)

Creates a new draft with the same content, targets, platform options, overrides and tags. Never copies publish results (statuses, platform post ids, errors, thread parts already sent), the schedule, the comment automation, recurrence or review links. Rolling out (SCHEDULER_CALENDAR_CARD_ACTIONS): a 403 `feature_disabled` until it reaches your account.

## Path parameters

- `id` string, required: MongoDB ObjectId (24-character hex string)

## Response `201`

The new draft

- PostEnvelope: Single-post envelope — `{ data: <post> }`.
  - `data` Post, required
    - `id` string, required: MongoDB ObjectId (24-character hex string)
    - `content` object, required
      - `text` string, required
      - `media` object[]
        - `type` 'image' | 'video' | 'gif', required
        - `url` string, uri, required
    - `text` string
    - `media` object[]
      - `type` 'image' | 'video' | 'gif', required
      - `url` string, uri, required
    - `status` 'draft' | 'scheduled' | 'publishing' | 'published' | 'partially_published' | 'failed' | 'pending_approval' | 'reminder_sent', required
    - `platforms` object[], required
      - `platform` string, required: Platform id. Known values: `instagram`, `messenger`, `whatsapp`, `linkedin`, `twitter`, `tiktok`, `telegram`, `threads`, `youtube`, `bluesky`, `pinterest`, `facebook`, `discord`, `mastodon`, `lemmy`, `devto`, `hashnode`, `wordpress`, `listmonk`, `slack`, `tumblr`, `dribbble`, `twitch`, `kick`. Treat any other value as unknown, never as an error.
      - `account_id` string, required: MongoDB ObjectId (24-character hex string)
      - `platform_post_id` string
      - `status` 'pending' | 'processing' | 'published' | 'failed' | 'reminder_sent'
      - `error` object
        - `code` string, required
        - `message` string, required
      - `published_at` string, date-time
    - `scheduled_at` string, date-time
    - `timezone` string
    - `created_at` string, date-time, required
    - `updated_at` string, date-time, required
    - `automation` object, nullable
      - `state` string, required: Derived state. Known values: `none`, `building`, `failed`, `off`, `armed`, `live`, `needs_attention`. Treat any other value as unknown, never as an error.
      - `flow_id` string, required
      - `flow_name` string, required
      - `door` string, required: How the automation was built. Known values: `funnel`, `template`, `prompt`. Treat any other value as unknown, never as an error.
      - `account_id` string, required
      - `armed` boolean, required: Turns on when the post goes live. Only a person sets this.
      - `bound` boolean, required: The trigger points at the published media id.
      - `error` object
        - `code` string, required: The fix to offer, e.g. `placeholder_text`, `link_placeholder`, `unbound_media`, `account_disconnected`, `tier_limit`. Open-ended.
        - `message` string, required
      - `allowed_actions` string[], required: What the user can do now. Known values: arm, unarm, turn_on, turn_off, remove, rebind, retry, fill_blanks, open. Ignore unknown values.
      - `flow_live_waiting_for_post` boolean
    - `source` string: Where the post came from (set by the server, never accepted from a client). Known values: `composer`, `rss`. Treat any other value as unknown, never as an error.

## Other responses

- `400`: Bad request — invalid parameters
- `401`: Authentication required — provide X-API-Key or Bearer token
- `403`: Insufficient scope for this operation
- `404`: Not found (or not yours)
- `429`: Rate limit exceeded
- `500`: Internal server error

---

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