Do I need OpenRouter's Privacy Mode?
It's recommended, not required. LLMtrack never stores prompt or completion text either way. Privacy Mode means it isn't sent at all.
Resources / Integrations / OpenRouter
INTEGRATION · OPENROUTER
To see OpenRouter spend per feature and per customer, add LLMtrack as a Webhook destination in OpenRouter's Broadcast settings, then label your requests with a user and a feature. No SDK and no proxy. It takes about two minutes, and it's one of the gateways LLMtrack connects to.
OpenRouter already shows what you spent per model and per key. LLMtrack takes the same requests and answers the questions OpenRouter's dashboard doesn't: which feature in your product spent it, which customer it was for, and what next month will cost.
These are the same views every LLMtrack workspace gets. See all six on the integrations overview. They're part of a complete approach to LLM cost.
01
Copy your LLMtrack ingest key
Sign up free, open Keys & Integrations, and create a key named "OpenRouter". One key per connection lets you revoke it on its own.
02
Add a Webhook in Settings › Observability
In OpenRouter, open Settings › Observability, add a Broadcast destination of type Webhook, and paste:
URL https://otlp.llm-track.com/v1/traces
Headers {"Authorization": "Bearer llmt_live_…"}Turn on Privacy Mode for this destination. LLMtrack drops prompt text on arrival anyway, and with Privacy Mode it's never sent.
03
Label your requests
Add the customer and the feature to the requests you already send:
"user": "acme-corp",
"trace": { "feature": "summarizer" }Tip Some calls also go through the LLMtrack SDK? Add responseId: completion.id to those track() calls. Each request then lands once, whichever way it arrives, and your event count stays exact.
Send one request through OpenRouter, then open your LLMtrack dashboard. Within a second you'll see it under the feature you set, with source "OpenRouter", the model, token counts and a cost. If you used the connection test in OpenRouter first, that test sends an empty payload: it passes, and nothing is recorded.
/v1/traces and that the headers field is valid JSON, quotes included: {"Authorization": "Bearer llmt_live_…"}."trace": { "feature": "…" }, not at the top level of the request.user field on the request. That's the value LLMtrack reads as the customer.LLMtrack reads only the fields below. Everything else in the trace, including any prompt or completion text, is dropped before anything is saved.
Kept
Dropped on arrival
Do I need OpenRouter's Privacy Mode?
It's recommended, not required. LLMtrack never stores prompt or completion text either way. Privacy Mode means it isn't sent at all.
Does OpenRouter charge for Broadcast?
OpenRouter's docs don't list a charge for Broadcast as of 13 Oct 2026. Check your OpenRouter plan for the current terms.
Do you store my prompts?
No. LLMtrack reads token counts, the model, your labels and timing. Any prompt or completion text in a trace is dropped before anything is written, and it never appears in logs.
I also send some of these calls through the LLMtrack SDK. Will they count twice?
No. Pass the provider's response ID to track() as responseId, and LLMtrack matches the two copies, keeps one row with the details from both, and counts it once. Calls that only look alike, with no ID to compare, are labelled "possible duplicate" and kept out of your totals until you decide. Hidden copies still count toward your monthly events, so sending responseId is the setup that keeps everything exact. You choose how both cases behave in Keys & Integrations.
How are events counted?
One request your gateway exports is one event. The free plan includes 3,000 a month, and Pro includes 25,000 for $11.99. Your usage page shows which connection used them, so a busy gateway is never a mystery.
One URL in your OpenRouter settings, and your next request shows up on your dashboard already priced.