Invite your team
Add staff to an organization by email. Every invitation is single-use, email-bound, and expires in 7 days.
Invite
Invite staff by email
Admins invite dashboard users with POST /anoman/v1/accounts/{id}/invitations. The role is one of admin (full management), admin_read_only (read-only auditor), or member (staff access per RBAC) — see Organizations for what each role can do.
This flow is for staff who get a dashboard. Non-technical employees who only use Copilot are onboarded as managed endusers instead — a separate, domain-gated invite path.
# Invite a staff member by email (admin+). Roles:
# admin | admin_read_only | member
curl https://api.anoman.io/anoman/v1/accounts/acct_9f2b.../invitations \
-H "Authorization: Bearer anm-sk-..." \
-H "Content-Type: application/json" \
-d '{ "email": "[email protected]", "role": "member" }'
# 200 OK — the raw token is emailed to the invitee, never returned here.
# {
# "id": "inv_71ad...",
# "email": "[email protected]",
# "role": "member",
# "status": "pending",
# "expiresAt": "2026-08-20T09:00:00Z"
# }Mechanics
How invitations work
- Single-use, hashed token — the raw token is emailed to the invitee and never returned by the API; only a salted hash is stored.
- 7-day expiry — after 7 days the token is dead and an admin must re-send a fresh invitation.
- Email-bound — the account accepting must match the invited email (case-insensitive); you can't forward an invite to a different address.
- Verified email required — the invitee's Anoman email must be verified before they can accept.
Accept
The accept flow
The invitation email links to /invite/{token} on the dashboard. That page validates the token and shows the org and role, then accepts on one click.
- Signed out → the invitee signs in or creates an account, and is round-tripped back to the invite page.
- Signed in → the page validates the token and displays the org + role; one click accepts.
- On accept, staff are auto-switched into the org; endusers are pointed to Copilot instead.
# Validate a token (what /invite/{token} calls under the hood).
curl https://api.anoman.io/anoman/v1/invitations/<token>
# 200 OK
# { "accountId": "acct_9f2b...", "accountName": "Acme Corp",
# "role": "member", "email": "[email protected]" }
# Accept it (the signed-in invitee, email must match).
curl https://api.anoman.io/anoman/v1/invitations/accept \
-H "Authorization: Bearer anm-sk-..." \
-H "Content-Type: application/json" \
-d '{ "token": "<token>" }'Manage
List and revoke
Admins can see pending and past invitations and revoke any that haven't been accepted yet. In the dashboard this is the Members page → Invitations tab (invite dialog, pending list, revoke button).
# List pending and past invitations (admin+).
curl https://api.anoman.io/anoman/v1/accounts/acct_9f2b.../invitations \
-H "Authorization: Bearer anm-sk-..."
# Revoke a pending invitation.
curl -X DELETE \
https://api.anoman.io/anoman/v1/accounts/acct_9f2b.../invitations/inv_71ad... \
-H "Authorization: Bearer anm-sk-..."Invite your team
Send an invitation from the Members page — it's live in seconds.