Pricing and billing
How the API Platform bills model usage: the provider's list price with no markup, paid from prepaid credit, with spend limits you set.
Early access. The API Platform is deployed but switched off by default. Safeguard switches it on per workspace, and makes each model available only after it passes Safeguard's launch checks. A model in the catalog is not necessarily one you can call yet.
No markup on model usage
Third-party models are billed at the provider's list price. Safeguard adds nothing on top: every model in GET /gpt/v1/models carries markup_percent: 0, and the gateway has no setting that could add a margin.
Each price in the model catalog is the provider's own published price per million tokens. It is read on the provider's pricing page and stored with that page's address and the date it was checked, never taken from an aggregator. Every model and its price is on safeguard.sh/models.
A model is served through the API only when the catalog lists both its input and its output price. A missing price is never treated as zero. Models whose provider charges by time of day (DeepSeek, today) are not served either, because one flat rate would charge more than the provider's off-peak price.
Safeguard's own models
None of Safeguard's own models can be called through the API yet. The catalog lists Griffin at $0.0001 per million input tokens and $0.0001 per million output tokens, Eagle at $0.00001 and $0.00001, Lion at $0.000001 and $0.000001, and Zero, which uses no model tokens, at $0. When they can be called, they are billed at those catalog rates, the same way as every other model. See Safeguard models, safeguard.sh/models and safeguard.sh/pricing.
How a request is priced
A request costs its input tokens times the input price, plus its output tokens times the output price, with prices per million tokens. Amounts are kept to eight decimal places.
- Token counts are the provider's own figures.
- Cached input tokens are billed at the provider's cached-input price when the catalog lists one, and at the input price otherwise.
- A non-streamed response carries its cost in US dollars in
usage.cost. For a stream, setstream_options.include_usageand the last chunk carries it. - If a provider reports no token counts, for example when a stream ends early, the gateway bills an estimate based on the length of the text. The response's
usagesaysestimated: true, and the request log marks the request est. - A request that fails before the provider produces any output costs nothing.
Closing the connection does not stop the charge. When a streaming client goes away, the gateway keeps reading the provider's stream to the end, so it can bill the provider's own counts rather than a guess. Stopping a run in the Workbench works the same way.
Prepaid credit
Model usage is paid from prepaid credit held by your workspace. Usage › Credits and limits in the Console shows it:
| Figure | What it is |
|---|---|
| Balance | Credit on the workspace. |
| Reserved | Held for requests that are still running. |
| Available | Balance minus reserved: what new requests can use. |
| Spent this month | Usage this calendar month (UTC), against the workspace limit if one is set. |
Before each call, the gateway reserves the most the request could cost: a generous estimate of the input, plus every output token it may produce, at the highest price among the models it may use. If you don't set max_tokens, the gateway sets one (a server default, or the model's maximum output if that is lower). After the call it releases the hold and charges the actual cost. A smaller max_tokens means a smaller hold.
Credit is a hard stop. A request whose maximum cost doesn't fit the available credit is refused with 402 insufficient_credit before it reaches the provider. Rarely, a provider reports more input than the gateway estimated. The provider billed it, so it is charged, and the balance can go below zero. Every request is then refused until credit is added.
A hold that is never settled, for example after a crash, is released after about 30 minutes.
The Credit ledger on the same page lists every credit movement, such as a grant, a top-up or a request's usage, with the balance after each one.
Adding credit
Until card top-up is switched on, Safeguard adds credit to your workspace. The Usage page says Card top-up is not available yet. Contact Safeguard to add credit.
Once card top-up is on, a tenant admin or super admin selects Add credit, enters the credit they want and pays on Stripe's checkout page. The card processing fee is passed through at cost, 2.9% of the charge plus $0.30: it is added to the charge, so the credit you receive is the amount you entered, and Safeguard keeps no margin on the fee. The checkout line shows the credit and the fee it includes. Card fees apply only to card top-ups. See Credits and invoices.
Spend limits
| Limit | Who sets it | Where | When it would be passed |
|---|---|---|---|
| Workspace monthly spend limit | A tenant admin or super admin | Usage › Credits and limits › Gateway settings | 402 account_spend_limit_exceeded |
| Key monthly spend limit | The key's owner | API keys, when you create or edit a key | 402 key_spend_limit_exceeded |
Both count the calendar month in UTC, including what running requests have reserved. Leave a limit empty for no limit. Each key also has a requests-per-minute limit, which guards against runaway use rather than capping spend.
To check a key from code, GET /gpt/v1/key returns its monthly limit and spend, and the workspace's available credit.
Workbench runs
Runs in the Workbench are billed and logged like API requests and use the same credit. The usage breakdown by key counts them separately from your keys.
Models you bring yourself
A request to a model you configured with your own provider account carries no Safeguard charge, and your provider bills you directly. In this version such a model cannot be called with an API key or picked in the Console yet. See Bring your own model.
MCP is never metered
MCP tool calls are unlimited on every plan and never charged. See MCP.
Related
Limits
Rate limits per key, spend limits per key and per workspace, the prepaid credit hard stop, request size and time limits, and what happens when each is reached.
Usage and analytics
What the Console's Dashboard and Usage pages show: requests, tokens and cost, usage by model and by key, and the metadata-only request log.