---
title: "Update post"
method: PATCH
path: "/posts/{id}"
tags: ["Posts"]
---

# Update post

`PATCH /posts/{id}`

Update an existing post by ID. All fields are optional - only include the fields you want to update. Archived posts cannot be updated; unarchive them first.

## Path parameters

- `id` string, uuid, required

## Request body

- UpdatePostInput — All fields are optional. Only include the fields you want to update.
  - `title` string
  - `publishAt` string, date-time
  - `status` 'Tentative' | 'ToDo' | 'InProgress' | 'ForReview' | 'Blocked' | 'Finalized' | 'Scheduled' | 'Posted'
  - `labelIds` string[]
  - `campaignId` string, uuid, nullable
  - `notes` string, nullable
  - `linkedIn` LinkedInConfig
    - `profileId` string, uuid — LinkedIn profile ID to post from
    - `copy` string — Post content text. To tag someone, use the format `@[Display Name](urn)`. See [LinkedIn Mentions](/api/linkedin-mentions) for details.
    - `assets` ChannelAssetRef[] — Array of assets to attach to the post. Obtain asset IDs by uploading files via the Uploads API. Maximum 20 attachments for LinkedIn posts.
      - `assetId` string, uuid, required — Asset ID from the Uploads API
    - `poll` object
      - `question` string
      - `duration` 'ONE_DAY' | 'THREE_DAYS' | 'ONE_WEEK' | 'TWO_WEEKS'
      - `options` object[]
        - `id` string
        - `text` string
    - `linkPreview` object
      - `url` string, uri
      - `title` string
      - `description` string
      - `thumbnailId` string
  - `x` TwitterConfig — X (Twitter) channel configuration for creating or updating posts
    - `profileId` string, uuid, required — X (Twitter) profile ID to post from
    - `tweets` object[], required — Array of tweets. For threads, include multiple tweets in order.
      - `copy` string, required — Tweet text content
      - `assets` ChannelAssetRef[] — Array of assets to attach to this tweet. Obtain asset IDs by uploading files via the Uploads API. Maximum 4 attachments per tweet.
        - `assetId` string, uuid, required — Asset ID from the Uploads API
  - `instagram` union — Instagram channel configuration for creating or updating posts. The shape of the object depends on the `type` field.
    - InstagramFeedConfig — Instagram Feed post configuration
      - `profileId` string, uuid — Instagram profile ID to post from
      - `type` 'Feed', required — Must be `Feed`
      - `copy` string — Caption text. Maximum 2,200 characters.
      - `assets` InstagramAssetInput[] — Array of assets with optional user tags. Maximum 10.
        - `assetId` string, uuid, required — Asset ID from the Uploads API
        - `tags` InstagramAssetTagInput[] — Users to tag on this asset
          - `username` string, required — Instagram username to tag (with or without @ prefix)
          - `x` number — X coordinate (0-1) for tag position on images. Required for image assets.
          - `y` number — Y coordinate (0-1) for tag position on images. Required for image assets.
      - `collaborators` string[] — Instagram usernames to invite as collaborators. Maximum 3.
      - `location` InstagramLocationInput — Location to tag on an Instagram post
        - `pageId` string, required — Facebook Page ID for the location. Obtain from the search locations endpoint.
        - `name` string, required — Display name of the location
    - InstagramReelConfig — Instagram Reel post configuration
      - `profileId` string, uuid — Instagram profile ID to post from
      - `type` 'Reel', required — Must be `Reel`
      - `copy` string — Caption text. Maximum 2,200 characters.
      - `assets` InstagramAssetInput[] — Array of video assets. Maximum 1 (video only).
        - `assetId` string, uuid, required — Asset ID from the Uploads API
        - `tags` InstagramAssetTagInput[] — Users to tag on this asset
          - `username` string, required — Instagram username to tag (with or without @ prefix)
          - `x` number — X coordinate (0-1) for tag position on images. Required for image assets.
          - `y` number — Y coordinate (0-1) for tag position on images. Required for image assets.
      - `coverPhotoId` string, uuid — Asset ID for a custom Reel cover photo (JPEG or PNG).
      - `shareToFeed` boolean — Whether to also share the Reel to the Feed. Defaults to true.
      - `trialReelGraduationStrategy` 'MANUAL' | 'SS_PERFORMANCE', nullable — Publish as an Instagram trial reel that is shown only to non-followers. `MANUAL` keeps the reel as a trial until you graduate it from the Instagram app. `SS_PERFORMANCE` lets Instagram auto-graduate the reel to your followers based on performance in the first 72 hours. Omit or set to `null` for a normal Reel.
      - `collaborators` string[] — Instagram usernames to invite as collaborators. Maximum 3.
      - `location` InstagramLocationInput — Location to tag on an Instagram post
        - `pageId` string, required — Facebook Page ID for the location. Obtain from the search locations endpoint.
        - `name` string, required — Display name of the location
    - InstagramStoryConfig — Instagram Story post configuration
      - `profileId` string, uuid — Instagram profile ID to post from
      - `type` 'Story', required — Must be `Story`
      - `assets` InstagramAssetInput[] — Array of assets. Maximum 10.
        - `assetId` string, uuid, required — Asset ID from the Uploads API
        - `tags` InstagramAssetTagInput[] — Users to tag on this asset
          - `username` string, required — Instagram username to tag (with or without @ prefix)
          - `x` number — X coordinate (0-1) for tag position on images. Required for image assets.
          - `y` number — Y coordinate (0-1) for tag position on images. Required for image assets.
  - `tikTok` TikTokConfig — TikTok channel configuration for creating or updating posts. TikTok posts require exactly one video asset.
    - `profileId` string, uuid, required — TikTok profile ID to post from
    - `copy` string, required — Caption text. Maximum 2,200 characters.
    - `assets` ChannelAssetRef[], required — Array containing exactly one video asset.
      - `assetId` string, uuid, required — Asset ID from the Uploads API
    - `privacyLevel` 'PUBLIC_TO_EVERYONE' | 'FOLLOWER_OF_CREATOR' | 'MUTUAL_FOLLOW_FRIENDS' | 'SELF_ONLY' — Audience visibility for the TikTok video.
    - `isCommentDisabled` boolean — Disable comments on the video.
    - `isDuetDisabled` boolean — Disable Duet on the video.
    - `isStitchDisabled` boolean — Disable Stitch on the video.
    - `isPromotingBusiness` boolean — Mark the video as promoting the creator's own business (branded content disclosure).
    - `isPaidPartnership` boolean — Mark the video as a paid partnership with a third-party brand (branded content disclosure).
    - `videoCoverTimestampMs` integer, nullable — Timestamp (in milliseconds) of the video frame TikTok should use as the cover thumbnail. Defaults to the first frame when omitted or null.
  - `youTubeShorts` YouTubeShortsConfig — YouTube Shorts channel configuration for creating or updating posts. YouTube Shorts posts require exactly one video asset (1s–3min).
    - `profileId` string, uuid, required — YouTube channel profile ID to post from
    - `title` string, required — Video title. Required by YouTube. Maximum 100 characters.
    - `description` string — Video description. Maximum 5,000 characters.
    - `assets` ChannelAssetRef[], required — Array containing exactly one video asset (1s–3min duration).
      - `assetId` string, uuid, required — Asset ID from the Uploads API
    - `privacyStatus` 'public' | 'private' | 'unlisted' — Audience visibility for the YouTube Shorts video.
    - `categoryId` string — YouTube category ID for the video.
    - `notifySubscribers` boolean — Whether to notify channel subscribers when the video is published.
    - `isEmbeddable` boolean — Whether the video can be embedded on other sites.
    - `isSelfDeclaredMadeForKids` boolean — Whether the video is self-declared as made for kids.

