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\nAfter months of hard work, we're thrilled to share what we've been building.\n\nKey highlights:\n• Feature A\n• Feature B\n• Feature C\n\n#ProductLaunch #Innovation"
  },
  "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"
  ],
  "status": "Scheduled",
  "createdAt": "2026-01-05T10:30:00.000Z",
  "updatedAt": "2026-01-05T10:30:00.000Z"
}

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

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>