Does this work with the LiteLLM Python library, not just the proxy?
Partly. With litellm.callbacks = ["otel"] and the same environment variables, the library sends the model, tokens, cost and user. As of LiteLLM 1.105 it doesn't export request metadata, so features show as "unknown". For cost per feature, run the proxy.
Can I keep my other LiteLLM callbacks?
Yes. Add "otel" to the list next to the callbacks you already use.
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.