XipID

Subjects

Refer a person

POST https://api.xipid.org/subjects

Refers a person by the brand's own reference for them, which travels in the body alone, with one channel, the name the brand knows them by, and the scopes it asks them to grant. XipID invites them by email, or the brand delivers the subject's invite_url on its own channel; the subject is pending until they accept, and then carries the pairwise identifier a challenge names them by. The same reference again repeats the referral and answers the same subject while it is live; asking other scopes of a person who accepted is refused.

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: takes an Idempotency-Key, which it requires: a retry under the same key is answered what the first request was, for 24 hours, and the key sent with another request is refused.

Changes: 2026-09-26: added.

Parameters

Body

{
  "reference": "acct_4417",
  "display_name": "Sam Rivera",
  "channel": {
    "type": "phone",
    "to": "+16195550142"
  },
  "scopes": [
    {
      "attribute": "presence",
      "purpose": "wire_approval"
    }
  ]
}

Answers

200 OK

The live subject the reference already names, its referral repeated.

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

{
  "id": "01JD2R2B4D6F8H0J2K4M6N8P0Q",
  "reference": "acct_4417",
  "status": "pending",
  "invite_url": "https://app.xipid.org/invitations",
  "display_name": "Sam Rivera",
  "channel": {
    "type": "phone",
    "to_masked": "+1 ••• ••• 0142"
  },
  "scopes": [
    {
      "attribute": "presence",
      "purpose": "wire_approval"
    }
  ],
  "created_at": "2026-11-18T15:20:07.311Z",
  "updated_at": "2026-11-18T15:20:07.311Z"
}

201 Created

The subject the referral made. Location names it.

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

{
  "id": "01JD2R2B4D6F8H0J2K4M6N8P0Q",
  "reference": "acct_4417",
  "status": "pending",
  "invite_url": "https://app.xipid.org/invitations",
  "display_name": "Sam Rivera",
  "channel": {
    "type": "phone",
    "to_masked": "+1 ••• ••• 0142"
  },
  "scopes": [
    {
      "attribute": "presence",
      "purpose": "wire_approval"
    }
  ],
  "created_at": "2026-11-18T15:20:07.311Z",
  "updated_at": "2026-11-18T15:20:07.311Z"
}

Errors