Skip to content

Trust & compliance

Security & data handling

What actually happens to an image after you send it, how API keys are stored and verified, and the throughput limits by plan — written for whoever on your team has to sign off on a new vendor.

Data handling

Every identify request goes through our gateway, not directly to any upstream model or provider — your client never sees or holds an upstream provider key.

An image you submit (file upload or a fetched image URL) is used to fulfill that request and, in aggregate, to power the accuracy flywheel that re-indexes the catalog nightly. We don't sell images, and we don't share them with anyone outside the systems that produce your identify result.

Corrections you send back via POST /v1/feedback are used the same way — to improve future match quality, not resold or repackaged as a dataset product.

An identical resubmission of the same image is served from a short-lived exact-image cache, which is why repeat scans of the same photo come back close to instantly.

Auth model

Every request authenticates with a bearer API key (Authorization: Bearer cvk_live_…), issued from your dashboard and completely separate from any session cookie.

Keys are shown in full exactly once, at creation. After that we only ever display a public prefix and the last 4 characters — if you've lost the full key, the fix is to rotate, not to ask us to recover it.

On our side, keys are stored as a SHA-256 hash, never in plaintext. Each key carries 192 bits of randomness, which is why we don't run it through a slow password-hashing KDF — that trade-off is for low-entropy secrets like passwords, and we verify a high-entropy bearer key on every gateway call, so fast and deterministic is the correct choice here.

Rotate a key any time from the dashboard: generate the replacement, update your server-side config, then revoke the old key once traffic has moved over. We recommend rotating on a schedule for any key that touches production, and immediately if a key may have leaked (committed to a public repo, logged in plaintext, shared over an insecure channel).

Rate limits by tier

Every key has a requests-per-second ceiling with some burst headroom, scaling with plan. These are hard numbers from our pricing config, not estimates.

PlanRequests / moRate limit
Free1,000 identify requests / mo5 req/s
Starter6,000 identify requests / mo15 req/s
Pro25,000 identify requests / mo30 req/s
Business60,000 identify requests / mo60 req/s
Scale150,000 identify requests / mo120 req/s

Every tier gets some burst headroom above its steady-state rate limit. Scale includes a 99.9% uptime SLA; contact us if a Scale-tier ceiling still isn't enough.

Data provenance

The catalog behind every match is sourced and maintained the same way across every plan — see the sources and coverage breakdown on the card database page.

View card database sources

Security FAQ

Do you store the images I submit?

Images are processed to fulfill your identify request and, in aggregate, to improve the catalog and matching. We don't resell images, and an identical resubmission is served from a short-lived exact-image cache rather than being re-processed from scratch.

How are API keys stored?

As a SHA-256 hash, never in plaintext. The full key is shown once at creation — after that, only a public prefix and last 4 characters are visible. If a key may have leaked, rotate it rather than waiting.

What happens if I exceed my rate limit?

Requests beyond your plan's requests-per-second ceiling are throttled with a 429 response and burst headroom absorbs short spikes. Upgrading plan raises the ceiling; contact us if a Scale-tier limit still isn't enough.

Is there an uptime commitment?

The Scale plan includes a 99.9% uptime SLA. We don't publish an SLA number for lower tiers.

Who do I talk to for a security or procurement review?

Reach out through Contact — we're happy to walk your security or procurement team through the gateway architecture, auth model, and data handling in more detail.

Have a vendor-security questionnaire or need a call with your procurement team? Talk to us.