> ## Documentation Index
> Fetch the complete documentation index at: https://cut.pro/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Update a post

> Updates a post that is still pending. Two things can change:

• `scheduled_at` — reschedule (must be at least 1 minute in the future) or set to `null` to publish immediately. Only allowed while every item is still in `pending` state.

• `items` — replace the set of pending items. Items with `item_id` are updated in place, items without are inserted, and pending items not present in the body are deleted. Items that already finished publishing are never touched.

At least one of `scheduled_at` or `items` must be provided.



## OpenAPI

````yaml https://api.cut.pro/api/v1/openapi.json patch /posts/{id}
openapi: 3.0.3
info:
  title: CutPro API
  version: 1.0.0
  description: >-
    The CutPro API lets you automate AI-powered video clipping and rendering
    programmatically.


    ## Typical workflow


    1. **Analyze** a public video URL to preview metadata and credit cost — no
    charge (`POST /clips/info`)

    2. **Submit** the video for AI clipping — credits are deducted immediately
    (`POST /clips`)

    3. **Poll** the submission until `status` is `completed` or `failed` (`GET
    /clips/{videoId}/submissions/{submissionId}`)

    4. **Fetch** the AI-generated highlight clips (`GET
    /clips/{videoId}/submissions/{submissionId}/clips`)

    5. **Optionally** apply one of your templates in bulk (`POST
    /clips/{videoId}/submissions/{submissionId}/apply_template`)

    6. **Render** each clip to a final MP4 (`POST
    /clips/{videoId}/submissions/{submissionId}/clips/{clipId}/render`)

    7. **Poll** the render until `status` is `completed` (`GET
    /renders/{renderId}`)

    8. **Download** the rendered video (`GET /renders/{renderId}/download`)


    ## Authentication


    Pass your API key on every request via the `X-Api-Key` header or as
    `Authorization: Bearer <key>`.

    You can generate API keys from your account settings at
    [cut.pro](https://cut.pro).


    ## Workspaces


    An API key is bound to one or more workspaces (Cloudflare-style scoped
    tokens).


    - **Single-workspace key**: every request operates on that workspace
    automatically. No header needed.

    - **Multi-workspace key**: pass `X-Workspace-Id: <workspace-id>` on every
    request to pick which workspace
      the call hits. Without the header, you get `400 MISSING_WORKSPACE_ID` with the list of allowed
      workspace ids in the response.

    Call `GET /workspace` to inspect the workspace the current request resolved
    to, plus its plan and role.


    ## Credits


    Credits are consumed when a submission is created. Check the workspace
    balance at `GET /balance`.

    Use `POST /clips/info` to see the exact cost before committing.
servers:
  - url: https://api.cut.pro/api/v1
security: []
tags:
  - name: Workspace
    description: >-
      The workspace this request resolved to. Single-workspace keys always
      resolve to their bound workspace. Multi-workspace keys resolve via the
      `X-Workspace-Id` header — credits, submissions, clips and renders belong
      to whichever workspace the header selects on each request.
  - name: Videos
    description: >-
      Your clipping library — the source videos you have submitted for AI
      clipping.
  - name: Submissions
    description: >-
      Clipping jobs — the full lifecycle from pre-flight analysis through AI
      processing to completion. Each submission is tied to a video and produces
      a set of generated clips when it completes.
  - name: Clips
    description: >-
      AI-generated highlight clips produced by a completed submission. Each clip
      includes timestamps, a relevance score, and signed URLs for streaming and
      downloading. Clips can have a template applied and then be rendered to a
      final MP4.
  - name: Renders
    description: >-
      Video render jobs. After optionally applying a template to a clip, start a
      render to produce a final MP4. Poll the render until completed, then
      download the file.
  - name: Posts
    description: >-
      Multi-platform publishing. Create a post that references one or more
      edited clips plus the social connections to publish to, then poll it
      through `pending → processing → completed`. Failed items can be retried or
      removed without disturbing siblings that already published.
  - name: Templates
    description: >-
      Video editing templates that apply visual effects, captions, cropping, and
      other styles to clips in bulk. List your templates to find an ID to pass
      to `apply_template`.
  - name: Balance
    description: >-
      Credit balance and ledger of the workspace this API key represents.
      Credits are consumed when you create a submission. For full workspace
      metadata (plan, seats, role, member count) see `GET /workspace`.
  - name: Connections
    description: >-
      Social media accounts connected to this workspace — the IDs you pass as
      `connection_id` when creating a post. To connect a new account, sign in at
      [cut.pro](https://cut.pro) and use the in-app OAuth flow; connection
      lifecycle is not exposed via API.
paths:
  /posts/{id}:
    patch:
      tags:
        - Posts
      summary: Update a post
      description: >-
        Updates a post that is still pending. Two things can change:


        • `scheduled_at` — reschedule (must be at least 1 minute in the future)
        or set to `null` to publish immediately. Only allowed while every item
        is still in `pending` state.


        • `items` — replace the set of pending items. Items with `item_id` are
        updated in place, items without are inserted, and pending items not
        present in the body are deleted. Items that already finished publishing
        are never touched.


        At least one of `scheduled_at` or `items` must be provided.
      operationId: updatePost
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                scheduled_at:
                  description: >-
                    ISO 8601 future timestamp, or `null` to clear the schedule
                    and publish immediately.
                  type: string
                  nullable: true
                items:
                  minItems: 1
                  type: array
                  items:
                    type: object
                    required:
                      - edit_id
                      - connection_id
                      - metadata
                    properties:
                      item_id:
                        description: Existing pending item ID. Omit to insert a new item.
                        type: string
                      edit_id:
                        type: string
                      connection_id:
                        type: string
                      metadata:
                        type: object
                        properties:
                          youtube:
                            type: object
                            required:
                              - title
                              - description
                              - categoryId
                              - privacyStatus
                            properties:
                              title:
                                minLength: 1
                                maxLength: 100
                                type: string
                              description:
                                maxLength: 5000
                                type: string
                              categoryId:
                                type: string
                              privacyStatus:
                                type: string
                                enum:
                                  - public
                                  - private
                                  - unlisted
                              license:
                                type: string
                                enum:
                                  - youtube
                                  - creativeCommon
                              embeddable:
                                type: boolean
                              publicStatsViewable:
                                type: boolean
                              madeForKids:
                                type: boolean
                              selfDeclaredMadeForKids:
                                type: boolean
                              tags:
                                maxItems: 500
                                type: array
                                items:
                                  maxLength: 30
                                  type: string
                              notifySubscribers:
                                type: boolean
                          tiktok:
                            type: object
                            required:
                              - title
                              - privacyLevel
                            properties:
                              title:
                                minLength: 1
                                maxLength: 2200
                                type: string
                              privacyLevel:
                                type: string
                                enum:
                                  - PUBLIC_TO_EVERYONE
                                  - MUTUAL_FOLLOW_FRIENDS
                                  - FOLLOWER_OF_CREATOR
                                  - SELF_ONLY
                              disableDuet:
                                type: boolean
                              disableComment:
                                type: boolean
                              disableStitch:
                                type: boolean
                              videoCoverTimestampMS:
                                type: number
                              brandContentToggle:
                                type: boolean
                              brandOrganicToggle:
                                type: boolean
                              isAigc:
                                type: boolean
                          instagram:
                            type: object
                            required:
                              - caption
                            properties:
                              caption:
                                maxLength: 2200
                                type: string
                              coverUrl:
                                type: string
                              thumbOffset:
                                type: number
                              shareToFeed:
                                type: boolean
                              audioName:
                                type: string
                              collaborators:
                                maxItems: 3
                                type: array
                                items:
                                  type: string
                              userTags:
                                type: array
                                items:
                                  type: string
                              isPaidPartnership:
                                type: boolean
                          bluesky:
                            type: object
                            required:
                              - text
                            properties:
                              text:
                                minLength: 1
                                maxLength: 300
                                type: string
                              languages:
                                maxItems: 3
                                type: array
                                items:
                                  minLength: 2
                                  maxLength: 8
                                  type: string
                          threads:
                            type: object
                            required:
                              - text
                            properties:
                              text:
                                minLength: 1
                                maxLength: 500
                                type: string
                              replyControl:
                                type: string
                                enum:
                                  - everyone
                                  - accounts_you_follow
                                  - mentioned_only
                          linkedin:
                            type: object
                            required:
                              - text
                            properties:
                              text:
                                minLength: 1
                                maxLength: 3000
                                type: string
                              visibility:
                                type: string
                                enum:
                                  - PUBLIC
                                  - CONNECTIONS
                          pinterest:
                            type: object
                            required:
                              - boardId
                              - title
                              - description
                            properties:
                              boardId:
                                minLength: 1
                                type: string
                              title:
                                minLength: 1
                                maxLength: 100
                                type: string
                              description:
                                minLength: 1
                                maxLength: 800
                                type: string
                              link:
                                maxLength: 2048
                                type: string
                              coverImageUrl:
                                maxLength: 2048
                                type: string
                          carmedia:
                            type: object
                            required:
                              - title
                            properties:
                              title:
                                minLength: 1
                                maxLength: 200
                                type: string
                              description:
                                maxLength: 2000
                                type: string
                              visibility:
                                type: string
                                enum:
                                  - public
                          twitter:
                            type: object
                            properties:
                              text:
                                maxLength: 280
                                type: string
                              replySettings:
                                type: string
                                enum:
                                  - everyone
                                  - following
                                  - mentionedUsers
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                scheduled_at:
                  description: >-
                    ISO 8601 future timestamp, or `null` to clear the schedule
                    and publish immediately.
                  type: string
                  nullable: true
                items:
                  minItems: 1
                  type: array
                  items:
                    type: object
                    required:
                      - edit_id
                      - connection_id
                      - metadata
                    properties:
                      item_id:
                        description: Existing pending item ID. Omit to insert a new item.
                        type: string
                      edit_id:
                        type: string
                      connection_id:
                        type: string
                      metadata:
                        type: object
                        properties:
                          youtube:
                            type: object
                            required:
                              - title
                              - description
                              - categoryId
                              - privacyStatus
                            properties:
                              title:
                                minLength: 1
                                maxLength: 100
                                type: string
                              description:
                                maxLength: 5000
                                type: string
                              categoryId:
                                type: string
                              privacyStatus:
                                type: string
                                enum:
                                  - public
                                  - private
                                  - unlisted
                              license:
                                type: string
                                enum:
                                  - youtube
                                  - creativeCommon
                              embeddable:
                                type: boolean
                              publicStatsViewable:
                                type: boolean
                              madeForKids:
                                type: boolean
                              selfDeclaredMadeForKids:
                                type: boolean
                              tags:
                                maxItems: 500
                                type: array
                                items:
                                  maxLength: 30
                                  type: string
                              notifySubscribers:
                                type: boolean
                          tiktok:
                            type: object
                            required:
                              - title
                              - privacyLevel
                            properties:
                              title:
                                minLength: 1
                                maxLength: 2200
                                type: string
                              privacyLevel:
                                type: string
                                enum:
                                  - PUBLIC_TO_EVERYONE
                                  - MUTUAL_FOLLOW_FRIENDS
                                  - FOLLOWER_OF_CREATOR
                                  - SELF_ONLY
                              disableDuet:
                                type: boolean
                              disableComment:
                                type: boolean
                              disableStitch:
                                type: boolean
                              videoCoverTimestampMS:
                                type: number
                              brandContentToggle:
                                type: boolean
                              brandOrganicToggle:
                                type: boolean
                              isAigc:
                                type: boolean
                          instagram:
                            type: object
                            required:
                              - caption
                            properties:
                              caption:
                                maxLength: 2200
                                type: string
                              coverUrl:
                                type: string
                              thumbOffset:
                                type: number
                              shareToFeed:
                                type: boolean
                              audioName:
                                type: string
                              collaborators:
                                maxItems: 3
                                type: array
                                items:
                                  type: string
                              userTags:
                                type: array
                                items:
                                  type: string
                              isPaidPartnership:
                                type: boolean
                          bluesky:
                            type: object
                            required:
                              - text
                            properties:
                              text:
                                minLength: 1
                                maxLength: 300
                                type: string
                              languages:
                                maxItems: 3
                                type: array
                                items:
                                  minLength: 2
                                  maxLength: 8
                                  type: string
                          threads:
                            type: object
                            required:
                              - text
                            properties:
                              text:
                                minLength: 1
                                maxLength: 500
                                type: string
                              replyControl:
                                type: string
                                enum:
                                  - everyone
                                  - accounts_you_follow
                                  - mentioned_only
                          linkedin:
                            type: object
                            required:
                              - text
                            properties:
                              text:
                                minLength: 1
                                maxLength: 3000
                                type: string
                              visibility:
                                type: string
                                enum:
                                  - PUBLIC
                                  - CONNECTIONS
                          pinterest:
                            type: object
                            required:
                              - boardId
                              - title
                              - description
                            properties:
                              boardId:
                                minLength: 1
                                type: string
                              title:
                                minLength: 1
                                maxLength: 100
                                type: string
                              description:
                                minLength: 1
                                maxLength: 800
                                type: string
                              link:
                                maxLength: 2048
                                type: string
                              coverImageUrl:
                                maxLength: 2048
                                type: string
                          carmedia:
                            type: object
                            required:
                              - title
                            properties:
                              title:
                                minLength: 1
                                maxLength: 200
                                type: string
                              description:
                                maxLength: 2000
                                type: string
                              visibility:
                                type: string
                                enum:
                                  - public
                          twitter:
                            type: object
                            properties:
                              text:
                                maxLength: 280
                                type: string
                              replySettings:
                                type: string
                                enum:
                                  - everyone
                                  - following
                                  - mentionedUsers
          multipart/form-data:
            schema:
              type: object
              properties:
                scheduled_at:
                  description: >-
                    ISO 8601 future timestamp, or `null` to clear the schedule
                    and publish immediately.
                  type: string
                  nullable: true
                items:
                  minItems: 1
                  type: array
                  items:
                    type: object
                    required:
                      - edit_id
                      - connection_id
                      - metadata
                    properties:
                      item_id:
                        description: Existing pending item ID. Omit to insert a new item.
                        type: string
                      edit_id:
                        type: string
                      connection_id:
                        type: string
                      metadata:
                        type: object
                        properties:
                          youtube:
                            type: object
                            required:
                              - title
                              - description
                              - categoryId
                              - privacyStatus
                            properties:
                              title:
                                minLength: 1
                                maxLength: 100
                                type: string
                              description:
                                maxLength: 5000
                                type: string
                              categoryId:
                                type: string
                              privacyStatus:
                                type: string
                                enum:
                                  - public
                                  - private
                                  - unlisted
                              license:
                                type: string
                                enum:
                                  - youtube
                                  - creativeCommon
                              embeddable:
                                type: boolean
                              publicStatsViewable:
                                type: boolean
                              madeForKids:
                                type: boolean
                              selfDeclaredMadeForKids:
                                type: boolean
                              tags:
                                maxItems: 500
                                type: array
                                items:
                                  maxLength: 30
                                  type: string
                              notifySubscribers:
                                type: boolean
                          tiktok:
                            type: object
                            required:
                              - title
                              - privacyLevel
                            properties:
                              title:
                                minLength: 1
                                maxLength: 2200
                                type: string
                              privacyLevel:
                                type: string
                                enum:
                                  - PUBLIC_TO_EVERYONE
                                  - MUTUAL_FOLLOW_FRIENDS
                                  - FOLLOWER_OF_CREATOR
                                  - SELF_ONLY
                              disableDuet:
                                type: boolean
                              disableComment:
                                type: boolean
                              disableStitch:
                                type: boolean
                              videoCoverTimestampMS:
                                type: number
                              brandContentToggle:
                                type: boolean
                              brandOrganicToggle:
                                type: boolean
                              isAigc:
                                type: boolean
                          instagram:
                            type: object
                            required:
                              - caption
                            properties:
                              caption:
                                maxLength: 2200
                                type: string
                              coverUrl:
                                type: string
                              thumbOffset:
                                type: number
                              shareToFeed:
                                type: boolean
                              audioName:
                                type: string
                              collaborators:
                                maxItems: 3
                                type: array
                                items:
                                  type: string
                              userTags:
                                type: array
                                items:
                                  type: string
                              isPaidPartnership:
                                type: boolean
                          bluesky:
                            type: object
                            required:
                              - text
                            properties:
                              text:
                                minLength: 1
                                maxLength: 300
                                type: string
                              languages:
                                maxItems: 3
                                type: array
                                items:
                                  minLength: 2
                                  maxLength: 8
                                  type: string
                          threads:
                            type: object
                            required:
                              - text
                            properties:
                              text:
                                minLength: 1
                                maxLength: 500
                                type: string
                              replyControl:
                                type: string
                                enum:
                                  - everyone
                                  - accounts_you_follow
                                  - mentioned_only
                          linkedin:
                            type: object
                            required:
                              - text
                            properties:
                              text:
                                minLength: 1
                                maxLength: 3000
                                type: string
                              visibility:
                                type: string
                                enum:
                                  - PUBLIC
                                  - CONNECTIONS
                          pinterest:
                            type: object
                            required:
                              - boardId
                              - title
                              - description
                            properties:
                              boardId:
                                minLength: 1
                                type: string
                              title:
                                minLength: 1
                                maxLength: 100
                                type: string
                              description:
                                minLength: 1
                                maxLength: 800
                                type: string
                              link:
                                maxLength: 2048
                                type: string
                              coverImageUrl:
                                maxLength: 2048
                                type: string
                          carmedia:
                            type: object
                            required:
                              - title
                            properties:
                              title:
                                minLength: 1
                                maxLength: 200
                                type: string
                              description:
                                maxLength: 2000
                                type: string
                              visibility:
                                type: string
                                enum:
                                  - public
                          twitter:
                            type: object
                            properties:
                              text:
                                maxLength: 280
                                type: string
                              replySettings:
                                type: string
                                enum:
                                  - everyone
                                  - following
                                  - mentionedUsers
      responses:
        '200':
          description: Response for status 200
          content:
            application/json:
              schema:
                type: object
                required:
                  - id
                  - status
                  - scheduled_at
                  - created_at
                  - updated_at
                  - item_count
                  - items
                properties:
                  id:
                    type: string
                  status:
                    type: string
                    enum:
                      - pending
                      - processing
                      - completed
                      - partial
                      - failed
                  scheduled_at:
                    type: string
                    nullable: true
                  created_at:
                    type: string
                  updated_at:
                    type: string
                  item_count:
                    type: number
                  items:
                    type: array
                    items:
                      type: object
                      required:
                        - id
                        - platform
                        - connection_id
                        - edit_id
                        - render_id
                        - status
                        - published_url
                        - error_code
                        - created_at
                        - updated_at
                        - posted_at
                      properties:
                        id:
                          type: string
                        platform:
                          type: string
                          enum:
                            - youtube
                            - tiktok
                            - instagram
                            - bluesky
                            - threads
                            - linkedin
                            - pinterest
                            - facebook
                            - carmedia
                            - twitter
                        connection_id:
                          type: string
                        edit_id:
                          type: string
                          nullable: true
                        render_id:
                          type: string
                          nullable: true
                        status:
                          type: string
                          enum:
                            - pending
                            - rendering
                            - publishing
                            - completed
                            - failed
                        published_url:
                          type: string
                          nullable: true
                        error_code:
                          type: string
                          nullable: true
                        created_at:
                          type: string
                        updated_at:
                          type: string
                        posted_at:
                          type: string
                          nullable: true
        '400':
          description: Response for status 400
          content:
            application/json:
              schema:
                type: object
                required:
                  - code
                properties:
                  code:
                    type: string
                    enum:
                      - INVALID_SCHEDULED_AT
                      - SCHEDULE_LOCKED
                      - ITEM_NOT_EDITABLE
                      - INVALID_CONNECTIONS
                      - ITEMS_EMPTY
                      - NOTHING_TO_UPDATE
                  item_id:
                    type: string
                  invalid_connections:
                    type: array
                    items:
                      type: string
        '404':
          description: Response for status 404
          content:
            application/json:
              schema:
                type: object
                required:
                  - code
                properties:
                  code:
                    type: string
                    enum:
                      - POST_NOT_FOUND
                      - EDITS_NOT_FOUND
                  invalid_edits:
                    type: array
                    items:
                      type: string
      security:
        - apiKey: []
components:
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: X-Api-Key

````