API Reference
OIDC
Platform

Invitations

AdminUpdated Sep 11, 2026

Invitations

Instance-level invitations let you invite an email to the whole instance (as opposed to an organization invitation, which seats someone in one org). On matching-email sign-up, the invitation's public_metadata is copied onto the new user.

{
  "object": "invitation",
  "id": "inv_…",
  "email_address": "ada@example.com",
  "status": "pending",
  "public_metadata": { "referred_by": "campaign_x" },
  "expires_at": 1758204800000,
  "accepted_at": null,
  "created_at": 1757600000000
}

Endpoints

Method & path

Scope

Notes

GET /v1/invitations

invitations:read

List, cursor-paginated

POST /v1/invitations

invitations:write

Create; expires in 7 days. Metadata copied to the new user on sign-up.

POST /v1/invitations/:id/revoke

invitations:write

Revoke a pending invitation

Example

const invite = await atlas.invitations.create({
  email_address: 'ada@example.com',
  public_metadata: { referred_by: 'campaign_x' },
});

// Later
await atlas.invitations.revoke(invite.id);
curl https://api.atlas.dev/v1/invitations \
  -H "Authorization: Bearer sk_live_xxx" \
  -H "Content-Type: application/json" \
  -d '{"email_address":"ada@example.com","public_metadata":{"referred_by":"campaign_x"}}'

Waitlist

For sign-up gating rather than proactive invites, an instance can run a waitlist. List entries and decide them from the backend:

  • GET /v1/waitlist_entries (waitlist:read) — entries + per-status counts, cursor-paginated.

  • POST /v1/waitlist_entries/:id/decide (waitlist:write) — approve or deny an entry.

Was this page helpful?
Invitations