Credits & billing
The API uses the same credits as the app: one pool per organization, with no surcharge for integrating.
Check your balance
With the credits:read scope, check your organization's current balance at any time:
GET /v1/credits
Authorization: Bearer bxk_…
{ "balance": 1234 }What charges and what doesn't
Only generation costs credits. Everything else — reading, pushing catalog, exporting — is free.
| Operation | Charge |
|---|---|
POST /v1/generations | Charges on success, per language generated. Failed languages don't charge. |
POST /v1/batches | Reserves credits on submit; when the result is ingested it charges successes and refunds the rest. |
POST /v1/batches/{id}/cancel | Refunds the batch's full reservation. |
GET · PATCH · DELETE … | Reads, upserts, edits and deletes don't charge. |
GET /v1/export/catalog.csv | Export doesn't charge: it was already paid when generating. |
If your balance isn't enough, generation responds 402 BEFORE generating — you're never left halfway or with unexpected partial charges.
Same prices as the app
Generating via API costs exactly the same as from the app (async batches are cheaper than sync generation, just like in the app). The balance is shared: whatever you spend via API shows up in Credits inside the app, and vice versa.
The daily AI spend cap is also shared with the app. Once reached, generation responds 429 without a Retry-After header — retrying won't fix it; it resets the next day (UTC).
Buying credits
Credits are purchased from the app, in the Credits section (the API doesn't sell credits). Buying requires the operator role or above; API keys only consume them.