Data handling and privacy
What is processed, what is stored and for how long, where it runs, and who the sub-processors are.
| Data | Stored? | Retention |
|---|---|---|
| Media bytes, URLs, base64, file names, perceptual hashes | No — in memory only, discarded after the response | 0 |
| Per-request metadata without content: request id, key id, status, credits, media kind, frame count, level result, latency | Yes | 7 days, then only aggregates |
| Hourly aggregates (requests, credits, bytes, levels, latency) | Yes | account lifetime |
| Key metadata: name, prefix, hash, last used at, last network prefix (/24 or /48) and country | Yes | key lifetime; network prefix 30 days |
| Account: email, name, company, VAT ID, country | Yes | account lifetime + statutory for invoices |
| Billing | at Stripe | statutory |
Inference runs on our own servers in Germany. For URL inputs, our server downloads the media (through our IP, with private-network targets refused). Transport to the API is TLS through Cloudflare; the website on Vercel never handles media or account data (the console talks to the API directly from your browser).
Roles under the GDPR: for media and results we are your processor (the API call is your instruction); for account and billing data we are the controller. The DPA is part of the terms; the sub-processor list is kept current.
Failed requests are never charged and leave no content behind either.