Why is my API balance running out faster than expected? Tracking spend request by request
In short: The Usage page in the Wiozen API dashboard shows where your balance went: daily spend for the last 30 days, totals per model, and for each of the last 100 requests its input, cache and output token counts and its dollar cost. An unexpected drop usually comes from one of three places: requests going to an expensive model, a long conversation history being resent with every request, or a tool running on its own in the background.
What's on the Usage page?
Open the Usage tab in your dashboard. Four numbers sit at the top: current balance, amount spent in the last 30 days, number of requests in the last 30 days and average cost per request. Below them is a daily spend chart for the last 30 days, then a breakdown by model, and at the bottom a list of recent requests one by one.
The dashboard home page also shows an estimate next to your balance: roughly how many days it will last at the average spend of the last 7 days. If that number suddenly shrinks, spending has picked up recently and it's time to go through the steps below.
Which day and which model spent too much?
First find the day with a spike on the daily chart. Days on the chart are split by UTC, so requests sent before 03:00 Turkey time land in the previous day's bar.
Then look at the By model table. It adds up completed requests per model over the last 30 days, with the biggest spender at the top. Each row has the request count, input, cache-read input, output and total cost. A row with few requests but a high cost points to an expensive model or very long requests. For example, a claude-opus-5-5 row with 40 requests can cost more than a wiozen-anthropic row with 4,000.
What should I look for in individual requests?
The Recent requests table lists the last 100 requests, newest first. Each row has the time, model, input, cache read, cache write, output, cost and status. Times are written in Turkey time; if your browser is in another time zone, they're converted to your local time.
The patterns that drain a balance are easy to spot in the rows:
- If the Input column grows a little on every row, a chat or agent is resending the whole history with each request. Shorten the conversation or start a new session; what is a context window explains why this happens.
- If input is large but cache read is always 0, the same long text is being paid at full price every time. Cache-read input costs a tenth of normal input.
- If the Output column is large compared to short answers, the model is thinking at length before answering, and thinking counts as output.
- If dozens of rows arrive per minute on the same model, a tool is stuck in a loop or a scheduled job runs more often than you meant it to.
What do the labels in the Status column mean?
| Status | Meaning | Taken from balance |
|---|---|---|
| Green code (e.g. 200) | The request completed. | The actual cost |
| in progress | The response is still coming. The ~ in front of the cost means the amount is an estimate. | A temporary hold, corrected to the actual cost when the response ends |
| interrupted | The connection dropped before the response finished and no usage data arrived. | The amount held when the request started |
| Red code (e.g. 502, 504) | The request failed. | Nothing ($0) |
The amount on an "in progress" row is usually larger than the final cost, because the request reserves room for the worst case when it starts. When the response ends, the difference goes back to your balance. To understand why and when a connection drops, see timeouts and streaming.
How do I tell which tool spent how much?
The usage table doesn't show which key a request came from. Give each tool its own key instead: one for your code editor, one for the WordPress plugin, one for your own script. The Spend column on the Keys page shows each key's total spend so far, so you can see at a glance which tool is eating the balance.
If you don't want a tool to go past a certain amount, put a spend limit on its key. Once the limit is reached, only that key returns 429; your other keys and your balance aren't affected.
Frequently asked questions
How many requests does the Usage page show?
It lists the last 100 requests one by one. The daily chart and the per-model breakdown cover the last 30 days.
Do failed requests come off my balance?
No. Rows with a red status code cost $0.
Why is the amount on an "in progress" row so high?
An estimated amount is held when the request starts. When the response ends, the actual cost is written and the difference returns to your balance.
Where can I see what each key has spent?
In the Spend column on the Keys page. If every tool has its own key, you can read spend per tool from there.
Why does the dashboard cost differ from my own calculation?
Your own calculation usually doesn't count cache tokens separately, or uses an old price. The row on the Usage page is the amount that counts; for the formula, see how to calculate AI API cost.
The Usage page is in your dashboard, under the Usage tab once you sign in. Prices are on the Models page.
More guides: How can you use an AI API from Turkey without a credit card? · How do you connect an OpenAI-compatible API to a tool you already use? · How do you calculate the cost of an AI API? · What should I do if my AI API key has leaked? · How do you generate images with an AI API, and what does one image cost? · Why does my AI API return a 429 error, and how do I fix it? · Why do long AI API requests time out: streaming or non-streaming? · Anthropic Messages API or OpenAI Chat Completions: which one should I use? · What is a context window, and what is a 1 million token context good for? · Which AI model should I choose: deciding by price, context and quality · Why does a reasoning model return an empty answer, and why are thinking tokens charged? · How do you convert a web page to Markdown to feed it to an AI model? · How do you get AI to write and publish articles in WordPress automatically? · How do you find blog topics from RSS feeds and Google Trends? · Does AI-written content show up on Google and in AI answers? · How do you get internal links into AI-written WordPress articles? · How do you get AI to generate a different featured image for every WordPress post? · How do you write a content brief when an AI writes your blog posts? · What should you watch for when an AI writes recipes for your food blog? · How do you fix errors when connecting a WordPress plugin to your AI API account? · Why does my AI article bot stop halfway in WordPress? "Run is stuck" and LiteSpeed · Why are my scheduled WordPress posts late? WP-Cron and a real server cron · How do I get an AI article bot to write blog posts in English or another language? · What does "Content Bot cannot generate articles" mean? Reading the bot's log