Results delivery

Optional: have each member's scan result stored by Visualize and delivered to your backend. Off by default — without it, no measurement ever leaves the member's device.

A scan result is your member's body data. Enabling delivery is a warranty you make: your app obtains each member's consent to this storage and delivery, and you honor deletion requests. The switch in the portal states exactly that — turning it on is the promise, per your terms with Visualize.

Enable it

Portal → your app → Configuration → tick "Store members' scan results and deliver them to our backend". You need a webhook URL configured — results arrive as signed webhook deliveries.

The portal Configuration switch “Store members’ scan results and deliver them to our backend” turned on, above Save configuration
Tick the switch, then Save configuration. It stays off until you turn it on.

The event

After each scan, alongside the usual scan.completed, your endpoint receives scan.results_available with the result exactly as the member's app computed it. Join the two on scan_id. Verification is identical to every other webhook.

scan.results_available (excerpt)
{
  "type": "scan.results_available",
  "data": {
    "scan_id": "scan_7f3a...",
    "host_user_ref": "user_842",
    "result": {
      "modelVersion": "2026.09.2",
      "measurements": {
        "bodyFatPercent": 27.9,
        "bmi": 24.6,
        "girths": { "waistCm": 84.2, "hipCm": 98.6 }
      }
    }
  }
}

Deletion

When a member asks you to delete their data, one call removes every stored result and queued delivery for them. Zero deletions is a success — the intent is already true.

bash
curl -X DELETE "https://api.visualizeme.ai/v1/results?host_user_ref=user_842" \
  -H "Authorization: Bearer sk_live_..."

# 200  {"host_user_ref": "user_842", "deleted": 3}
GuaranteeDetail
Off means offAn app that never enables delivery sends no measurement to Visualize — the SDK's upload is refused server-side and stops permanently.
Billing unaffectedscan.completed stays measurement-free either way; delivery is a separate channel.
Retries dedupeA re-uploaded result is the same result — one row, one delivery.
Turning the switch off stops new storage and delivery. It does not bulk-delete what was stored — use the deletion endpoint per member, which is the shape privacy requests actually arrive in.