Skip to content

Usage & billing

usage reflects real model token consumption for the turn, mapped into the OpenAI-compatible shape for whichever endpoint you called:

EndpointUsage shape
POST /v1/chat/completions{ prompt_tokens, completion_tokens, total_tokens }
POST /v1/responses{ input_tokens, output_tokens, total_tokens }
// Responses API
"usage": { "input_tokens": 812, "output_tokens": 143, "total_tokens": 955 }
// Chat Completions
"usage": { "prompt_tokens": 812, "completion_tokens": 143, "total_tokens": 955 }

Every turn made through the API is metered through the same path as the dashboard and the email/chat channels — API usage counts against the workspace’s normal budget and suspension rules. There’s no separate “API plan”; it’s the same spend as any other surface.

If the workspace is suspended or out of credits, a request fails before running with:

{ "error": { "message": "...", "type": "insufficient_quota", "param": null, "code": "insufficient_quota" } }

which the OpenAI SDK raises as PermissionDeniedError (HTTP 403). See the Errors table for the full list of error conditions.