Invitations
- Written for
- + Written for
- Deprecated
- + Deprecated
- Applies to
- + Applies to
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 |
|---|---|---|
|
| List, cursor-paginated |
|
| Create; expires in 7 days. Metadata copied to the new user on sign-up. |
|
| 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.