Skip to main content

Photo intake

There are two ways in. start_skin_scan returns immediately either way; analysis runs in the background. Choosing a path. Most assistant hosts show the model an attached image without exposing its bytes. A model cannot reconstruct base64 from an image it can only see, so use the link unless your host passes the file itself. Direct path requirements. Before sending consent, the agent must have:
  1. told the person the photo goes to Skan and its analysis provider and is deleted within an hour,
  2. confirmed they are 18 or older, and
  3. confirmed the photo is of their own face.
The server records this as an agent attestation, not as the person’s own consent. A deployment can require the link for everyone, in which case a direct call returns consent_page_required. Photo errors:
  • invalid_image: the bytes aren’t a readable JPEG or PNG.
  • invalid_image_dimensions: over 8 megapixels.
  • payload_too_large: over 5 MB.
Each points the agent to the upload link.

Polling

Call get_skin_scan and follow the response: A scan typically completes a few seconds after the photo arrives. Other tools can be called while it processes. Never start a second scan to check on the first.

Result

When status is completed, result.scores is a list of { title, progress } pairs, for example wrinkles, redness, pores, eye_bags, pigmentation, acne and sagging. progress is the provider’s raw 0–100 value. It is not a percentage, a health rating or a ranking, and different metrics are not on a shared scale. Keep result.limitations attached when presenting scores.

Deletion

delete_skin_scan revokes the token at once and schedules cleanup at the analysis provider. After that, get_skin_scan and delete_skin_scan return not_found. A result the person saved to their Skan account is managed in the app, not here.