# Privacy & zero data retention
Keln makes two promises about your content:
1. **Zero data retention.** Your prompts and completions are never stored anywhere.
2. **Zero training**, nothing you send is used to train or improve a model, by anyone in the
serving path.
## 1. Never stored
Request and response bytes stream through memory on the edge and the serving route and are
gone when the stream ends.
| | Stored? | What exists instead |
|---|---|---|
| Prompts | Never | token counts |
| Completions | Never | token counts |
| Request metadata | Yes | timestamp, model, token counts, cost, latency, status, which of your API keys |
| Logs | Content-free | operational events only, no payload bytes in any log line |
Your [usage dashboard](../platform/usage.md) shows model, tokens, cost, and latency per
request, and that is everything that is stored.
## 2. Never trained on
Keln uses your content for one thing: generating your response. Nobody trains, fine-tunes, or
improves a model or service with it, not Keln and not anyone serving your request. No setting
changes this.
!!! note "Coming from OpenRouter?"
If your code sends `provider: {"zdr": true}` or `provider: {"data_collection": "deny"}`, Keln
accepts them. Both are already true for every request here, so the flags change nothing and
you can delete them.
## Every provider, same promises
Keln routes across many providers, so both promises have to hold at every one of them:
- **Required of every provider.** Zero retention and no training are conditions of serving Keln
traffic.
- **Verified.** Before a provider joins, Keln checks its terms against both promises and follows
up on any gap until it is closed.
- **Nothing to retain at Keln.** Keln keeps no content, and requests leave Keln with no user
identity: no account id, no API key, no IP.
- **Re-serialized.** Keln re-serializes your request before sending it upstream, so
[stripped fields](normalization.md) cannot pass through.
- **Curated providers.** Keln vets every provider before it serves a single request: who is
behind it, and how it handles your data. Keln keeps checking for as long as the provider serves.
Keln detects and removes system prompts that a provider injects, so the model sees only your
messages.
## Web search
If a request turns on [web search](web-search.md), the search queries the model writes go to a
third-party search engine. Keln relays the results and stores neither the queries nor the results;
its logs record only the length of each query and the number of results. Search is off unless a
request asks for it, so nothing reaches a search engine without your code opting in.
## Compliance
There is no stored content to audit. Keln keeps metadata (counts, timings, billing) for billing
and abuse prevention. For DPAs and regional commitments, contact us.
Privacy & zero data retention
Keln makes two promises about your content:
Zero data retention. Your prompts and completions are never stored anywhere.
Zero training, nothing you send is used to train or improve a model, by anyone in the
serving path.
1. Never stored
Request and response bytes stream through memory on the edge and the serving route and are
gone when the stream ends.
Stored?
What exists instead
Prompts
Never
token counts
Completions
Never
token counts
Request metadata
Yes
timestamp, model, token counts, cost, latency, status, which of your API keys
Logs
Content-free
operational events only, no payload bytes in any log line
Your usage dashboard shows model, tokens, cost, and latency per
request, and that is everything that is stored.
2. Never trained on
Keln uses your content for one thing: generating your response. Nobody trains, fine-tunes, or
improves a model or service with it, not Keln and not anyone serving your request. No setting
changes this.
Coming from OpenRouter?
If your code sends provider: {"zdr": true} or provider: {"data_collection": "deny"}, Keln
accepts them. Both are already true for every request here, so the flags change nothing and
you can delete them.
Every provider, same promises
Keln routes across many providers, so both promises have to hold at every one of them:
Required of every provider. Zero retention and no training are conditions of serving Keln
traffic.
Verified. Before a provider joins, Keln checks its terms against both promises and follows
up on any gap until it is closed.
Nothing to retain at Keln. Keln keeps no content, and requests leave Keln with no user
identity: no account id, no API key, no IP.
Re-serialized. Keln re-serializes your request before sending it upstream, so
stripped fields cannot pass through.
Curated providers. Keln vets every provider before it serves a single request: who is
behind it, and how it handles your data. Keln keeps checking for as long as the provider serves.
Keln detects and removes system prompts that a provider injects, so the model sees only your
messages.
Web search
If a request turns on web search, the search queries the model writes go to a
third-party search engine. Keln relays the results and stores neither the queries nor the results;
its logs record only the length of each query and the number of results. Search is off unless a
request asks for it, so nothing reaches a search engine without your code opting in.
Compliance
There is no stored content to audit. Keln keeps metadata (counts, timings, billing) for billing
and abuse prevention. For DPAs and regional commitments, contact us.