Workspaces and team access.
Keep separate businesses organized and invite teammates using their verified account email. These operations use an authenticated app session; merchant bearer keys cannot administer workspace access.
01Create or switch a workspace
Your email account starts with a personal workspace. Team lets you create a business workspace with passkey approval. The sidebar selector reloads the dashboard for the selected workspace, clearing previous wallet and form state. The saved selection is a browser preference; every API operation independently checks current membership.
02Choose a deliberate role
The owner manages team access and workspace naming. Administrators can configure merchant services, issue scoped API keys and move funds with the required approvals. Viewers can inspect workspace records. A workspace role grants neither platform operator access nor wallet private keys.
03Invite the exact email
The owner creates a seven-day invitation with a viewer or administrator role after passkey approval. The recipient signs in using that exact email and opens Team. An invitation ID cannot grant access to another email. This action creates an in-app invitation and sends no invitation email.
04Accept or decline explicitly
The recipient reviews the workspace and role, confirms the permissions and verifies a passkey before acceptance. Declining closes the invitation. Expired or cancelled invitations cannot be accepted; a resolved invitation cannot upgrade an existing member.
05Review sensitive access changes
Only the owner can change a non-owner role or remove a member. Submit the current expected role and an audit reason. Removing or downgrading an administrator revokes their workspace API keys and pauses active webhook endpoints they manage in the same database transaction. Other memberships and historical payments are preserved. The owner cannot be removed or demoted through this API.
06Leave and recover safely
A non-owner can leave with passkey approval. All access writes require their original Idempotency-Key. The dashboard retains interrupted requests in per-account/per-workspace session storage and retries the same body and key. Replaying an already accepted invitation never restores a subsequently removed or downgraded membership.
07Inspect access history
Owners can read keyset-paginated access history. Team shows current members and up to 100 invitation records, with active invitations first. Current limits are ten owned workspaces, fifty memberships per account, one hundred members per workspace, twenty pending invitations and one hundred invitations per workspace per UTC day. These limits do not ask for additional signup identity.
// App-session operations. All POST requests require an Idempotency-Key.
GET /v1/workspaces
POST /v1/workspaces
{ "name": "Commerce team" }
GET /v1/workspaces/{workspaceId}/team
POST /v1/workspaces/{workspaceId}/team/invitations
{ "email": "teammate@example.com", "role": "viewer" }
GET /v1/workspace-invitations
POST /v1/workspace-invitations/{id}/accept
{}
POST /v1/workspaces/{workspaceId}/team/members/{userId}/role
{ "expectedRole": "admin", "role": "viewer", "reason": "Reduce access after project review." }
POST /v1/workspaces/{workspaceId}/team/leave
{}
GET /v1/workspaces/{workspaceId}/team/history?limit=20
// Follow nextCursor using ?before=... for the next page.Open your workspace