Skip to main content
ZDR is a contractual guarantee from the model provider: the request and response are not stored in any form (logs, telemetry, cache, fine-tuning). Geek Hub maintains a list of endpoints where this guarantee is signed and verified, and rejects ZDR-marked requests targeting endpoints outside the list.

Three activation levels

1

Per request

Pass zdr: true in your body. The gateway checks the target model against the registry. Verified → proceed. Not verified → HTTP 422 with reason.
2

Per account

In /dashboard/settings → Zero Data Retention enable ZDR per provider group (Anthropic, OpenAI, Google, Others). When a group is on, all org requests to that group are checked.
3

Per guardrail

Guardrails let you configure ZDR per user or per API key. Useful when different teams under the same org need different policies.

Example request

Verified endpoints

Rejection format

GDPR — art. 5(1)(e) data minimization

ZDR is part of your GDPR art. 5(1)(e) (storage limitation) compliance posture. If your provider doesn’t retain the conversation, retention at that layer is effectively zero — reducing the scope of your upstream processing obligations.
ZDR covers the model provider’s retention. Geek Hub does store billing metadata (model id, tokens, cost, latency) for CFDI/Stripe. Message content is not persisted at the gateway layer.

What we persist vs what we don’t

No ambiguity — this is how we separate content (prompt/response) from metadata (billing and audit): Hard rule: anything stored in requests is numeric or identifier metadata. We never store the content of messages[] nor the prompt from /images, /videos, /audio, not even hashed, not even with ZDR off. If you need to retain conversations yourself, use a request.completed webhook to your own backend (see Webhooks).