Credits and billing
There is no separate meter for developers. A call through the TrueTone API or the TrueTone Connector spends the same credits as the same action in the app, at the same price, from the same balance. Your billing activity names where each spend came from, so every line reads as the app, the TrueTone API, or the TrueTone Connector, and points at what it produced.
Reads are free. Listing seeds, fetching a creation, checking your balance, reading your schedule: none of it is metered. Only calls that generate something spend credits, and every response that could have charged you says exactly what it did in a creditsCharged field. Free calls state "creditsCharged": 0 explicitly.
Prices
The table below is the live price catalog, the same one the app charges from:
How charging works
Metered calls reserve first and settle after:
- Reserve. Before any model runs, the price is reserved against your balance. If the reservation is refused, nothing runs and nothing is held.
- Capture on success. A successful response captures the reservation. The
creditsChargedfield tells you what was captured. - Release on failure. If generation fails, the reservation is released in full. A failed call is never billed.
Every refusal that happens before the reservation (a bad request, a missing capability, a rate limit, an unmatched locked region) costs nothing. You cannot be charged for a call that did not run.
Budget refusals are first-class responses
Three refusals are part of the normal contract, not exceptional states. Build for them.
Organization out of credits answers 402 with code insufficient_credits:
{
"error": "Insufficient AI credits",
"code": "insufficient_credits",
"actionKey": "generation.social_post",
"requiredCredits": 25,
"availableCredits": 3
}Per-member allowance exhausted answers 402 with code allocation_exceeded. The organization still has credits, but this member’s monthly allowance is spent:
{
"error": "Monthly credit allowance reached",
"code": "allocation_exceeded",
"actionKey": "generation.social_post",
"requiredCredits": 25,
"allowanceRemaining": 2
}Monthly spending cap reached answers 429. The cap is an organization-level ceiling checked before anything is reserved:
{
"error": "Monthly spending cap reached",
"currentSpend": 4980,
"spendingCap": 5000,
"billingPeriod": "2026-08"
}Branch on the literal code values rather than the prose; the messages may be polished over time, the codes will not. The numbers in these examples are illustrative placeholders; real values reflect your account.
Watching your budget from code is free: GET /api/v1/usage returns your balance, your seat allowance if you have one, and recent activity lines, without spending anything.