XipID

Subjects

Enroll a reference face

PUT https://api.xipid.org/subjects/{id}/reference-face

Enrolls the face a selfie is matched to: one JPEG or PNG of at most 4 MB, in Base64, holding exactly one face, which replaces the face this brand enrolled before. Until the person accepts, it is held with the referral; once they have, it goes on file only where no face of their own is. XipID never sends it back: the subject shows when it was enrolled. With If-Match, it goes ahead only while the subject is as the brand last read it. The body may hold 6 MB, every other route's 1 MB.

Scope: any live key of the brand.

Limits: 1,000 requests a minute per key and 2,000 requests a minute per source address; every answer says what is left in X-RateLimit-Remaining, and a refusal when to come back in Retry-After.

Idempotency: repeating it does what it did, and no more.

Changes: 2026-09-26: added.

Parameters

Body

{
  "image": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAA=="
}

Answers

200 OK

The subject, read back once the face went on file.

Its headers: X-Request-Id, Xip-Version, X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset, ETag.

{
  "id": "01JD2R2B4D6F8H0J2K4M6N8P0Q",
  "reference": "acct_4417",
  "status": "linked",
  "pairwise_id": "Vb3kQ9xR2mTz7LpW4nYc8d",
  "linked_at": "2026-11-18T15:42:55.020Z",
  "display_name": "Sam Rivera",
  "channel": {
    "type": "phone",
    "to_masked": "+1 ••• ••• 0142"
  },
  "scopes": [
    {
      "attribute": "presence",
      "purpose": "wire_approval"
    }
  ],
  "reference_face": {
    "enrolled_at": "2026-11-18T16:01:13.668Z"
  },
  "created_at": "2026-11-18T15:20:07.311Z",
  "updated_at": "2026-11-18T16:01:13.668Z"
}

Errors