Help · for developers

The SupahPost API.

A secure door for your other software. Your own dashboard, Make, Zapier or an internal tool can read your numbers, your audience and your reports, and schedule posts — for one workspace, with a key you can take back at any time.

Want things sent to you instead? See sending events to your own software. Connecting a CRM or a tracker? See linked records. Back to the help center.

Make a key

In SupahPost, open Settings → Connections → Your own software and press Make a key. Copy it straight away: it is shown once. Only workspace admins can make keys, and a key works for the workspace it was made in and no other.

Choose what it can do:

  • read — accounts, brands, posts, metrics, audience, comments, earnings, reports, the queue.
  • write — also make drafts, schedule, edit and cancel posts, upload media and run saved reports.
  • publish — also reply to comments in public, as your accounts. Replies preview first unless you send "dry_run": false.

Choose what it can see: the whole workspace, or one brand. A key limited to a brand only ever sees that brand's accounts — every endpoint narrows to them, and asking about any other account or brand is refused. Earnings are hidden from a brand key unless you tick Include what this brand earns. Keys last 90 days and can be renewed or revoked in the same place; a revoked key stops working at once.

Making a request

Send the key in the Authorization header. Everything is JSON over HTTPS.

curl https://app.supahpost.com/api/v1/posts?range=last%207%20days&limit=20 \
  -H "Authorization: Bearer <your key>"
  • Dates — since and until as YYYY-MM-DD (both inclusive), or range in words: last 7 days, this month, last month.
  • Accounts — account_id takes one id or several, comma-separated, from GET /api/v1/accounts. Or pass brand with a key from GET /api/v1/brands.
  • Pages — a list answers {"data": [...], "has_more": true, "next_cursor": "…"}. Pass cursor to get the next page. A cursor belongs to the key and the question it came from; an edited one is refused.
  • Absent is not zero — a figure a platform does not report is missing or null, never 0. A 0 is a real measurement.
  • Unknown parameters are refused, so a misspelt filter can never quietly widen your question.

Errors and limits

Every error has the same shape: {"error": {"code": "not_found", "message": "…"}}. The message is written to be shown to a person.

  • 401 unauthorized — no key, or it was revoked or has expired.
  • 403 insufficient_scope / forbidden — the key cannot do that, or cannot reach that account.
  • 404 not_found — not in this workspace, or not visible to this key.
  • 400 — invalid_parameter, unknown_parameter, missing_parameter, invalid_cursor; 422 refused when the request was understood and cannot be done (the message says why).
  • 429 rate_limited — wait the number of seconds in the Retry-After header. Each key may make 120 requests a minute; your plan's monthly allowances and daily limits apply as they do everywhere else in SupahPost.

Bodies are limited to 1 MB; pictures and videos go through the media upload endpoint, which gives you an address to send the file to directly. Send an Idempotency-Key header when creating a post, and a retry after a timeout returns the original post instead of making a second one.

Make, Zapier and other tools

Use the tool's HTTP step: method and address from the reference, and a header named Authorization with the value Bearer followed by a space and your key. Tools that import an OpenAPI description can read /api/v1/openapi.json, which lists every endpoint and parameter when it is called with your key.

A few common calls

The connected social accounts (Facebook Pages, Instagram, TikTok, YouTube, X).

curl https://app.supahpost.com/api/v1/accounts \
  -H "Authorization: Bearer <your key>"

Published posts with their metrics — filter by account, brand, date and text.

curl "https://app.supahpost.com/api/v1/posts?range=last%207%20days&limit=20" \
  -H "Authorization: Bearer <your key>"

Account-level totals and the day-by-day series for a date range.

curl https://app.supahpost.com/api/v1/metrics?range=last%2030%20days \
  -H "Authorization: Bearer <your key>"

Earnings grouped by day, week, month, content type or weekday (monetized accounts only).

curl https://app.supahpost.com/api/v1/earnings?range=this%20month \
  -H "Authorization: Bearer <your key>"

The complete reference

Every endpoint, with its parameters and the values each one takes, opens once you are signed in: in SupahPost, go to Settings → Connections → Your own software and choose Full reference, next to where you make a key. The machine-readable version is the same address your tools import, called with your key.