Posting APIAPI

One POST to publish everywhere

Create a post once, list the accounts it should reach, and FoPost handles the formatting, media upload, and delivery for each network. Scoped keys, idempotent requests, and delivery status you can poll or receive by webhook.

POST /v1/posts
curl -X POST https://api.fopost.com/v1/posts \
  -H "X-API-Key: $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "workspaceId": "9b2f6c1e-...",
    "status": "published",
    "content": [{ "text": "Shipped a new release today.", "position": 0 }],
    "accounts": [{ "id": "4a71d80b-..." }, { "id": "c30e9f12-..." }]
  }'

Every network, one shape

The same request body publishes to X, LinkedIn, Instagram, and every other connected account.

Scoped keys

A key with the publish scope can post and nothing else. Revoke it without touching the others.

Delivery per account

Each account reports its own status, external id, and permalink once it is live.

Publish

Write the post once, target any set of accounts

Pass the text, media, and the accounts to reach. FoPost applies each network’s limits and conventions, uploads media in the format the platform wants, and returns a post id you can track. Threads, carousels, and long-form bodies all ride on the same content array.

Read the posting reference
Response
{
  "id": "post_01j8...",
  "status": "published",
  "deliveries": [
    { "accountId": "4a71d80b-...", "platform": "twitter", "status": "delivered", "externalUrl": "https://x.com/..." },
    { "accountId": "c30e9f12-...", "platform": "linkedin", "status": "delivered", "externalUrl": "https://linkedin.com/..." }
  ]
}

Content blocks

Ordered blocks become a thread, a carousel, or a body depending on the network.

Media by reference

Upload once to the media library and attach by id to any number of posts.

Idempotent

Send an idempotency key and a retried request never double-posts.

Track

Know exactly where every post landed

A post fans out into one delivery per account. Poll the deliveries endpoint or subscribe to a webhook and you get the platform status, the external id, the permalink, and the error text when a network rejects something.

See webhook events
Connected accounts across every network in one workspace

Deliveries endpoint

GET /v1/posts/:id/deliveries lists every account with its own status.

Webhook events

post.published and post.failed fire the moment a delivery settles.

Retries built in

Transient platform errors retry with backoff before they surface as failed.

Manage

Edit, cancel, and delete from code

The full lifecycle is on the API. Update a scheduled post before it goes out, cancel it, or delete a published post from the network it landed on. Labels and workspaces keep client work separated when you run more than one brand.

Start building
PATCH /v1/posts/:id
curl -X PATCH https://api.fopost.com/v1/posts/post_01j8... \
  -H "X-API-Key: $API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "content": [{ "text": "Updated copy.", "position": 0 }] }'

Edit before publish

Change text, media, or accounts on anything still in the queue.

Labels

Tag posts by campaign or client and filter every list endpoint by label.

Workspaces

Keys are per workspace, so one client can never reach another.

Posting API questions, answered

How do I authenticate?

Create an API key in the dashboard under Settings, then send it in an X-API-Key header. Each key belongs to one workspace and carries only the scopes you grant it.

Which networks can I post to?

Every account connected to the workspace, across every network FoPost supports. The request shape is the same for all of them.

Can I attach images and video?

Yes. Upload through the Media API once, then reference the media id in the post. Per-network size and format limits are applied for you.

What happens if a network is down?

The delivery retries with backoff. If it still fails, the delivery is marked failed with the platform error, and a post.failed webhook fires.

Is there a rate limit?

Yes, 100 requests per minute per key. The limit and remaining count are returned in response headers.

Is there an SDK?

A typed TypeScript SDK, an MCP server for AI clients, and free PHP, Laravel, and WordPress packages. The OpenAPI spec is served from the API for any other language.

Build on the Posting API today

Starting is free and the full API is included. Create a key and make your first call in minutes.

Get your API key