DEVELOPER DOCUMENTATION
Zero data retention (ZDR)
Add "zdr": true to each Chat Completions request to require a zero data retention route.
1. Find a model with a ZDR route
Browse available ZDR models, or fetch the current list from your gateway:
curl 'https://gpurouter.io/v1/models?privacy=zdr'Use an id from the response’s data array. There is no special ZDR suffix. Availability can change, and the route must also support your request’s parameters. Check pricing in Zero data retention mode; Standard prices and discounts can differ.
2. Send a ZDR request
Set GPU_ROUTER_API_KEY in your server environment and replace the model below with your chosen ZDR model ID. Send the boolean true at the top level of the JSON body for POST /v1/chat/completions.
These examples pin the selected billing source. Earned-only requests do not charge prepaid funds. Deferred batches with a billing assertion are not supported yet.
curl 'https://gpurouter.io/v1/chat/completions' \
-H "Authorization: Bearer $GPU_ROUTER_API_KEY" \
-H 'Content-Type: application/json' \
-H 'x-gpu-billing: {"version":1,"source":"prepaid"}' \
--data-binary '{
"model": "YOUR_ZDR_MODEL_ID",
"messages": [
{
"role": "user",
"content": "Hello!"
}
],
"max_tokens": 256,
"zdr": true
}'In the Python SDK, use extra_body={"zdr": True}; this sends a top-level zdr field over the wire. In JavaScript, include zdr: true in the request object. Omit it or send false for Standard routing. The string "true" is invalid.
For streaming, add stream: true to the same request and keep zdr: true. If an editor or integration has custom request-body settings, make sure it sends this field on every call; selecting a model alone is insufficient.
3. Handle an unavailable route
GPU Router restricts route selection and eligible retries to ZDR routes. If no eligible privacy route can serve the request, it returns HTTP 503 with error type privacy_route_unavailable:
{
"error": {
"type": "privacy_route_unavailable",
"message": "No eligible privacy route supports this request. The privacy requirement was not relaxed."
}
}Refresh the ZDR model list, choose another eligible model, or retry later with the flag still set. The router does not silently fall back to Standard. Your application should preserve the flag when handling failures too. Other authentication, balance, validation, and upstream errors still apply; see Errors & limits.
What ZDR covers
ZDR applies to eligible live text Chat Completions routes. Free models, image inputs, and deferred batches do not currently support this mode.
Retention follows the serving provider’s ZDR policy. Usage metadata such as token counts, cost, timing, and outcome remains; temporary in-memory caching may occur under that policy. ZDR does not control logs in your own application, editor, or external tools.
The separate privacy option redacts or blocks detected identifiers before dispatch. It does not enable ZDR. See Privacy & call data for redaction and receipt retention, or how ZDR routing works.