VANITYPASS
White-label APICircles

Invites & Membership

Invite users by username or link, join via code, accept or decline, leave, and remove members.

Invites & Membership

Bring people into a circle and manage who stays. Members can be invited directly by username, pulled in through a shareable link, or added when they redeem an invitation code. All endpoints authenticate as the end user with a Bearer JWT plus the X-App-Id and X-Environment headers.

{circle_id} in every path is the circle's UUID.

Invite by Username

POST /v1/circle/{circle_id}/invite/username

Sends a circle invitation directly to an existing user identified by their username (the account's tag).

FieldTypeRequiredDescription
usernamestringyesUsername of the user to invite.
Sandbox-only. Try-it requests target https://cloud.vanitypass.com with X-Environment: Sandbox. No real bookings or charges. Production access: contact us.
POST/v1/circle/{circle_id}/invite/username

Sandbox credentials

Keys never leave your browser — they are sent only to cloud.vanitypass.com with X-Environment: Sandbox.

curl -X POST 'https://cloud.vanitypass.com/v1/circle/{circle_id}/invite/username' \
  -H 'Content-Type: application/json' \
  -H 'X-Environment: Sandbox' \
  -d '{"username":"jane.doe"}'

POST /v1/circle/{circle_id}/invite/link

Generates a shareable invitation link for the circle. The optional invitation_type controls who administers members joining through the link.

FieldTypeRequiredDescription
invitation_typestringnoOne of members_managed, admin_managed. Omit to use the default.
Sandbox-only. Try-it requests target https://cloud.vanitypass.com with X-Environment: Sandbox. No real bookings or charges. Production access: contact us.
POST/v1/circle/{circle_id}/invite/link

Sandbox credentials

Keys never leave your browser — they are sent only to cloud.vanitypass.com with X-Environment: Sandbox.

curl -X POST 'https://cloud.vanitypass.com/v1/circle/{circle_id}/invite/link' \
  -H 'Content-Type: application/json' \
  -H 'X-Environment: Sandbox' \
  -d '{"invitation_type":"members_managed"}'

List Pending Invites

GET /v1/circle/{circle_id}/invite/pending

Lists pending invitations for the circle. No request body.

FieldTypeRequiredDescription
circle_idstring (path)yesCircle UUID.
Sandbox-only. Try-it requests target https://cloud.vanitypass.com with X-Environment: Sandbox. No real bookings or charges. Production access: contact us.
GET/v1/circle/{circle_id}/invite/pending

Sandbox credentials

Keys never leave your browser — they are sent only to cloud.vanitypass.com with X-Environment: Sandbox.

curl -X GET 'https://cloud.vanitypass.com/v1/circle/{circle_id}/invite/pending' \
  -H 'Content-Type: application/json' \
  -H 'X-Environment: Sandbox' \

Join via Invite Code

POST /v1/circle/{circle_id}/invite/join

Joins a circle using an invitation code — used when a new or existing user redeems a link. The user supplies their profile details alongside the code.

FieldTypeRequiredDescription
invitation_codestringyesThe invitation code to redeem.
firstnamestringyesUser's first name.
lastnamestringyesUser's last name.
emailstringyesUser's email address.
phone_numberstringyesUser's phone number.
country_of_residencestringyesUser's country of residence.
Sandbox-only. Try-it requests target https://cloud.vanitypass.com with X-Environment: Sandbox. No real bookings or charges. Production access: contact us.
POST/v1/circle/{circle_id}/invite/join

Sandbox credentials

Keys never leave your browser — they are sent only to cloud.vanitypass.com with X-Environment: Sandbox.

curl -X POST 'https://cloud.vanitypass.com/v1/circle/{circle_id}/invite/join' \
  -H 'Content-Type: application/json' \
  -H 'X-Environment: Sandbox' \
  -d '{"invitation_code":"ABC123","firstname":"Jane","lastname":"Doe","email":"jane@example.com","phone_number":"+15551234567","country_of_residence":"US"}'

Accept an Invite

POST /v1/circle/{circle_id}/invite/accept

Accepts a pending invitation. Provide the invitation code; invitation_kind optionally records how the invite was issued (by_username or by_link).

FieldTypeRequiredDescription
invitation_codestringyesThe invitation code being accepted.
invitation_kindstringnoOne of by_username, by_link.
Sandbox-only. Try-it requests target https://cloud.vanitypass.com with X-Environment: Sandbox. No real bookings or charges. Production access: contact us.
POST/v1/circle/{circle_id}/invite/accept

Sandbox credentials

Keys never leave your browser — they are sent only to cloud.vanitypass.com with X-Environment: Sandbox.

curl -X POST 'https://cloud.vanitypass.com/v1/circle/{circle_id}/invite/accept' \
  -H 'Content-Type: application/json' \
  -H 'X-Environment: Sandbox' \
  -d '{"invitation_code":"ABC123"}'

Decline an Invite

POST /v1/circle/{circle_id}/invite/decline

Declines a pending invitation.

FieldTypeRequiredDescription
invitation_codestringyesThe invitation code being declined.
Sandbox-only. Try-it requests target https://cloud.vanitypass.com with X-Environment: Sandbox. No real bookings or charges. Production access: contact us.
POST/v1/circle/{circle_id}/invite/decline

Sandbox credentials

Keys never leave your browser — they are sent only to cloud.vanitypass.com with X-Environment: Sandbox.

curl -X POST 'https://cloud.vanitypass.com/v1/circle/{circle_id}/invite/decline' \
  -H 'Content-Type: application/json' \
  -H 'X-Environment: Sandbox' \
  -d '{"invitation_code":"ABC123"}'

Leave a Circle

POST /v1/circle/{circle_id}/members/leave

Removes the authenticated user from the circle.

FieldTypeRequiredDescription
circle_idstringyesCircle UUID (also present in the path).
Sandbox-only. Try-it requests target https://cloud.vanitypass.com with X-Environment: Sandbox. No real bookings or charges. Production access: contact us.
POST/v1/circle/{circle_id}/members/leave

Sandbox credentials

Keys never leave your browser — they are sent only to cloud.vanitypass.com with X-Environment: Sandbox.

curl -X POST 'https://cloud.vanitypass.com/v1/circle/{circle_id}/members/leave' \
  -H 'Content-Type: application/json' \
  -H 'X-Environment: Sandbox' \
  -d '{"circle_id":"{circle_id}"}'

Remove a Member

POST /v1/circle/{circle_id}/members/remove

Removes another member from the circle. Requires the appropriate management rights on the circle.

FieldTypeRequiredDescription
circle_idstringyesCircle UUID (also present in the path).
member_idstringyesIdentifier of the member to remove.
Sandbox-only. Try-it requests target https://cloud.vanitypass.com with X-Environment: Sandbox. No real bookings or charges. Production access: contact us.
POST/v1/circle/{circle_id}/members/remove

Sandbox credentials

Keys never leave your browser — they are sent only to cloud.vanitypass.com with X-Environment: Sandbox.

curl -X POST 'https://cloud.vanitypass.com/v1/circle/{circle_id}/members/remove' \
  -H 'Content-Type: application/json' \
  -H 'X-Environment: Sandbox' \
  -d '{"circle_id":"{circle_id}","member_id":"{member_id}"}'