Authentication
Every request to the RevVue API (except the authorization and authorizationSettings queries themselves) must carry a JWT access token:
Tokens are issued through the API itself, so sign-in is a plain GraphQL query — no separate auth service to integrate.
Get a token
Use the authorization query with your credentials. Two grant types are supported:
PASSWORD— sign in as a user (optionally with atotpcode if two-factor is enabled)CLIENT_CREDENTIALS— machine-to-machine access for integrations and backend services
The user.token field in the response is your JWT. Send it as the Authorization: Bearer header on every subsequent request.
Tokens expire. Decode the JWT (or use the user.decodedToken field) to read the expiry, and request a new token before it runs out — the authorization query also accepts an existing token argument to refresh a session.
Tenancy
RevVue is multi-tenant: every resource belongs to a tenant (your organization), and most queries and mutations take or infer a tenantId. Your token is scoped to your tenant — you’ll find it on user.tenantId after signing in.
If a user belongs to several tenants, the tenantToken query issues a token scoped to a specific one:
Verifying tokens
If you need to validate RevVue-issued JWTs in your own services, the authorizationSettings query exposes the public key, audience, and realm configuration used to sign them.

