Ordinal

Connect your AI agents to Ordinal.

Authentication: API key or company API key. See Magic Link for the runtime auth flow.

Sample use cases

  • Draft a LinkedIn post from a product update and schedule it for Tuesday at 9am
  • Pull post analytics for last month’s X posts and rank them by engagement
  • List posts waiting on approval and notify each reviewer

Available Tools

get_linkedin_follower_growth

Retrieve follower counts over time for a connected LinkedIn profile, as one data point per recorded day. Use…

get_linkedin_post_analytics

Retrieve per-post LinkedIn metrics for a connected profile: impressions, reactions, comments, shares, clicks, video…

get_x_follower_growth

Retrieve follower counts over time for a connected X profile, as one data point per recorded day. Use…

get_x_post_analytics

Retrieve per-post X metrics for a connected profile: impressions, likes, replies, retweets, quotes, bookmarks…

get_analytics_cpm

Read the workspace’s cost-per-mille values per platform. These are the multiplier behind the emv figure on every…

update_analytics_cpm

Set the workspace’s cost-per-mille values, one or more platforms at a time. This retroactively changes the emv…

list_post_approvals

List the approval requests on a post, showing who was asked, who has signed off, and which requests block…

create_approvals

Ask one or more workspace members to approve a post, optionally with a note, due date, and a blocking flag that…

delete_approval

Withdraw an approval request from a post. If it was blocking, the post can publish again. Use list_post_approvals to…

list_post_comments

List the team’s comments on a post, oldest first, with who wrote each one. These are internal review comments, not…

create_post_comment

Add an internal comment to a post for the team to see. To notify someone, mention them as @[Display Name](userId)…

delete_comment

Delete an internal comment from a post. Use list_post_comments to find comment IDs.

list_post_inline_comments

List inline comment threads on a post, each anchored to a highlighted piece of draft copy, with its replies and…

list_company_workspaces

List every workspace in the company. Requires a company API key, not a workspace key. Returns the workspace IDs that…

create_company_workspace

Create a new workspace in the company, optionally seeding it with members. Requires a company API key. Returns the…

get_company_workspace

Retrieve one workspace in the company by ID, including its timezone. Requires a company API key. Use…

list_workspace_api_keys

List the API keys issued for one workspace, with their names and last-used times. The key values are never returned…

create_workspace_api_key

Mint a new API key for one workspace. Requires a company API key. The key value is returned once here and never…

list_post_engagements

List the likes, comments, and reposts queued on a post for teammates’ profiles to perform after it publishes, with…

create_post_engagements

Queue likes, comments, or reposts that teammates’ profiles perform automatically after a post publishes. Call…

update_engagement

Change a queued engagement’s comment text, delay, profile, or LinkedIn reaction. Only the fields you pass change…

delete_engagement

Remove a queued engagement so that profile will not like, comment, or repost when the post publishes. Use…

list_ideas

List unscheduled ideas, newest first. Filters by channel, profile, label, and creation date are applied by Ordinal…

create_idea

Create an unscheduled idea with copy for LinkedIn, X, TikTok, or YouTube Shorts. Ideas have no publish time; use…

get_idea

Retrieve one idea with its per-channel copy and media. Use list_ideas to find idea IDs.

update_idea

Update an idea’s title, labels, campaign, notes, or per-channel copy. Only the fields you pass change. Use…

archive_idea

Archive an idea, moving it out of the idea list into the trash. Use unarchive_idea to restore it, and list_ideas to…

unarchive_idea

Restore an archived idea back to the idea list. Use list_ideas to find idea IDs.

add_idea_to_calendar

Promote an idea to a calendar post on a given date, carrying its copy across. Returns the new post ID, which…

list_invites

List workspace invitations that have not been accepted yet, with who sent each one. For members who have already…

create_invite

Invite someone to the workspace by email. Ordinal emails them immediately, so only call this for a real teammate…

delete_invite

Revoke a pending workspace invitation so the link stops working. Use list_invites to find invite IDs.

list_labels

List the labels defined in the workspace, with their IDs and colors. Call this before create_post, update_post…

create_label

