ZDR zero data retention: setup, supported scope and error codes | BazaarLink
ZDR (zero data retention) is a mode of an API key. When it is on, the key's requests are only sent to upstream providers that declare zero data retention, pinned by BazaarLink, and BazaarLink itself does not store prompts or responses.
What a ZDR key guarantees
- Requests only use ZDR routes approved by BazaarLink, with the upstream pinned; if one fails, the request only switches between ZDR routes and never falls back to ordinary routes.
- A model without a ZDR route returns an error instead of quietly using another route.
- BazaarLink does not store the prompts, model replies or upstream error text of this key; usage records only keep time, model, usage, cost and status.
- Content is not sent to a third-party moderation service by default.
- The price is the same as an ordinary request, with no surcharge.
How to turn it on
Personal keys: turn on “Enable ZDR” when you create or edit a key at /keys.
Organizations: an organization admin can set the ZDR policy to “Required for every key” in the organization settings. Every key in the organization is then ZDR, and the key-creation form shows the box checked and locked.
Turning ZDR off lowers the key's protection level, so it needs a second confirmation and is written to the audit log; a key locked by an organization policy cannot be turned off on its own.
Using it
Set base_url to https://api.bazaarlink.ai/v1 and use the key with ZDR on; everything else is the same as an ordinary call.
To see which models have a ZDR route, /v1/models marks every model with zdr_available, and adding ?zdr=only lists only the available ones.
GET https://api.bazaarlink.ai/v1/models?zdr=onlyWhat ZDR does not support
With a ZDR key the following requests return 400 and are never sent through another route:
- Image, audio, video, embeddings, rerank, search and research endpoints.
- Virtual models (vm/ prefix) and automatic routing (auto).
- The model suffixes :free, :floor, :nitro, :online and :eco, and the web search plugin.
- The models fallback list.
Error codes
All ZDR errors are produced by BazaarLink itself and never contain upstream provider information.
| Code | Meaning | What to do |
|---|---|---|
| 400 zdr_route_unavailable | This model currently has no zero-data-retention route | Use a model with zdr_available true, or a key without ZDR |
| 400 zdr_endpoint_unsupported | This endpoint or feature is not supported with ZDR | Use a supported chat endpoint (chat completions, messages, responses) and remove the unsupported feature |
| 400 zdr_requires_gateway | ZDR is not yet open for your connection; to protect you we refuse instead of treating the request as an ordinary one | Contact us to confirm the opening date, and use https://api.bazaarlink.ai/v1 |
| 503 | All ZDR routes are temporarily unavailable | Retry later; the system never falls back to ordinary routes automatically |
{"error":{"message":"This model is not available for zero-data-retention (ZDR) API keys. ZDR keys can only use the models listed at https://bazaarlink.ai/docs/zdr (or GET /v1/models?zdr=only). You can also turn off ZDR mode for this key on the API keys page.","type":"invalid_request_error","code":"zdr_route_unavailable"}}{"error":{"message":"This endpoint is not available for zero-data-retention API keys.","type":"invalid_request_error","code":"zdr_endpoint_unsupported"}}{"error":{"message":"This model variant is not available for zero-data-retention (ZDR) API keys (the :free, :floor, :nitro, :online and :eco variants, the auto router and virtual models are not supported). Use a regular model listed at https://bazaarlink.ai/docs/zdr, or turn off ZDR mode for this key on the API keys page.","type":"invalid_request_error","code":"zdr_endpoint_unsupported"}}BYOK, BYOC and virtual models
- A ZDR key does not use the BYOK or BYOC provider keys you configured: it always runs on BazaarLink's ZDR routes and is billed at the platform price.
- Models starting with byok-custom/ or byoc/ have no ZDR route and return 400 (zdr_route_unavailable).
- Virtual models (vm/ prefix) are not supported with ZDR and return 400 (zdr_endpoint_unsupported).
- To use your own provider keys or virtual models, use a key without ZDR.
What is covered
- The usage record of a ZDR request keeps only time, model, usage, cost, status and the ZDR flag; it does not keep prompts, responses or error text.
- ZDR describes BazaarLink and the upstream providers it pins; data that your own code, logs or other services keep is outside this scope.
FAQ
Does ZDR change the price?
Currently it is the same as an ordinary request, with no surcharge. Any future change will be announced first.
Can a ZDR key call every model?
No. Only models with a ZDR route are available; check /v1/models?zdr=only. Other models return 400 (zdr_route_unavailable).
Can members still create ordinary keys once the organization requires ZDR?
No. With the policy set to “Required for every key”, both new and existing keys in the organization are treated as ZDR.