--llm-usage
- CLI
- --llm-usage
- REST
- CLI only
Writes the tokens each model spent to a JSON file: one entry per URL, with a row for each navigator and the formatter.
Fields
[{"url": "https://zshot-cli.com", "usage": [{
"name": "anthropic", "role": "navigator", "provider": "anthropic",
"model": "claude-opus-5-5", "calls": 6, "input_tokens": 41900,
"output_tokens": 1870, "cache_read_tokens": 12300, "cache_write_tokens": 2100,
"images": 6
}]}]A row is named by the navigator’s name=, so each --navigator-type and the writer=true one count apart. input_tokens includes the cached input; cache_read_tokens and cache_write_tokens are the cached part. images counts the screenshots sent, earlier frames of the page included. cost_usd is the dollars the provider reported the calls cost, present only where it reports one, as OpenRouter does.
Server
A render that called a model answers with the same rows in an X-Zshot-LLM-Usage header, an RFC 8941 list:
X-Zshot-LLM-Usage: "scout";role=navigator;provider="typesafe";model="jev-latest";calls=31;input=58210;output=402;cache-read=0;cache-write=0;images=0A reported cost is the cost-usd parameter, a string of dollars such as cost-usd="0.000067".
Example
CLI
Run locally
zshot -f page.png \
--navigate "Open the first chapter" \
--navigator-type "anthropic://YOUR_API_KEY@" \
--llm-usage usage.json \
https://zshot-cli.com/example_assets/winnie-the-pooh/