Create a workspace label that can then be assigned to posts and ideas. Returns the new label ID for use as a…

delete_label

Delete a workspace label. It is removed from every post and idea that carried it. Use list_labels to find label IDs.

get_linkedin_mention_format

Resolve a LinkedIn vanity name into the @[Name](urn) string LinkedIn post copy needs to tag a person or company…

get_linkedin_profile

Look up a LinkedIn person or company by URN and get their display name, vanity name, and avatar. Use…

search_instagram_locations

Search Instagram locations by name for the pageId that tagging a location on an Instagram Feed or Reel post needs…

list_posts

List posts on the Ordinal calendar, newest first. Filters by status, channel, profile, label, publish date, and…

create_post

Create a post with copy for one or more channels. Call list_scheduling_profiles for profileIds, list_labels for…

get_post

Retrieve one post with its full per-channel copy, media, labels, and schedule. Use list_posts to find post IDs. For…

update_post

Update a post’s title, publish time, status, labels, notes, or per-channel copy. Only the fields you pass change…

archive_post

Archive a post, moving it off the calendar into the trash without publishing it. Use unarchive_post to restore it…

unarchive_post

Restore an archived post back onto the calendar. Its schedule is not restored, so follow with schedule_post if it…

schedule_post

Queue a post to publish, optionally at a new time. This makes the post go live on the connected social accounts at…

unschedule_post

Remove a post from the publishing queue and return it to a draft status. The copy is kept. Use schedule_post to…

list_post_versions

List saved draft versions of a post’s copy, grouped by channel, with who edited each one. Returns metadata only, so…

get_post_version

Read the plain-text copy of one saved draft version for one channel. Use list_post_versions to find version IDs and…

list_scheduling_profiles

List the connected social accounts posts can publish from, with the profile IDs that create_post, update_post…

list_engagement_profiles

List the connected social accounts that can like, comment, and repost on behalf of the team, with the profile IDs…

list_slack_webhooks

List the Slack channels connected to the workspace, with the slackWebhookId values create_slack_boost and…

list_post_slack_boosts

List the Slack notifications queued on a post, which channel each goes to, and whether Ordinal added it…

create_slack_boost

Queue a Slack notification asking a channel to go engage with a post when it publishes. Call list_slack_webhooks for…

get_slack_boost

Retrieve one Slack boost with its message text and target channel. Use list_post_slack_boosts to find boost IDs.

update_slack_boost

Change a Slack boost’s message text or move it to a different channel. Only the fields you pass change. Use…

delete_slack_boost

Remove a Slack boost so no notification is sent for the post. Use list_post_slack_boosts to find boost IDs.

list_post_subscribers

List the workspace members subscribed to notifications about a post, and who added each of them. Use list_posts to…

add_post_subscribers

Subscribe workspace members to notifications about a post. Call list_users for userIds and list_posts for the…

delete_subscriber

Unsubscribe a member from a post’s notifications. Use list_post_subscribers to find subscriber record IDs, which are…

upload_file_from_url

Import an image or video from a public URL so it can be attached to a post. Returns an upload job, not an asset…

prepare_file_upload

Reserve an upload slot and get signed credentials for sending local file bytes to Ordinal yourself, as a multipart…

get_upload_status

Check an upload job and read its assetId once processing finishes. Status is ‘pending’ or ‘processing’ while Ordinal…

list_webhooks

List the webhooks configured in the workspace, with their delivery URLs and subscribed event topics. Use get_webhook…

create_webhook

Create a webhook that POSTs Ordinal events to a URL. Subscribe to topics such as post.published…

get_webhook

Retrieve one webhook with its delivery URL, subscribed topics, and custom headers. Use list_webhooks to find webhook…

update_webhook

Change a webhook’s name, delivery URL, subscribed topics, description, or custom headers. Passing topics or headers…

delete_webhook

Delete a webhook so Ordinal stops delivering events to it. Use list_webhooks to find webhook IDs.

get_workspace

Retrieve the workspace this API key belongs to: name, slug, and the IANA timezone that publishDate values and the…

list_users

List workspace members with the user IDs that create_approvals, add_post_subscribers, and @[Name](userId) comment…