## Response `200`

Post updated successfully

- Post
  - `id` string, uuid
  - `url` string, uri
  - `title` string
  - `channels` string[]
  - `status` 'Tentative' | 'ToDo' | 'InProgress' | 'ForReview' | 'Blocked' | 'Finalized' | 'Scheduled' | 'Posted'
  - `publishDate` string — Scheduled publish date (YYYY-MM-DD) in workspace timezone
  - `publishAt` string, date-time, nullable — Scheduled publish datetime UTC. Only set when a specific time is specified.
  - `createdAt` string, date-time
  - `updatedAt` string, date-time
  - `archivedAt` string, date-time, nullable — When the post was archived. Null if the post is not archived.
  - `labels` object[] — Labels assigned to this post
    - `id` string, uuid — Label ID
    - `name` string — Label name
    - `color` string — Label text color (hex)
    - `backgroundColor` string — Label background color (hex)
  - `linkedIn` object, nullable
    - `profile` ChannelProfile — Profile information for a channel (LinkedIn, X, or Instagram)
      - `id` string, uuid — Profile ID
      - `name` string, nullable — Profile name
      - `detail` string, nullable — Profile detail (vanity name for LinkedIn, @username for X)
    - `copy` string
    - `assets` Asset[] — Assets attached to the LinkedIn post
      - `id` string, uuid — Asset ID
      - `name` string — Original filename
      - `url` string, uri — URL to access the asset
      - `mimetype` string — MIME type of the file (e.g., image/jpeg, video/mp4)
      - `size` integer — File size in bytes
      - `width` integer, nullable — Width in pixels for images and videos
      - `height` integer, nullable — Height in pixels for images and videos
      - `duration` number, nullable — Duration in seconds for videos
  - `x` object, nullable — X (Twitter) content. Present when the post targets the Twitter channel.
    - `profile` ChannelProfile — Profile information for a channel (LinkedIn, X, or Instagram)
      - `id` string, uuid — Profile ID
      - `name` string, nullable — Profile name
      - `detail` string, nullable — Profile detail (vanity name for LinkedIn, @username for X)
    - `tweets` object[]
      - `copy` string
      - `assets` Asset[] — Assets attached to this tweet
        - `id` string, uuid — Asset ID
        - `name` string — Original filename
        - `url` string, uri — URL to access the asset
        - `mimetype` string — MIME type of the file (e.g., image/jpeg, video/mp4)
        - `size` integer — File size in bytes
        - `width` integer, nullable — Width in pixels for images and videos
        - `height` integer, nullable — Height in pixels for images and videos
        - `duration` number, nullable — Duration in seconds for videos
  - `instagram` union — Instagram content. Present when the post targets the Instagram channel. The shape depends on the `type` field.
    - InstagramFeedContent — Instagram Feed content in responses
      - `profile` ChannelProfile — Profile information for a channel (LinkedIn, X, or Instagram)
        - `id` string, uuid — Profile ID
        - `name` string, nullable — Profile name
        - `detail` string, nullable — Profile detail (vanity name for LinkedIn, @username for X)
      - `type` 'Feed' — Instagram content type
      - `copy` string — Caption text
      - `assets` InstagramAsset[]
        - `id` string, uuid
        - `name` string
        - `url` string, uri
        - `mimetype` string
        - `size` integer
        - `width` integer, nullable
        - `height` integer, nullable
        - `duration` number, nullable
        - `tags` InstagramAssetTag[]
          - `username` string — Instagram username
          - `x` number, nullable — X coordinate (0-1) for images, null for videos
          - `y` number, nullable — Y coordinate (0-1) for images, null for videos
      - `collaborators` string[] — Instagram usernames invited as collaborators
      - `location` InstagramLocation — A location tagged on an Instagram post
        - `pageId` string — Facebook Page ID
        - `name` string — Display name of the location
    - InstagramReelContent — Instagram Reel content in responses
      - `profile` ChannelProfile — Profile information for a channel (LinkedIn, X, or Instagram)
        - `id` string, uuid — Profile ID
        - `name` string, nullable — Profile name
        - `detail` string, nullable — Profile detail (vanity name for LinkedIn, @username for X)
      - `type` 'Reel' — Instagram content type
      - `copy` string — Caption text
      - `assets` InstagramAsset[]
        - `id` string, uuid
        - `name` string
        - `url` string, uri
        - `mimetype` string
        - `size` integer
        - `width` integer, nullable
        - `height` integer, nullable
        - `duration` number, nullable
        - `tags` InstagramAssetTag[]
          - `username` string — Instagram username
          - `x` number, nullable — X coordinate (0-1) for images, null for videos
          - `y` number, nullable — Y coordinate (0-1) for images, null for videos
      - `coverPhoto` Asset — Asset metadata for files attached to posts
        - `id` string, uuid — Asset ID
        - `name` string — Original filename
        - `url` string, uri — URL to access the asset
        - `mimetype` string — MIME type of the file (e.g., image/jpeg, video/mp4)
        - `size` integer — File size in bytes
        - `width` integer, nullable — Width in pixels for images and videos
        - `height` integer, nullable — Height in pixels for images and videos
        - `duration` number, nullable — Duration in seconds for videos
      - `shareToFeed` boolean — Whether the Reel is also shared to the Feed
      - `trialReelGraduationStrategy` 'MANUAL' | 'SS_PERFORMANCE', nullable — Trial reel graduation strategy, or `null` if the Reel is not a trial reel. `MANUAL` requires you to graduate the reel from the Instagram app; `SS_PERFORMANCE` lets Instagram auto-graduate based on early performance.
      - `collaborators` string[] — Instagram usernames invited as collaborators
      - `location` InstagramLocation — A location tagged on an Instagram post
        - `pageId` string — Facebook Page ID
        - `name` string — Display name of the location
    - InstagramStoryContent — Instagram Story content in responses
      - `profile` ChannelProfile — Profile information for a channel (LinkedIn, X, or Instagram)
        - `id` string, uuid — Profile ID
        - `name` string, nullable — Profile name
        - `detail` string, nullable — Profile detail (vanity name for LinkedIn, @username for X)
      - `type` 'Story' — Instagram content type
      - `assets` InstagramAsset[]
        - `id` string, uuid
        - `name` string
        - `url` string, uri
        - `mimetype` string
        - `size` integer
        - `width` integer, nullable
        - `height` integer, nullable
        - `duration` number, nullable
        - `tags` InstagramAssetTag[]
          - `username` string — Instagram username
          - `x` number, nullable — X coordinate (0-1) for images, null for videos
          - `y` number, nullable — Y coordinate (0-1) for images, null for videos
  - `tikTok` TikTokContent, nullable — TikTok content. Present when the post targets the TikTok channel.
    - `profile` ChannelProfile — Profile information for a channel (LinkedIn, X, or Instagram)
      - `id` string, uuid — Profile ID
      - `name` string, nullable — Profile name
      - `detail` string, nullable — Profile detail (vanity name for LinkedIn, @username for X)
    - `copy` string — Caption text
    - `assets` Asset[] — Assets attached to the TikTok post (one video).
      - `id` string, uuid — Asset ID
      - `name` string — Original filename
      - `url` string, uri — URL to access the asset
      - `mimetype` string — MIME type of the file (e.g., image/jpeg, video/mp4)
      - `size` integer — File size in bytes
      - `width` integer, nullable — Width in pixels for images and videos
      - `height` integer, nullable — Height in pixels for images and videos
      - `duration` number, nullable — Duration in seconds for videos
    - `privacyLevel` 'PUBLIC_TO_EVERYONE' | 'FOLLOWER_OF_CREATOR' | 'MUTUAL_FOLLOW_FRIENDS' | 'SELF_ONLY' — Audience visibility for the TikTok video.
    - `isCommentDisabled` boolean
    - `isDuetDisabled` boolean
    - `isStitchDisabled` boolean
    - `isPromotingBusiness` boolean
    - `isPaidPartnership` boolean
    - `videoCoverTimestampMs` integer, nullable — Timestamp (in milliseconds) of the video frame used as the cover thumbnail. Null when not set.
  - `youTubeShorts` YouTubeShortsContent, nullable — YouTube Shorts content. Present when the post targets the YouTube Shorts channel.
    - `profile` ChannelProfile — Profile information for a channel (LinkedIn, X, or Instagram)
      - `id` string, uuid — Profile ID
      - `name` string, nullable — Profile name
      - `detail` string, nullable — Profile detail (vanity name for LinkedIn, @username for X)
    - `title` string, nullable — Video title
    - `description` string, nullable — Video description
    - `assets` Asset[] — Assets attached to the YouTube Shorts post (one video).
      - `id` string, uuid — Asset ID
      - `name` string — Original filename
      - `url` string, uri — URL to access the asset
      - `mimetype` string — MIME type of the file (e.g., image/jpeg, video/mp4)
      - `size` integer — File size in bytes
      - `width` integer, nullable — Width in pixels for images and videos
      - `height` integer, nullable — Height in pixels for images and videos
      - `duration` number, nullable — Duration in seconds for videos
    - `privacyStatus` 'public' | 'private' | 'unlisted' — Audience visibility for the YouTube Shorts video.
    - `categoryId` string, nullable
    - `notifySubscribers` boolean
    - `isEmbeddable` boolean
    - `isSelfDeclaredMadeForKids` boolean

## Other responses

- `400` — Bad Request - Invalid input parameters
- `401` — Unauthorized - Missing or invalid API key
- `404` — Not Found - Resource does not exist

---

[API](https://skmtc.net/tryordinal/apis/ordinal-api.md) · [All operations](https://skmtc.net/tryordinal/apis/ordinal-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/tryordinal/ordinal-api/versions/1d0792ff454f/schema)
