ultrarouter docs
API reference

Invitations

Workspace invitations.

Workspace invitations.

This page is GENERATED from the OpenAPI spec (openapi.yaml) — it can never drift from the served API. Set UR_BASE_URL (required: your gateway’s URL) and UR_API_KEY (an ur_sk_* key); secrets are always the $UR_API_KEY placeholder.

List invitations

GET /v1/workspaces/{id}/invitations

Auth: Session cookie + workspace RBAC.

curl -sS -X GET "$UR_BASE_URL/v1/workspaces/req_0000000000000000/invitations" \
  -H "Cookie: better-auth.session_token=$UR_SESSION"

Invite a member

POST /v1/workspaces/{id}/invitations

Auth: Session cookie + workspace RBAC.

curl -sS -X POST "$UR_BASE_URL/v1/workspaces/req_0000000000000000/invitations" \
  -H "Cookie: better-auth.session_token=$UR_SESSION" \
  -H "Content-Type: application/json" \
  -d '{
    "email": "string",
    "role": "string"
  }'

Revoke a pending invitation

DELETE /v1/workspaces/{id}/invitations/{invitationId}

Deletes a pending (unaccepted) invitation so its mailed token stops working; a later accept fails as invitation_invalid. Owner/admin only.

Auth: Session cookie + workspace RBAC.

curl -sS -X DELETE "$UR_BASE_URL/v1/workspaces/req_0000000000000000/invitations/{invitationId}" \
  -H "Cookie: better-auth.session_token=$UR_SESSION"

Accept an invitation

POST /v1/invitations/accept

Accepts the raw token from the JSON body or the ?token= query (the mailed link).

Auth: Session cookie + workspace RBAC.

curl -sS -X POST "$UR_BASE_URL/v1/invitations/accept" \
  -H "Cookie: better-auth.session_token=$UR_SESSION" \
  -H "Content-Type: application/json" \
  -d '{
    "token": "string"
  }'