For most integrations the answer is Api-Token. The other four exist for specific user-facing flows.
Api-Token (server-to-server)
Generate a token at Settings → Developers → API Access. Send it as a raw header — there is noBearer prefix and no encoding:
- Read/write — full access to whatever the owning user can do.
- Read-only — any
POST,PATCH,PUT, orDELETEis rejected with403 Forbidden. Useful for analytics integrations.
JWT (interactive login)
For sessions started by a user typing email + password, exchange those credentials for a JWT:POST /api/v1/token/refresh for a new pair.
JWTs are scoped to the tenant the login was made against — calling a different tenant’s host with the same JWT will fail with 401.
OAuth 2.0 (third-party apps)
When you want users to “Log in with Orgo” from a third-party site, register an OAuth app at Settings → Developers → OAuth Applications and use the Authorization Code flow:profile, email, groups, roles. Request only what you need — fewer scopes means a simpler consent screen for the user.
Full setup walkthrough: OAuth Server.
OTP (one-time password)
For users who do not have a password — or who prefer a magic-link flow — Orgo can send a 6-digit code by email. Two steps:X-Contact-Hash (anonymous contacts)
When Orgo emails a Contact (someone without a user account) an event invitation or a form link, the email contains a magic URL with a hash. That hash is also the auth header:Picking the right method
I'm building an integration that runs on a server I control
I'm building an integration that runs on a server I control
Api-Token. Read-only if you only need to fetch data; read/write if you need to create or update.
I'm building a mobile or web app that logs users in with their Orgo password
I'm building a mobile or web app that logs users in with their Orgo password
JWT. Call
POST /api/v1/login-check with the user’s credentials, store the returned JWT, and send it on every subsequent call.I want users to click 'Log in with Orgo' on my third-party site
I want users to click 'Log in with Orgo' on my third-party site
OAuth 2.0. Register an OAuth application and follow the Authorization Code flow.
I want password-less login by email code
I want password-less login by email code
OTP. Two-step:
request-login-otp then verify-login-otp. Returns a JWT.I'm building the receiving end of an Orgo-sent email link for non-members
I'm building the receiving end of an Orgo-sent email link for non-members
X-Contact-Hash. The hash is in the URL Orgo emails; lift it into the header on subsequent API calls.
Common authentication errors
Related
- Tenancy — getting the tenant context right is half of getting auth right
- Errors — full error envelope reference
- OAuth Server — admin-side setup for OAuth applications

