Ordinal
OfficialDraft, schedule, analyze, and manage social media content across multiple platforms.
Tools (63)
analytics-linkedin-followers
LinkedIn follower growth Retrieve follower count history for a LinkedIn profile [GET /analytics/linkedin/{profileId}/followers]
analytics-linkedin-posts
LinkedIn post analytics Retrieve post analytics for a LinkedIn profile within a date range. When a post was published from Ordinal, the response includes an ordinalPost object with the linked post's id, title, labels, and campaign. [GET /analytics/linkedin/{profileId}/posts]
analytics-x-followers
X follower growth Retrieve follower count history for an X profile [GET /analytics/x/{profileId}/followers]
analytics-x-posts
X post analytics Retrieve post analytics for an X profile within a date range. When a post was published from Ordinal, the response includes an ordinalPost object with the linked post's id, title, labels, and campaign. [GET /analytics/x/{profileId}/posts]
analytics-cpm-get
Get CPM Values Retrieve the current CPM (Cost Per Mille) values used for EMV (Earned Media Value) calculations across all platforms. CPM values represent the cost per 1,000 impressions for each social media platform. [GET /analytics/cpm]
analytics-cpm-update
Update CPM Values Update the CPM (Cost Per Mille) values used for EMV (Earned Media Value) calculations. You can update one or more platform CPM values in a single request. Only provide the platforms you want to update. [PUT /analytics/cpm]
approvals-create
Create approval requests Create one or more approval requests for a post [POST /approvals]
approvals-delete
Delete approval Delete an approval request [DELETE /approvals/{id}]
approvals-list
List post approvals List all approval requests for a specific post [GET /posts/{postId}/approvals]
engagements-list
List for a post List all engagements (likes, comments, reposts) configured for a specific post [GET /posts/{postId}/engagements]
engagements-create
Create for a post Add engagements (likes, comments, reposts) to a post. Engagements will be executed automatically when the post is published. **Tagging on LinkedIn:** To mention someone in a comment or repost, use the format `@[Display Name](urn)`. See [LinkedIn Mentions](/api/linkedin-mentions) for details on how to look up URNs. **LinkedIn reaction types:** For Like engagements on LinkedIn, you can specify a reaction type (Like, Celebrate, Love, Insightful, Support, Funny). Defaults to Like if not specified. Must not be provided for Comment or Repost. **Validation rules:** - `copy` is required for Comment, optional for Repost, must not be provided for Like - `delaySeconds` is required for Comment and Repost (allowed values: 0, 300, 600, 1800, 3600, 14400, 28800, 43200, 86400 seconds), must not be provided for Like - `reactionType` is only for Like engagements on LinkedIn (defaults to Like if omitted) - Only one Like engagement per profile is allowed [POST /posts/{postId}/engagements]
engagements-update
Update an engagement Update an existing engagement's copy, delay, profile, or reaction type. **Validation rules:** - `copy` cannot be updated for Like engagements - `copy` cannot be removed from Comment engagements (must have content) - `delaySeconds` cannot be updated for Like engagements - `reactionType` can only be updated for Like engagements on LinkedIn - When changing `profileId`, the new profile must have the required engagement permissions - Cannot update engagements for posts that have already been published - Only one Like engagement per profile is allowed (cannot change profileId to a profile that already has a Like) [PATCH /engagements/{id}]
engagements-delete
Delete an engagement Remove an auto-engagement from a post [DELETE /engagements/{id}]
invites-list
List pending invites List all pending invites for the workspace [GET /invites]
invites-create
Create an invite Invite a user to the workspace by email. If the user already has an Ordinal account, they will be added to the workspace immediately. Otherwise, an invite email will be sent. [POST /invites]
invites-delete
Delete an invite Delete a pending invite. This will prevent the invited user from joining the workspace using this invite. [DELETE /invites/{id}]
labels-list
List all labels List all labels in the workspace [GET /labels]
labels-create
Create a label Create a new label in the workspace [POST /labels]
labels-delete
Delete a label Delete a label from the workspace [DELETE /labels/{id}]
linkedin-leads-listPosts
List posts Returns all LinkedIn posts for a profile with scraped lead counts (reactions, comments, reshares). Supports pagination and filtering by date range. Requires leads scraping to be enabled for the profile. [GET /linkedin/leads/{profileId}/posts]
linkedin-leads-getLeadsByPost
Get posts leads Returns leads (reactions, comments, reshares) for a specific LinkedIn post. Supports filtering by engagement type and minimum follower count. [GET /linkedin/leads/{profileId}/posts/{postId}]
linkedin-getMention
Mention format by username Look up the mention format for a LinkedIn user or organization by their username to use in posts or comments. The username is the part after `/in/` or `/company/` in a LinkedIn profile URL: - Personal profile: `linkedin.com/in/johndoe` - username is `johndoe` - Company page: `linkedin.com/company/acme-inc` - username is `acme-inc` Returns both user and organization results if a username matches both (rare but possible). [GET /linkedin/{username}/mentions]
linkedin-getProfile
Get LinkedIn profile by URN Look up a LinkedIn user or organization by their URN (e.g. `urn:li:person:xyz` or `urn:li:organization:xyz`) to get the username, name, and profile picture. [GET /linkedin/profile/{urn}]
instagram-searchLocations
Search Instagram locations Search for locations to tag in Instagram posts. Requires at least one Instagram profile connected to the workspace. [GET /instagram/locations/search]
ideas-list
List ideas List all ideas in the workspace with pagination and filtering. Archived ideas are excluded from results. [GET /ideas]
ideas-create
Create idea Create a new idea in the workspace. At least one channel (linkedIn or x) is required. [POST /ideas]
ideas-get
Get idea Get a single idea by ID. [GET /ideas/{id}]
ideas-update
Update idea Update an existing idea by ID. All fields are optional - only include the fields you want to update. Archived ideas cannot be updated; unarchive them first. [PATCH /ideas/{id}]
ideas-archive
Archive idea Archive an idea by ID. The idea is moved to Trash and will be permanently deleted after 30 days. Use the unarchive endpoint to restore it. [POST /ideas/{id}/archive]
ideas-unarchive
Unarchive idea Restore an archived idea from Trash. The idea will no longer be scheduled for permanent deletion. [POST /ideas/{id}/unarchive]
ideas-add-to-calendar
Add idea to calendar Convert an idea to a calendar post by assigning it a publish date. The idea becomes a regular post that can be scheduled. [POST /ideas/{id}/add-to-calendar]
posts-list
List posts List all posts in the workspace with pagination and filtering. Archived posts are excluded from results. [GET /posts]
posts-create
Create post Create a new post in the workspace. At least one channel (linkedIn, x, or instagram) is required. [POST /posts]
posts-get
Get post Get a specific post by ID [GET /posts/{id}]
posts-update
Update post 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. [PATCH /posts/{id}]
posts-archive
Archive post Archive a post by ID. The post is moved to Trash and will be permanently deleted after 30 days. Use the unarchive endpoint to restore it. [POST /posts/{id}/archive]
posts-unarchive
Unarchive post Restore an archived post from Trash. The post will no longer be scheduled for permanent deletion. [POST /posts/{id}/unarchive]
posts-schedule
Schedule or reschedule post Schedule a post for publishing, or reschedule an already scheduled post to a new time. The post must have at least one channel with a connected profile. Archived posts cannot be scheduled; unarchive them first. [POST /posts/{id}/schedule]
posts-unschedule
Unschedule post Cancel a scheduled post. The post status will be changed to Finalized and any pending scheduled publishes will be cancelled. [POST /posts/{id}/unschedule]
uploads-create
Upload a file from a URL Uploads a file by downloading it from the provided URL. The file will be processed asynchronously. Poll the GET endpoint to check when it's ready, then use the returned assetId in post creation. **Supported file types:** - Images: JPEG, PNG, GIF, WebP - Videos: MP4, QuickTime (MOV) **File size limits:** - Images: 10 MB max - GIFs: 15 MB max - Videos: 350 MB max **Additional constraints:** - Images cannot exceed 36 megapixels - URL must be publicly accessible [POST /uploads]
uploads-get
Get upload status Returns the current status and metadata of an upload. Poll this endpoint until status is 'ready', then use the returned assetId when creating posts. [GET /uploads/{id}]
profiles-listEngagement
List engagement profiles List all engagement-only profiles in the workspace. Engagement profiles can only be used for auto-engagements. [GET /profiles/engagement]
profiles-listScheduling
List scheduling profiles List all scheduling profiles in the workspace. Scheduling profiles support scheduling, auto-engagement, and analytics capabilities. [GET /profiles/scheduling]
comments-list
List post comments List all comments on a post, ordered by creation time (oldest first) [GET /posts/{postId}/comments]
comments-create
Create a comment on a post Add a comment to a post. Supports @mentions using the format `@[Display Name](userId)`. Tagged users must be workspace members. The commenter and any tagged users are automatically subscribed to the post. [POST /posts/{postId}/comments]
comments-delete
Delete a comment Delete a comment from a post. Only the author of the comment can delete it. [DELETE /comments/{commentId}]
inline-comments-list
List inline comments on a post Returns inline comments (text-anchored comments) from all channels on a post. Optionally filter by channel or resolution status. [GET /posts/{postId}/inline-comments]
subscribers-list
List post subscribers List all subscribers for a specific post [GET /posts/{postId}/subscribers]
subscribers-create
Add subscribers to post Add one or more subscribers to a post [POST /subscribers]
subscribers-delete
Delete subscriber Remove a subscriber from a post [DELETE /subscribers/{id}]
users-list
List workspace users List all users in the workspace [GET /users]
webhooks-list
List webhooks List all webhooks for the current workspace. [GET /webhooks]
webhooks-create
Create webhook Create a webhook for the current workspace. The webhook will receive events for the specified topics. [POST /webhooks]
webhooks-get
Get webhook Get a webhook by ID for the current workspace. [GET /webhooks/{id}]
webhooks-update
Update webhook Update an existing webhook for the current workspace. All fields are optional—only include the fields you want to update. [PATCH /webhooks/{id}]
webhooks-delete
Delete webhook Delete a webhook from the current workspace. The webhook will no longer receive events. [DELETE /webhooks/{id}]
slack-boosts-list-by-post
List post's slack boosts List all slack boosts for a specific post in the current workspace. [GET /posts/{postId}/slack-boosts]
slack-boosts-create
Create slack boost Create a slack boost for a post. When the post publishes, Ordinal sends a notification to the selected Slack channel. Each post can have at most one slack boost. Use a `slackWebhookId` from a [connected Slack marketing boost channel](/integrations/slack). [POST /slack-boosts]
slack-boosts-get
Get slack boost Get a slack boost by ID for the current workspace. [GET /slack-boosts/{id}]
slack-boosts-update
Update slack boost Update an existing slack boost. Only include fields you want to change. Set `copy` to `null` to clear the custom message. [PATCH /slack-boosts/{id}]
slack-boosts-delete
Delete slack boost Delete a slack boost. The Slack notification will no longer be sent when the post is published. [DELETE /slack-boosts/{id}]
slack-webhooks-list
List slack webhooks List all Slack webhooks (connected marketing boost channels) for the current workspace. Use an `id` from this list as `slackWebhookId` when creating a slack boost. [GET /slack-webhooks]
workspace-get
Get workspace Get details about the current workspace [GET /workspace]