Developers

The API that actually posts.

Create and schedule posts across every platform from your own code, then poll each post for confirmed per-platform delivery. Same reliable posting engine, programmatic.

Overview

The PostDodo REST API lets you wire confirmed multi-platform posting into your own product, dashboard, or automation. It speaks JSON over HTTPS, uses predictable resource URLs, and returns standard HTTP status codes.

Heads up: the API is available on paid plans. Generate a key from Settings → API in your dashboard once you are on a plan.

Authentication

Authenticate every request with your secret API key as a bearer token. Keys are issued per workspace and carry the same account access you have in the app. Keep them server-side; never ship a key in client code.

Authenticated request
curl https://postdodo.com/api/v1/accounts \
  -H "Authorization: Bearer pd_live_YOUR_API_KEY"

A missing or invalid key returns 401 Unauthorized. Rotate a key any time from the dashboard; the old one stops working immediately.

Core endpoints

The resources you will use most:

GET/v1/accountsList your connected accounts and their ids
POST/v1/postsCreate and schedule a post
GET/v1/posts/:idRetrieve a post and its per-platform status
DEL/v1/posts/:idCancel a scheduled post before it publishes

Creating and scheduling a post

Send a caption, the target account_ids, and an optional scheduled_at (ISO 8601, UTC). Omit scheduled_at to publish immediately. Attach media by URL.

POST /v1/posts
curl https://postdodo.com/api/v1/posts \
  -H "Authorization: Bearer pd_live_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "Spring launch is live. Link in bio.",
    "accountIds": ["acct_x9f2", "acct_b3kp"],
    "scheduledAt": "2026-07-01T14:00:00Z",
    "media": [
      { "type": "image", "url": "https://cdn.example.com/launch.jpg" }
    ]
  }'

Response

You get back the post id, its status (scheduled, or publishing if immediate), and counts of how many targets posted vs failed. Poll the post for the full per-platform breakdown.

201 Created
{
  "id": "post_7Hq2Lp",
  "status": "publishing",
  "posted": 1,
  "failed": 0
}

Checking status later

Poll a post any time to see whether each target is posted, still publishing, or failed. A posted target includes the platform’s own url.

GET /v1/posts/:id
curl https://postdodo.com/api/v1/posts/post_7Hq2Lp \
  -H "Authorization: Bearer pd_live_YOUR_API_KEY"

Errors and rate limits

PostDodo uses conventional HTTP status codes: 2xx for success, 4xx for a problem with your request (a bad parameter, an expired account, an unauthorized key), and 5xx for a rare error on our side. Error bodies include a machine-readable code and a human message. Rate limits are returned in response headers; if you exceed them you get 429 Too Many Requests.

Get a key

Start a free trial, pick a plan, then generate an API key from Settings → API. Have a question on the API? Email support@postdodo.com and a real engineer answers.