Skip to main content
POST
/
posts
Create post
curl --request POST \
  --url https://app.tryordinal.com/api/v1/posts \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data @- <<EOF
{
  "title": "Q4 Product Launch Announcement",
  "publishAt": "2026-01-15T14:00:00.000Z",
  "status": "Scheduled",
  "linkedIn": {
    "profileId": "550e8400-e29b-41d4-a716-446655440001",
    "copy": "Excited to announce our new product launch! 🚀\n\nHuge thanks to @[John Doe](urn:li:person:ABC123xyz) and the @[Acme Inc](urn:li:organization:123456) team for making this happen.\n\nKey highlights:\n• Feature A\n• Feature B\n• Feature C\n\n#ProductLaunch #Innovation",
    "assetIds": [
      "550e8400-e29b-41d4-a716-446655440010"
    ]
  },
  "x": {
    "profileId": "550e8400-e29b-41d4-a716-446655440003",
    "tweets": [
      {
        "copy": "Excited to announce our new product launch! 🚀\n\nA thread on what we've been building 🧵",
        "assetIds": [
          "550e8400-e29b-41d4-a716-446655440011"
        ]
      },
      {
        "copy": "Key highlights:\n• Feature A\n• Feature B\n• Feature C"
      }
    ]
  },
  "instagram": {
    "profileId": "550e8400-e29b-41d4-a716-446655440004",
    "type": "Reel",
    "copy": "Check out our new product! 🚀",
    "assets": [
      {
        "assetId": "550e8400-e29b-41d4-a716-446655440012",
        "tags": [
          {
            "username": "tryordinal",
            "x": 0.5,
            "y": 0.5
          }
        ]
      }
    ],
    "shareToFeed": true,
    "coverPhotoId": "550e8400-e29b-41d4-a716-446655440013",
    "collaborators": [
      "tryordinal"
    ]
  },
  "labelIds": [
    "550e8400-e29b-41d4-a716-446655440002"
  ],
  "notes": "Internal note: Coordinate with marketing team"
}
EOF
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "url": "https://app.tryordinal.com/acme/posts/550e8400-e29b-41d4-a716-446655440000",
  "title": "Q4 Product Launch Announcement",
  "channels": [
    "LinkedIn",
    "Twitter",
    "Instagram"
  ],
  "status": "Scheduled",
  "createdAt": "2026-01-05T10:30:00.000Z",
  "updatedAt": "2026-01-05T10:30:00.000Z",
  "linkedIn": {
    "copy": "Excited to announce our new product launch!",
    "assets": [
      {
        "id": "550e8400-e29b-41d4-a716-446655440010",
        "name": "product-photo.jpg",
        "url": "https://cdn.tryordinal.com/assets/product-photo.jpg",
        "mimetype": "image/jpeg",
        "size": 245678,
        "width": 1920,
        "height": 1080,
        "duration": null
      }
    ]
  },
  "x": {
    "tweets": [
      {
        "copy": "Excited to announce our new product launch!",
        "assets": [
          {
            "id": "550e8400-e29b-41d4-a716-446655440011",
            "name": "product-photo.jpg",
            "url": "https://cdn.tryordinal.com/assets/product-photo.jpg",
            "mimetype": "image/jpeg",
            "size": 245678,
            "width": 1920,
            "height": 1080,
            "duration": null
          }
        ]
      },
      {
        "copy": "Key highlights: Feature A, Feature B, Feature C",
        "assets": []
      }
    ]
  },
  "instagram": {
    "type": "Reel",
    "copy": "Check out our new product! 🚀",
    "assets": [
      {
        "id": "550e8400-e29b-41d4-a716-446655440012",
        "name": "product-video.mp4",
        "url": "https://cdn.tryordinal.com/assets/product-video.mp4",
        "mimetype": "video/mp4",
        "size": 5245678,
        "width": 1080,
        "height": 1920,
        "duration": 30,
        "tags": [
          {
            "username": "tryordinal",
            "x": 0.5,
            "y": 0.5
          }
        ]
      }
    ],
    "shareToFeed": true,
    "collaborators": [
      "tryordinal"
    ]
  }
}

Authorizations

Authorization
string
header
required

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

Body

application/json
title
string
required
publishAt
string<date-time>
required
status
enum<string>
required
Available options:
Tentative,
ToDo,
InProgress,
ForReview,
Blocked,
Finalized,
Scheduled,
Posted
labelIds
string<uuid>[]
campaignId
string<uuid>
notes
string
linkedIn
object
x
object

X (Twitter) channel configuration for creating or updating posts

instagram
object

Instagram channel configuration for creating or updating posts. The shape of the object depends on the type field.

Response

Post created successfully

id
string<uuid>
url
string<uri>
title
string
channels
string[]
status
enum<string>
Available options:
Tentative,
ToDo,
InProgress,
ForReview,
Blocked,
Finalized,
Scheduled,
Posted
createdAt
string<date-time>
updatedAt
string<date-time>
linkedIn
object

LinkedIn content with assets. Present when the post targets the LinkedIn channel.

x
object

X (Twitter) content with assets. Present when the post targets the Twitter channel.

instagram
object

Instagram content. Present when the post targets the Instagram channel. The shape depends on the type field.