Skip to main content

Organizations, members & roles

An organization owns projects, members, integrations, channels, dashboards, a wallet and a retention policy. Every user gets a personal organization on signup and can create or join more.

Create an organization​

Organization switcher (top of the sidebar) → New organization. You become its owner.

GET/POST /api/v1/organizations

Invite people​

Invites go out by SMS to an Iranian mobile number — that is the login identifier.

  1. Settings → Members → Invite.
  2. Enter the mobile number and choose a role.
  3. The invitee gets an SMS with a link; opening it and signing in joins them to the organization.
curl -X POST "$ERRORA/api/v1/organizations/$ORG_ID/invite" \
-H "Authorization: Bearer $ACCESS_TOKEN" -H "Content-Type: application/json" \
-d '{"phone":"09121234567","role":"member"}'

An invite is pending until accepted and expires after its window closes; re-invite to issue a fresh one.

GET /api/v1/organizations/{id}/members
PATCH /api/v1/organizations/{id}/members/{member_id} # change a role
GET /api/v1/organizations/{id}/invites
POST /api/v1/organizations/{id}/invite
GET /api/v1/invites/preview/{token}
POST /api/v1/invites/accept

Roles & permissions​

Five roles, applied per organization and optionally per project (a project-level role overrides the organization one for that project):

RoleMeant for
ownerFull control, including deleting the organization
adminEverything except ownership-level actions
memberDay-to-day work: triage issues, trigger auto-fix
billingWallet, usage and payments — no engineering access
viewerRead-only

Roles resolve through a capability matrix, and every endpoint checks a capability rather than a role name:

CapabilityAllows
org:manageRename/delete the organization, manage members and roles
org:billingView and change billing, see usage and payments
project:createCreate projects
project:manageProject settings, DSN keys, delete
project:readView issues, events, logs, dashboards
issue:writeResolve / ignore / assign / comment, submit user reports
ai:triggerStart AI auto-fix runs
integration:manageConnect and sync source-control integrations
webhook:manageManage notification channels and alert rules

Per-project roles​

Give a contractor viewer at the organization level and member on the one project they work on. The project role wins for that project.

Organization settings​

Settings → Organization: name, slug, and data retention. Deleting an organization deletes its projects and all their data — there is no undo.

Enforce two-factor authentication​

Owners and admins can require 2FA for the whole organization. While it is on, a member without TOTP enrolled is refused every request for this organization's data (403 2fa_required) and the dashboard sends them to their profile to enrol; their other organizations are unaffected.

You can only turn it on once your own account has 2FA — otherwise the switch would lock you out of the organization you just secured. The members tab marks anyone who has yet to enrol.

Troubleshooting​

SymptomCause / fix
Invite SMS never arrivesThe number isn't a valid 09… Iranian mobile, or the SMS is delayed — re-send the invite after a minute
Invitee lands in the wrong organizationThey accepted a different pending invite — check Invites
403 on an actionThe role lacks the capability; check the matrix above rather than guessing
Can't remove the last ownerAn organization must keep at least one owner — promote someone first