Skip to content
Ordinal
Esc
↑↓navigate↵open⌘Jpreview

Create idea

Create a new idea in the workspace. At least one channel (linkedIn, x, or tikTok) is required.

POST/ideas
Authorization
AuthorizationBearer token · headerrequired

API key authentication. Generate an API key from your workspace settings.

Request body
requiredapplication/json
titlestringrequired

Idea title

labelIdsstring<uuid>[]

Label IDs to attach to the idea

default: []
campaignIdstring<uuid>

Campaign ID to link the idea to

linkedInobject

LinkedIn channel configuration

Show properties
profileIdstring<uuid>

LinkedIn profile ID to post from

copystring

Post content text. To tag someone, use the format @[Display Name](urn). See LinkedIn Mentions for details.

assetsChannelAssetRef[]

Array of assets to attach. Maximum 20 attachments.

max items 20
Show properties
Array of ChannelAssetRef
assetIdstring<uuid>required

Asset ID from the Uploads API

pollobject
Show properties
questionstring
durationstring
Allowed:ONE_DAYTHREE_DAYSONE_WEEKTWO_WEEKS
optionsobject[]
Show properties
Array of object
idstring
textstring
linkPreviewobject
Show properties
urlstring<uri>
titlestring
descriptionstring
thumbnailIdstring
xobject

X (Twitter) channel configuration

Show properties
profileIdstring<uuid>required

X (Twitter) profile ID to post from

tweetsobject[]required

Array of tweets. For threads, include multiple tweets in order.

min items 1
Show properties
Array of object
copystringrequired

Tweet text content

min length 1
assetsChannelAssetRef[]

Array of assets to attach. Maximum 4 per tweet.

max items 4
Show properties
Array of ChannelAssetRef
assetIdstring<uuid>required

Asset ID from the Uploads API

tikTokTikTokConfig

TikTok channel configuration for creating or updating posts. TikTok posts require exactly one video asset.

Show properties
profileIdstring<uuid>required

TikTok profile ID to post from

copystringrequired

Caption text. Maximum 2,200 characters.

max length 2200
assetsChannelAssetRef[]required

Array containing exactly one video asset.

min items 1 · max items 1
Show properties
Array of ChannelAssetRef
assetIdstring<uuid>required

Asset ID from the Uploads API

privacyLevelTikTokPrivacyLevel

Audience visibility for the TikTok video.

Allowed:PUBLIC_TO_EVERYONEFOLLOWER_OF_CREATORMUTUAL_FOLLOW_FRIENDSSELF_ONLY
isCommentDisabledboolean

Disable comments on the video.

isDuetDisabledboolean

Disable Duet on the video.

isStitchDisabledboolean

Disable Stitch on the video.

isPromotingBusinessboolean

Mark the video as promoting the creator's own business (branded content disclosure).

isPaidPartnershipboolean

Mark the video as a paid partnership with a third-party brand (branded content disclosure).

videoCoverTimestampMsinteger<int32> | null

Timestamp (in milliseconds) of the video frame TikTok should use as the cover thumbnail. Defaults to the first frame when omitted or null.

min 0 · max 2147483647
youTubeShortsYouTubeShortsConfig

YouTube Shorts channel configuration for creating or updating posts. YouTube Shorts posts require exactly one video asset (1s–3min).

Show properties
profileIdstring<uuid>required

YouTube channel profile ID to post from

titlestringrequired

Video title. Required by YouTube. Maximum 100 characters.

max length 100
descriptionstring

Video description. Maximum 5,000 characters.

max length 5000
assetsChannelAssetRef[]required

Array containing exactly one video asset (1s–3min duration).

min items 1 · max items 1
Show properties
Array of ChannelAssetRef
assetIdstring<uuid>required

Asset ID from the Uploads API

privacyStatusYouTubePrivacyStatus

Audience visibility for the YouTube Shorts video.

Allowed:publicprivateunlisted
categoryIdstring

YouTube category ID for the video.

notifySubscribersboolean

Whether to notify channel subscribers when the video is published.

isEmbeddableboolean

Whether the video can be embedded on other sites.

isSelfDeclaredMadeForKidsboolean

Whether the video is self-declared as made for kids.

notesstring

Internal notes for the idea

Responses
200

Idea created successfully

