Base URL
Self-hosting TryPost? The API lives at your
APP_URL followed by /api, for example https://trypost.yourdomain.com/api. Everything on these pages applies the same way.Authentication
Every request sends a workspace API key as a Bearer token in theAuthorization header:
Accept: application/json, as in every example on these pages. Without it, some errors (for example the 409 for a busy channel queue) come back as a redirect instead of a JSON body.
Create a key in the app under Settings → API Keys → Generate API Key (see API keys), or with Create API key. The key is shown once, when it is created. Store it right away; if you lose it, generate a new one.
API keys authenticate the REST API only. The MCP server uses OAuth sign-in, and an MCP token sent to the REST API is refused with 403 Personal access token required..
Who can use API keys
API keys work only for workspace admins: the account owner and members marked as admin. When the key’s owner is not an admin of the workspace, every request returns403 with Insufficient workspace permissions., and when they have left the workspace, 403 with Workspace access denied.. See Members and permissions.
One key, one workspace
A key is bound to the workspace it was created in. Every request acts on that workspace, whatever workspace you have open in the app, and resources of other workspaces answer404. To automate several workspaces, create one key in each.
Approvals
Admins publish directly, so a post created or edited through the API is never held for approval:status: scheduled schedules it and status: publishing publishes it right away.
Members who need approval still send requests from the app and the MCP server. Those posts show up in the API with status: pending_approval, and you can decide them with Approve post and Reject post. Get workspace returns your own permissions in me (is_admin, requires_approval, publishes_directly).
Subscription
On TryPost Cloud the workspace’s account needs an active subscription or trial. Without one, every request returns402:
Self-hosted installs have no billing, so they never return
402.AI features
AI writing and image tools are part of the web app only. The API has no AI endpoint, and creating a post through the API never calls AI. A repurpose may shorten a caption that is too long for a destination with AI (see Create repurpose).Rate limits
Each workspace can make 60 requests per minute. All keys of a workspace share that budget. Responses carryX-RateLimit-Limit and X-RateLimit-Remaining.
Six calls that reach a network directly also count against a second limit of 60 requests per minute per user, shared by the six of them, by all your workspaces, and by the same lookups in the app (channel, board and music pickers): List Pinterest boards, Create Pinterest board, List Discord channels, Get TikTok creator info, Search Instagram audio and Get Instagram audio. Instagram audio also has its own limit of 30 uncached lookups per minute per workspace.
Over the limit, the API answers 429 with a Retry-After header (seconds to wait):
Errors
The API uses standard HTTP status codes and always answers JSON with amessage.
Validation errors list the messages of each field under
errors, with the field path as key:
meta.board_id, content_type, content, media. On Create posts in batch it names the destination, for example destinations.0.meta.board_id.
Other errors carry only message:
Response shape
A single resource comes back as a plain object, with nodata wrapper:
{ "platforms": [...] }, List idea stages a plain array, List repurpose source formats { "data": [...] }, Create posts in batch { "posts": [...] }, and Create API key { "token": {...}, "plain_token": "..." }.
Posts, notes, ideas, idea stages, labels, signatures and the workspace give their timestamps as Y-m-d H:i:s in UTC (2026-10-12 14:00:00). API keys, webhooks, webhook logs, repurposes, uploads, free queue slots and channel post performance use ISO 8601. In analytics, top posts use Y-m-d H:i:s; publication analytics and coverage use ISO 8601. In requests, send dates as ISO 8601 with an offset or Z (2026-10-12T14:00:00Z).
Pagination
Lists such as posts, ideas, labels, signatures, social accounts, API keys, webhooks, webhook logs, repurposes and post notes are paginated. Pick a page with thepage query parameter:
per_page parameter. Read it from meta.per_page rather than assuming a number (it is 25 today). The response uses the standard envelope:
links.next until it is null.
Next steps
Posting
Pick a channel, fill its settings, then schedule, queue or publish a post.
Media uploads
Upload files, attach them from URLs and reuse media across posts.

