Why is the cost empty for some of my LLM calls in Rius?
Rius leaves a call’s cost empty, not zero, when it cannot find the span’s requested model in its price catalog or the span reports no token usage. An empty cost means “not priced”, so it never shows as $0 for a call that may have cost money. The span keeps its tokens, timings and everything else. To fix it, check the model name and token counts on the span. The Track LLM and agent cost guide covers pricing in full.
How it works
When a span reaches Rius, Rius looks up its requested model, the gen_ai.request.model attribute, in LiteLLM’s public model-price catalog and multiplies each token count by that model’s rate. Cost stays empty in these cases:
- The model is not in the catalog. A custom, fine-tuned or internal model name has no list price to apply.
- The span carries only the response model. A span with
gen_ai.response.modeland nogen_ai.request.modelis not priced. - The span reported no token usage. With no token counts there is nothing to multiply.
Rius normalizes model names before the lookup, so a provider prefix such as openai/gpt-4o, a dated snapshot such as claude-sonnet-4-5-20250929, and the Amazon Bedrock and Google Vertex AI forms resolve to the same price. A name that differs only in those ways is not the cause.
Cost is fixed on the span when it is written. If the catalog adds your model later, calls already stored without a price stay unpriced. New calls are priced from then on.
Totals add up only the calls that were priced, and averages per trace divide by every trace, so partial coverage lowers both.
Set it up
- Open a trace that shows an empty cost and select the LLM call. The span detail lists the provider, the request and response model, the input and output tokens, and the cost.
- Read the model name. If it is a model you expect to be priced, compare it with the name in LiteLLM’s public price catalog. If the span shows only a response model, change your instrumentation so it records the requested model as
gen_ai.request.model. - Check the token counts. The span needs
gen_ai.usage.input_tokensandgen_ai.usage.output_tokens, and Rius also readsgen_ai.usage.cache_read.input_tokensandgen_ai.usage.cache_write.input_tokensfor cache tokens. Rius normalizes the OpenInference and OpenLLMetry equivalents at ingest. If the counts are missing, fix the instrumentation that records them. - Do not send a cost attribute. Rius computes cost from the model and tokens, and a cost you send is ignored.
- Send new calls and check the cost again. Earlier calls keep their empty cost.
The price of one call follows this formula, so each input must be present:
cost = uncached input tokens × input price
+ cache read tokens × cache read price
+ cache write tokens × cache write price
+ output tokens × output priceTo see how much of your traffic is affected, open Usage and cost and look at cost by model, which shows how many LLM calls were priced. In the console, a total with nothing priced in it shows a dash rather than $0. The summary figures from the API and from MCP tools such as agent_traces_summary report that case as $0.00, so read a $0.00 there with this in mind.
What you get
- A clear reason for each empty cost: an unknown model, a missing requested model, or missing token usage.
- Calls that stay honest. An unpriced call is never counted as free, so your totals do not hide a gap behind a zero.
- Full tracing on unpriced calls. Tokens, timings, tool calls and errors are still on the span.
- Correct pricing for new calls once the model name and token counts are on the span.
- Cost alerts that show the share of the window that was priced, so you can tell a high reading from a partly priced one. A rule over mostly unpriced models can stay quiet without firing, so check cost by model first.
When something else fits
Rius does not accept custom model prices, and it does not apply negotiated, batch, flex, priority or long-context discounts. Costs are list-price estimates in US dollars, so an unlisted model stays empty and your invoice can differ from the figures in Rius. For exact billed amounts, use your provider’s invoice.
Related
Still stuck? Get help