# Understand usage and request cost

Source: https://cicora.ai/en/docs/usage-costs

cicora.ai uses prepaid metered billing rather than a separate monthly subscription for each model. The current customer price for the selected model is shown in the [model catalog](https://app.cicora.ai/models); the captured USD charge is shown in [Usage](https://app.cicora.ai/usage) and the balance ledger.

## Know the billable categories

The final charge can include:

* ordinary input tokens sent to the model;
* output tokens generated by the model;
* cache-read and cache-write token buckets when the model reports them;
* reasoning (`reasoning`) tokens when they are reported.

Reasoning tokens are always billed when present. A dedicated reasoning rate is used when configured; otherwise the model's output-token rate applies. The current model catalog and Usage view may not expose a separate reasoning rate or counter for every model and request. Do not infer zero reasoning from a missing line or try to reconcile an undisclosed line item: the captured request total is authoritative.

Cache prices are also model-specific. A separate read, write, 5-minute write, or 1-hour write rate is used only when it is configured for the model. Without a separate cache rate, those tokens use the ordinary input rate. Use the current displayed cicora.ai customer price as the billing reference instead of substituting a price from another catalog.

## Count every agent request

An agent can make many API requests for one visible task. Each step may resend conversation history, tool definitions, and tool results, so repeated context is billed again according to that request's usage. Estimate a workflow from its complete request history, not only the tokens visible in the final client window.

Create a separate API key for each project or agent when you need clear attribution. You can then filter [Usage](https://app.cicora.ai/usage) by key and apply a [spend limit](/en/docs/spend-limits).

## Verify the captured charge

Open [Usage](https://app.cicora.ai/usage), choose the active workspace, period, and API key, then compare:

* request status and time;
* exact model ID, key name, and visible masked key prefix;
* input, output, cache-read, and cache-write counters;
* request count, duration, and captured charge.

Compare the captured request total with your local estimate. They can differ when actual output, cache buckets, reasoning, a long-context tier, or reported usage differs from the estimate. If the total still looks wrong, send [support](/en/contact) the request identifier, exact time with timezone, model ID, key name, and visible masked key prefix. Never send the complete key or sensitive prompt content.

## Discover whether caching helps

Open [Models](https://app.cicora.ai/models) and check whether the selected model publishes cache prices and relevant controls. Keep the repeated prompt prefix stable, use only controls listed in `supported_parameters`, and compare cache counters across two consecutive requests.

A zero cache counter means no cache use was reported. A non-zero counter does not guarantee a discount: when the model has no separate cache price, ordinary input pricing applies.

## Understand interrupted requests

An attempt that fails before any model output or reported usage is confirmed releases its reservation without a usage charge. A stream that already delivered output or has confirmed usage can be charged for that portion. Do not automatically retry after output begins; first check whether the client already received useful work and whether Usage recorded the request.

## Troubleshooting


**Agent spend is higher than the visible task suggests**


Compare the request count for the key with the number of client steps. Extra rows point to retries or tool loops; matching row counts with growing input point to repeated history or tool results. Sum captured request totals only after identifying that branch.


**Caching did not reduce the request total**


A zero cache counter points to no reported hit, often because the model lacks the capability or the repeated prefix changed. A non-zero counter with the ordinary input rate means no separate cache price is configured. Check those branches before changing request parameters.


**Visible counters do not reproduce one request total**


Check cache buckets, partial-stream output, long-context pricing, and whether the model can report reasoning. A missing separate reasoning line does not prove zero reasoning. Use the captured total and the safe support evidence listed above rather than inventing a hidden counter.

## FAQ

### What is cicora.ai?

cicora.ai is a multi-model AI workspace and compatible API for chat, text, images, video, coding tools, and teams. Start with the [overview](/en.md), [documentation](/en/docs.md), or [model catalog](/en/models.md).

### How is usage billed?

Confirmed usage is charged in USD from the active workspace's prepaid balance. Use the live catalog for current model prices and the [usage guide](/en/docs/usage-costs.md) for settlement details.

### Which protocols and integrations are available?

Documentation covers OpenAI-compatible Chat Completions and Responses, Anthropic Messages, image interfaces, Claude Code, OpenCode, and Codex CLI. Compatibility does not imply support for every upstream parameter.

### Which sources are authoritative and current?

For model IDs, availability, capabilities, limits, and prices, use the [live catalog](/en/models.md). For API behavior, use the matching [documentation page](/en/docs.md). Never include API keys, private workspace data, or preview URLs in public documents.
