Billing & usage
Every model is paid for through one of two lanes, and the gateway adds no markup on either. Platform-funded calls draw down your credits; bring-your-own-key calls are billed by the provider directly.
cost_micro_usd.estimated_cost_micro_usd for attribution only.Which lane a model rides is decided per-provider by its waterfall: a deployment backed by one of your provider connections is pass-through; a platform-seeded deployment is platform-funded. Either way, zero markup.
A credit is the platform’s spendable unit, pegged at a flat one cent. It is what everything is priced in, so display, checkout, and spend never drift between dollars and tokens. Today a credit is simply a cent under a friendlier name: the only thing that draws credits is routed token usage, which stays zero margin (platform-funded calls draw credits at the provider’s catalog price, with nothing added on top).
You get credits two ways, both at one cent each. The Free plan refreshes a monthly allotment. A Pro plan grants a larger monthly allotment and unlocks the Pro features. One-off top-ups buy credits without a plan, at the same flat rate. There is no markup on routed tokens; any margin comes from plans, not from a credit spread.
A new organization starts with a welcome credit grant. Your balance is the credit granted minus your billable (platform-funded) spend; pass-through usage does not count against it. Balance, spend, adding credits, and auto-recharge live in the dashboard at Credits.
GET /api/gateway/usage/daily for spend by day, model, or member. See Telemetry.Spend is bounded at three levels, all configured in the dashboard:
A key can read its own effective limits over the API. GET /api/gateway/keys/<api_key_id>/limits returns the three ceilings with platform defaults folded in; a null value means uncapped, and source is explicit when set on the key or default otherwise. Setting limits is an admin dashboard action.
curl "https://api-pr-1518.preview.experientiallabs.ai/api/gateway/keys/$API_KEY_ID/limits" \-H "Authorization: Bearer $EXPLABS_API_KEY"
| field | Meaning |
|---|---|
| daily_spend_cap_micro_usd | Max platform-funded spend per day for this key (micro-USD). |
| requests_per_minute | Request-rate ceiling for this key. |
| tokens_per_minute | Token-rate (TPM) ceiling for this key. |
Some platform-funded models carry a promotional free daily tier (today gpt-6-astra and claude-fable-5.1); the model page shows the tier as its own "Free tier" rung above the regular pay-as-you-go rate. Eligibility is a saved card and one settled $1 charge on the organization — adding a card alone is not a charge. Each tier has per-org daily and hourly token allowances (the model page names the exact numbers); cached input tokens do not count against them.
429 insufficient_quota with a free_limit_reached message and does not spend credits. The daily allowance resets at 00:00 UTC, the hourly one at the top of the hour.POST /api/credits-overflow on the web host with Authorization: Bearer xpl_... (enable-only, idempotent). Before that, both answer 402 verification_required — add a card and complete the $1 verification to unlock it. Turn it off again from the same model-page row.service_tier: "flex" on a Chat Completions or Responses request to gpt-5.6-solforwards OpenAI's flex tier and bills its rate (50% of base) at cost; on a model without tier pricing it answers 400 unsupported_capability.When your credit balance, a spend limit, or a free tier is exhausted, calls fail with 429 insufficient_quota; the message says which: key_daily_cap, a budget, insufficient_credits, free_limit_reached, free_tier_requires_payment (add a card and a $1 charge), or promo_byok_only (the free tier is spent and your balance cannot cover the request). It is not transient: retrying does not clear it.
The full error contract is in Errors.