idstring<uuid>
urlstring<uri>
titlestring
channelsstring[]
statusstring
createdAtstring<date-time>
updatedAtstring<date-time>
linkedInobject | null
Show properties
copystring
assetsAsset[]
Show properties
Array of Asset
idstring<uuid>

Asset ID

namestring

Original filename

urlstring<uri>

URL to access the asset

mimetypestring

MIME type of the file (e.g., image/jpeg, video/mp4)

sizeinteger

File size in bytes

widthinteger | null

Width in pixels for images and videos

heightinteger | null

Height in pixels for images and videos

durationnumber | null

Duration in seconds for videos

xobject | null
Show properties
tweetsobject[]
Show properties
Array of object
copystring
assetsAsset[]
Show properties
Array of Asset
idstring<uuid>

Asset ID

namestring

Original filename

urlstring<uri>

URL to access the asset

mimetypestring

MIME type of the file (e.g., image/jpeg, video/mp4)

sizeinteger

File size in bytes

widthinteger | null

Width in pixels for images and videos

heightinteger | null

Height in pixels for images and videos

durationnumber | null

Duration in seconds for videos

tikTokTikTokContent | null

TikTok content. Present when the post targets the TikTok channel.

Show properties
profileobject | null
Show properties
idstring<uuid>

Profile ID

namestring | null

Profile name

detailstring | null

Profile detail (vanity name for LinkedIn, @username for X)

copystring

Caption text

assetsAsset[]

Assets attached to the TikTok post (one video).

Show properties
Array of Asset
idstring<uuid>

Asset ID

namestring

Original filename

urlstring<uri>

URL to access the asset

mimetypestring

MIME type of the file (e.g., image/jpeg, video/mp4)

sizeinteger

File size in bytes

widthinteger | null

Width in pixels for images and videos

heightinteger | null

Height in pixels for images and videos

durationnumber | null

Duration in seconds for videos

privacyLevelTikTokPrivacyLevel

Audience visibility for the TikTok video.

Allowed:PUBLIC_TO_EVERYONEFOLLOWER_OF_CREATORMUTUAL_FOLLOW_FRIENDSSELF_ONLY
isCommentDisabledboolean
isDuetDisabledboolean
isStitchDisabledboolean
isPromotingBusinessboolean
isPaidPartnershipboolean
videoCoverTimestampMsinteger<int32> | null

Timestamp (in milliseconds) of the video frame used as the cover thumbnail. Null when not set.

youTubeShortsYouTubeShortsContent | null

YouTube Shorts content. Present when the post targets the YouTube Shorts channel.

Show properties
profileobject | null
Show properties
idstring<uuid>

Profile ID

namestring | null

Profile name

detailstring | null

Profile detail (vanity name for LinkedIn, @username for X)

titlestring | null

Video title

descriptionstring | null

Video description

assetsAsset[]

Assets attached to the YouTube Shorts post (one video).

Show properties
Array of Asset
idstring<uuid>

Asset ID

namestring

Original filename

urlstring<uri>

URL to access the asset

mimetypestring

MIME type of the file (e.g., image/jpeg, video/mp4)

sizeinteger

File size in bytes

widthinteger | null

Width in pixels for images and videos

heightinteger | null

Height in pixels for images and videos

durationnumber | null

Duration in seconds for videos

privacyStatusYouTubePrivacyStatus

Audience visibility for the YouTube Shorts video.

Allowed:publicprivateunlisted
categoryIdstring | null
notifySubscribersboolean
isEmbeddableboolean
isSelfDeclaredMadeForKidsboolean
400

Bad Request - Invalid input parameters

codestring
messagestring
dataobject
Show properties
errorsobject
401

Unauthorized - Missing or invalid API key

codestring
messagestring
Try it
Server
Authorization
Bodyapplication/json
Request
curl -X POST 'https://app.tryordinal.com/api/v1/ideas' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Content-Type: application/json' \
  -d '{
  "title": "My Idea",
  "linkedIn": {
    "copy": "This is my idea content for LinkedIn"
  }
}'
Response
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "url": "https://app.tryordinal.com/workspace/ideas/550e8400-e29b-41d4-a716-446655440000",
  "title": "My Idea",
  "channels": [
    "LinkedIn"
  ],
  "status": "Idea",
  "createdAt": "2026-02-18T14:30:00.000Z",
  "updatedAt": "2026-02-18T14:30:00.000Z",
  "linkedIn": {
    "copy": "This is my idea content for LinkedIn",
    "assets": []
  },
  "x": null
}