Chirio
Get Started
Introduction
Quickstart
How Chirio works
Authentication
Platforms
Overview
Instagram
Threads
X
LinkedIn
Supa Hub
Guides
Connect accounts
Publish a post
Media requirements
Carousels
First comments
Idempotency and retries
Account lifecycle
Revocation and deletion
The dashboard
Billing
Plans
Metering
Quotas
Api Reference
Overview
Accounts
Posts
Errors
Changelog
Roadmap
TrademarkTrademark
Ctrl k
Search…
Sign up
Chirio
Get Started
Introduction
Quickstart
How Chirio works
Authentication
Platforms
Overview
Instagram
Threads
X
LinkedIn
Supa Hub
Guides
Connect accounts
Publish a post
Media requirements
Carousels
First comments
Idempotency and retries
Account lifecycle
Revocation and deletion
The dashboard
Billing
Plans
Metering
Quotas
Api Reference
Overview
Accounts
Posts
Errors
Changelog
Roadmap
TrademarkTrademark© Dopler. All rights reserved.
Built with Aveiro

Quotas

When a publish is refused, when it bills overage, and how to handle 429 quota_exceeded.
Updated 1mo ago
Metering
Quota is checked inside the publish call — after every error you could fix, before any platform call. That position is the whole design: a refused request has cost you nothing and published nothing.

The verdict

Situation
Outcome
Within the allowancePublishes
Over the allowance, plan has overage (Indie, Studio, Scale, Enterprise)Publishes; the excess bills as overage
Over the allowance, plan stops at it (Free)`429 quota_exceeded`, nothing published

The 429

The message names what the request needed and what is left, so you can surface it to a user without a second lookup.
A 429 is all-or-nothing
The whole request is refused before any target is attempted. Nothing published, nothing was billed, and no partial state was left behind.

Scheduled posts are checked when they go out

A post carrying publishAt is priced at submission like any other, but the binding check is the one the dispatcher runs at send time — the allowance it has to fit in is the one in force then, which may be a different billing window entirely. If the allowance has run out by then, the post's targets are marked failed with quota_exceeded in error. They are not retried and not silently dropped, so a post that missed its slot for lack of allowance says so in its own record rather than disappearing.
Worth watching if you schedule far ahead
A campaign queued weeks out on a plan that stops at its allowance can be refused on the day. Either keep headroom, or use a plan with overage so a scheduled post is never the thing that gets dropped.

Handling it

  • Upgrade, or wait for the window to roll.
  • Split the request. Six writes may not fit where three do — publish the important targets first.
  • Retry with the same idempotency key once there is room. A replay is safe: it either returns the original post or publishes cleanly.

The estimate is an upper bound

The check prices the request as if every target and every comment succeeds. What you are billed is what actually happened, so a request refused at 6 units might only ever have cost 4. That asymmetry is intentional — refusing on the estimate can never over-publish, whereas checking after the fact could.

Windows

The allowance resets per billing window: your subscription anniversary on a paid plan, the calendar month otherwise. Current usage is visible in Settings → Billing.

Accounts and projects

Separate from write volume, each plan caps connected accounts and projects. Those limit what you can hold, not what you publish — you hit them when connecting, not when publishing. Disconnecting an account frees its slot. See Plans.
{
  "error": {
    "code": "quota_exceeded",
    "message": "This publish needs 6 network writes and the Free plan has 2 of 100 left in this billing period. Upgrade to publish more."
  }
}