EvertwinCHECK API sandbox
OpenAPI description

Ask the registry before you use a face

Send an image to one endpoint and get a decision for every face in it. The answer never says who the person is. This sandbox registry holds only synthetic people, so you can test with the images below.

Your sandbox key looks like this etk_xxxxxxxx_…
Valid for 30 days 60 checks per minute

We send the key to you separately. Keep it on your server: never in a browser, a mobile app or a public repository. If it leaks, tell us and we will replace it.

Quick start

One POST with the image as multipart/form-data. external_ref is optional: your own identifier for the asset, up to 128 characters, so you can match the answer later.

curl https://sandbox.evertwin.me/v1/checks \
  -H "Authorization: Bearer $EVERTWIN_KEY" \
  -F image=@cafe-trio.jpg \
  -F external_ref=campaign-42/hero.jpg

The response

For cafe-trio.jpg the registry finds three faces. One of them belongs to a synthetic person who registered an objection.

{
  "check_id": "chk_01JC4T7Y2M8Q5W3E6R9T0Y1V2X",
  "decision": "DENY",
  "faces": [
    { "bbox": [212, 398, 148, 176], "decision": "NO_RECORD" },
    { "bbox": [671, 352, 156, 188], "decision": "DENY", "reason": "OPT_OUT" },
    { "bbox": [1138, 417, 142, 170], "decision": "NO_RECORD" }
  ],
  "policy_version": "2026-10.v1",
  "checked_at": "2026-11-06T10:12:44.318Z",
  "input_sha256": "2d711642b726b04401627ca9fbac32f5c8530fb1903cc4db02258717921a4881"
}
Field Meaning
decision The decision for the whole image: the strictest decision among its faces.
faces[].bbox Where the face is: [x, y, width, height] in pixels of your image.
faces[].decision The decision for this face, with an optional reason.
check_id Keep it: it proves you asked the registry, and when.
input_sha256 SHA-256 of the file you sent, so you can tie the answer to the exact asset.
policy_version The matching rules that produced the answer.

There is no name, no match score and no record ID in the response, by design. The registry tells you whether you may use a face, never whose face it is.

Decisions

Decision What it means What to do
Do not use
DENY
The face matches a person who objects to synthetic use of their face. Do not generate, train on or publish it.
Needs review
REVIEW
The face is close to a registered face, but not close enough to be sure. Have a person decide before you use it.
No record
NO_RECORD
Nobody registered an objection for this face. No objection on record. This is not consent.
Can’t assess
UNPROCESSABLE
No face, more than 10 faces, a face smaller than 64 pixels or a poor-quality image. Send a clearer or tighter image.

Test images

All people in these images are synthetic. One of them, the person in the middle of the café photo, registered an objection in the sandbox.

Three synthetic people at a café table
cafe-trio.jpg1 of 3
Download
Five synthetic people in an office
office-team.jpg1 of 5
Download
A synthetic person on a street
street-portrait.jpgNo record
Download
A lake without people
lake.jpgCan’t assess
Download

Errors and limits

Status Code When
400 INVALID_FILE The image field is missing or is not a JPEG, PNG or WebP up to 5 MB.
401 UNAUTHORIZED The key is missing, wrong or expired.
415 UNSUPPORTED_MEDIA_TYPE The request is not multipart/form-data.
429 RATE_LIMITED More than 60 checks in a minute. Wait for the number of seconds in Retry-After.
503 VAULT_UNAVAILABLE The sandbox was asleep and is waking up. Try again in a few seconds.

Every error has the same shape: {"error": "RATE_LIMITED", "message": "…"}.

Privacy and terms

Send only synthetic images or images of people who agreed to it. We do not store your images or any face data from them. For each check we keep the time, the decisions, where the faces were, the file’s SHA-256 and your external_ref.

The sandbox is for testing an integration, not for production decisions. Your key is valid for 30 days from the day we send it. For a new key or any question, reply to the person who sent you the key.