Endpoints
Plan allowances
Prices are in USD. 100 MB is 104,857,600 bytes.
What each limit returns when you reach it:
Two features depend on the plan rather than on an allowance:
- WhatsApp template messages need a paid plan. On the Free plan,
POST /v1/platforms/whatsapp/accounts/{id}/send-templatereturns403 whatsapp.paid_plan_required. Replies to people who messaged you first work on every plan. See WhatsApp. - Visual analysis in exports (
include_vision) needs a paid plan. On the Free plan, SocialAPI ignoresinclude_vision: trueand runs the export without it.
Profile packs
On the Pro (Full Send) and Business (Empire) plans, your brand allowance grows in Profile packs of 50 brands. When your brand count reaches the scale threshold of your allowance (90% by default), SocialAPI adds a pack, within the pack budget you set. Packs you no longer need are released at the end of the billing period. Set the threshold and the budget in the dashboard under Billing. Each pack held raisesbrands_limit in GET /v1/usage by 50.
History and export allowances
Your SocialAPI account runs 1 export at a time on every plan. When an export cannot start:
- The billing period’s export allowance is used up:
429 billing.export_limit. It resets at the start of the next billing period. - The same connected account was exported less than the wait above ago:
429 billing.export_cooldown. - Another export is still running:
429 billing.export_concurrent.
400 account.exports_not_supported.
The plan catalog
GET /v1/billing/plans returns every plan with its prices and allowances, ordered from cheapest to most expensive. Read it instead of hardcoding the table above. Any API key can call it, and it costs no credits.
What counts as a post or interaction
Post and interaction credits are counted on plans with a post or interaction allowance (the Free plan). On plans where both are unlimited, nothing is counted andposts_used and interactions_used stay at 0.
1 post credit for each of these requests:
POST /v1/postswithpublish_now: trueor ascheduled_at. Saving a draft costs nothing.POST /v1/posts/{pid}/publish, which publishes a draft or a scheduled post. It costs 1 credit even when the post was scheduled withPOST /v1/posts, which already cost 1 credit.POST /v1/posts/{pid}/retry.
- A public reply to a comment:
POST /v1/inbox/comments/{postId}. - A reply to a review:
POST /v1/inbox/reviews/{id}/reply. - A reply to a mention:
POST /v1/accounts/{id}/mentions/reply. - A DM:
POST /v1/inbox/conversations/{id}/messages. One request costs 1 credit, even when it sends more than one message. - A WhatsApp template:
POST /v1/platforms/whatsapp/accounts/{id}/send-template.
When a credit comes back
SocialAPI gives the credit back when:- Any request that costs a credit fails with a
validation.*error. POST /v1/postsfails withpublishing.validation_failed.POST /v1/posts,POST /v1/posts/{pid}/publish, orPOST /v1/posts/{pid}/retryfails with429 publishing.velocity_limit.- Every target of
POST /v1/postswithpublish_now: true, or ofPOST /v1/posts/{pid}/publish, fails. - SocialAPI refuses a reply or DM before sending it because the conversation’s messaging window is closed (see Direct messages).
403 account.permission_missing is never charged: see Permissions. Any other failure keeps the credit spent. That includes a request the platform refuses (for example 429 platform.{platform}.rate_limit on a reply or DM), a 409 resource.conflict for duplicate content, a post that fails on only some of its targets, and a retry that fails again.
Billing periods
Allowances reset at the start of each billing period.- Paid plans: the billing period is your subscription’s current period. It starts on the date you subscribed and renews with each payment.
- Free plan: the billing period starts at 00:00 UTC on the day of the month your SocialAPI account was created, and ends at the same time on that day of the next month.
period_start and period_end in GET /v1/usage give the exact bounds of the current period.
Check your usage
GET /v1/usage returns what you used in the current billing period and your allowances. Any API key can call it, and it costs no credits.
GET /v1/media/storage returns your media storage: used_bytes, limit_bytes (-1 means unlimited), and count, the number of stored files. Any API key can call it, whatever its scopes, and it costs no credits.
Usage headers
Responses also report usage in headers, so you can track it without callingGET /v1/usage:
When you reach an allowance
Over the post or interaction allowance, the request returns HTTP 429 and nothing is sent:validation.interaction_limit_exhausted. Both reset at period_end. To continue before then, upgrade your plan.
POST /v1/posts/import checks the allowance before it creates anything. When the CSV holds more valid rows than you have post credits left, drafts included, it returns 429 billing.post_limit and creates no post.
The posting velocity caps are separate from plan allowances: upgrading does not raise them. See Rate limits.
Change or cancel your plan
Change or cancel your plan in the dashboard under Billing. A cancelled subscription moves your SocialAPI account to the Free plan at the end of the billing period. When a plan change lowers your allowances:- Brands above the new allowance stay. Creating another brand returns
403 billing.brands_limituntil you are below the allowance.
Past-due accounts
Your SocialAPI account becomes past due when a subscription payment fails for the second time (the first charge and one automatic retry). While it is past due:- API: every endpoint returns
402 billing.past_due, except every method of/v1/users/meand every/v1/billing/*endpoint, which stay available so you can pay. - MCP server: every request returns HTTP 402 with the code
billing.past_due. - Webhooks: SocialAPI delivers no events to your webhook endpoints. Events from this time are not queued, get no delivery record, and are not sent after you pay.
- Automations: Automations carry out no actions and record no Firings.
- Platform events: SocialAPI still records comments, messages, and other platform events. Read them with
GET /v1/eventsafter you pay, within your plan’s event history. - Scheduled posts: scheduled posts still publish at their scheduled time.
GET /v1/users/me shows the state: billing_blocked is true, billing_blocked_at is when it began, and billing_block_reason is past_due.
Pay the open invoice in the dashboard under Billing to restore access. Access returns when the payment succeeds, with no request to make. If every automatic retry fails and the subscription is cancelled, your SocialAPI account moves to the Free plan and access returns on the Free plan’s allowances.
Use from an AI agent
Related
- Rate limits: posting velocity caps, and platform limits that apply on every plan
- Errors: every
billing.*code with its status - Media: uploads, storage, and the storage quota
- Webhooks: event delivery and the delivery log
- Automations: what each action costs