Image quality validation failed, or payment_reference does not match client_batch_id.
For face scans, the API verifies that the set contains one physical front view,
one view exposing the subject's left cheek, and one exposing the subject's right
cheek. Upload order is not trusted. Duplicate or missing views and a front photo
without a detectable face use this response. If a side profile cannot be detected
or classified but its submitted label is explicitly left or right, the API
uses that as a fallback. When the other anatomical side was detected, the
unresolved image fills the missing side; otherwise its submitted side is retained.
The normal image-quality gate still applies, and the front view must be detected.
Body photos are checked before payment allocation, scan-credit consumption or
analysis. Clients should first call POST /skin/validate-body-images before
opening checkout or submitting any area in a multi-area session. Phone uploads
run the same check before the session accepts photos. The analyzer also retains
its final capture gate. Each issues entry identifies the affected photo:
Back — wide: The skin is too far away to assess. Move closer so the selected body area fills the frame and its texture is clearly visible.
Chest — upper: This photo is too dark or shadowed to assess. Retake it in bright, even light, with no shadow across the area you want checked.
Left hand: This photo is too soft or blurred to show enough skin detail. Tap the skin on screen to focus and hold the camera steady. If uploading, use the original photo instead of a screenshot.
Chest — upper: There is not enough exposed chest skin in view to assess. Keep your bra or top on. Frame your collarbones and the exposed upper-chest skin above or around the neckline, with hair moved aside.
Back — upper: This looks like a photo of a face. Faces are checked by the face scan — retake this photo showing the body area you selected.
A photo that shows a different area of bare body skin than body_part is not
rejected: it is assessed as the area it shows, and its result card carries
capture_note. When every photo shows one other area the scan's batch is that
area; when the photos show several, each area gets its own batch in the same
family and body_scans[].batch_id names it. body_part may only name a guided
part (hands, feet, back, chest, shoulders) or uncategorized (Other
area); the other detect-only parts are assigned by the check and a request naming
one is rejected.
The sentences are owned by the API, not the model. Render them as given.
A rejected phone upload leaves the session pending, so photos can be retaken
and uploaded again until the session expires. An already accepted upload cannot
be replaced; create a new capture session for that case.
Repeated clinical-trial photo (scan_context=clinical_trial only): when any
submitted photo is byte-identical to any photo (front, left or right) of a visit the
participant already completed, the scan is refused with error_code: DUPLICATE_TRIAL_PHOTO
(DuplicateTrialPhotoError). The check runs before payment, credit consumption,
the image-quality check and analysis, so nothing is charged. It compares the bytes
the analysis would read: the stored phone uploads when batch_id names a capture
session, otherwise the files sent in images. The participant is matched as
PATCH /trial-participation/{token}/visit-scan matches a scan (vendor-customer, or
user plus vendor), across all of the vendor's trials. Show message and return to
the camera. Retrying with the same photos gets the same response.