---
title: "Create a post"
method: POST
path: "/posts"
tags: ["Posts"]
---

# Create a post

`POST /posts`

## Request

- Base URL: `https://api.cut.pro/api/v1`
- URL: `https://api.cut.pro/api/v1/posts`
- Auth: API key in header `X-Api-Key`

Creates a multi-platform post for one or more edited clips. Each entry under `videos` references an `edit_id` (the rendered or apply_template'd clip) plus a list of target connections with platform-specific metadata.

`metadata` is the only part of this API that keeps each network's own field names (`privacyLevel`, `categoryId`, `privacyStatus`): they are forwarded to the network as-is, so renaming them here would only hide what actually goes out.

Pass `scheduled_at` (ISO 8601, must be in the future) to schedule the post; omit it to publish immediately.

Immediate posts kick off rendering + publishing in the background — poll `GET /posts/{id}` until every item is `completed` or `failed`. Failed items can be retried with `POST /posts/{id}/items/{itemId}/retry`.

Networks still rolling out reject the whole request with `PLATFORM_UNAVAILABLE` before anything is created.

## Request body

- object
  - `videos` object[], required: List of clips to publish. Each item has an `edit_id` plus per-target metadata.
    - `edit_id` string, required: Edit to publish: the `edit_id` a render returns.
    - `targets` object[], required
      - `connection_id` string, required: Connection to publish to, from `GET /connections`.
      - `metadata` object, required
        - `tumblr` object
          - `title` string
          - `text` string
          - `tags` string[]
          - `coverImageId` string
        - `slack` object
          - `channelId` string, required
          - `text` string
          - `coverImageId` string
        - `dailymotion` object
          - `title` string, required
          - `description` string
          - `channel` string, required
          - `tags` string[]
          - `visibility` 'public' | 'private'
          - `coverImageId` string
        - `telegram` object
          - `text` string
          - `silent` boolean
          - `coverImageId` string
        - `mastodon` object
          - `text` string
          - `visibility` 'public' | 'unlisted' | 'private'
          - `sensitive` boolean
          - `spoilerText` string
          - `language` string
          - `coverImageId` string
        - `discordserver` object
          - `channelId` string, required
          - `text` string
          - `coverImageId` string
        - `youtube` object
          - `title` string, required
          - `description` string
          - `categoryId` string, required
          - `privacyStatus` 'public' | 'private' | 'unlisted', required
          - `license` 'youtube' | 'creativeCommon'
          - `embeddable` boolean
          - `publicStatsViewable` boolean
          - `madeForKids` boolean
          - `selfDeclaredMadeForKids` boolean
          - `tags` string[]
          - `notifySubscribers` boolean
          - `coverImageId` string
        - `tiktok` object
          - `title` string, required
          - `photoTitle` string
          - `privacyLevel` 'PUBLIC_TO_EVERYONE' | 'MUTUAL_FOLLOW_FRIENDS' | 'FOLLOWER_OF_CREATOR' | 'SELF_ONLY', required
          - `disableDuet` boolean
          - `disableComment` boolean
          - `disableStitch` boolean
          - `coverImageId` string
          - `brandContentToggle` boolean
          - `brandOrganicToggle` boolean
          - `isAigc` boolean
        - `instagram` object
          - `caption` string
          - `captionGroups` object
            - `hook` string[]
            - `emoji` string[]
            - `body` string[]
            - `cta` string[]
            - `hashtags` string[]
          - `captionParts` string[]
          - `captionAutoEnvelope` boolean
          - `captionTemplate` string
          - `coverUrl` string
          - `coverImageId` string
          - `thumbOffset` number
          - `shareToFeed` boolean
          - `audioName` string
          - `collaborators` string[]
          - `userTags` string[]
          - `trialReel` 'off' | 'MANUAL' | 'SS_PERFORMANCE'
          - `firstComment` string
        - `facebook` object
          - `description` string
          - `postType` 'reel' | 'feed'
          - `link` string
          - `videoTitle` string
          - `coverImageId` string
          - `firstComment` string
        - `bluesky` object
          - `text` string
          - `languages` string[]
          - `coverImageId` string
        - `threads` object
          - `text` string
          - `replyControl` 'everyone' | 'accounts_you_follow' | 'mentioned_only'
          - `coverImageId` string
          - `firstComment` string
        - `linkedin` object
          - `text` string, required
          - `visibility` 'PUBLIC' | 'CONNECTIONS'
          - `coverImageId` string
        - `pinterest` object
          - `boardId` string, required
          - `title` string, required
          - `description` string, required
          - `link` string
          - `coverImageUrl` string
          - `coverImageId` string
        - `carmedia` object
          - `title` string, required
          - `description` string
          - `visibility` 'public'
          - `coverImageId` string
        - `twitter` object
          - `text` string
          - `replySettings` 'everyone' | 'following' | 'mentionedUsers'
          - `coverImageId` string
  - `scheduled_at` string, nullable: ISO 8601 future timestamp to schedule the post. Omit for immediate publish.

## Response `201`

Response for status 201

- object
  - `id` string, required
  - `item_count` number, required
  - `scheduled_at` string, nullable, required
  - `status` 'pending' | 'processing', required

## Other responses

- `400`: Response for status 400
- `403`: Response for status 403
- `404`: Response for status 404
- `409`: Response for status 409
- `500`: Response for status 500

---

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