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).