Skip to main content
The Holos API uses token-based authentication. Every request must include a session token in the Authorization header. Tokens are obtained through a passwordless magic link flow.

Obtaining a token

Authentication is a three-step flow: 1. Request a magic link
2. Authenticate the token from the link The user receives an email containing a magic link. Extract the token from the link and exchange it:
This returns an intermediate_session_token along with a list of organizations the user belongs to. 3. Exchange for an org-scoped session
The response contains a session.jwt. This is the token you’ll use for all subsequent requests.

Making authenticated requests

Pass the session JWT as a bearer token:
Requests without a valid token receive a 401 Unauthorized response.

Token expiry

Session tokens expire after a configurable period. When a token expires, re-authenticate using the magic link flow above. The Holos dashboard and apps handle refresh automatically.

Organization context

Most endpoints are org-scoped, but the organization is not named in the URL. It comes from the session token, so GET /skills returns the skills of whichever organization your session is currently bound to.
A user may belong to several organizations, and a session is bound to one of them at a time. To act on a different one, exchange the session for a session in that org:
The endpoints that do name an organization in the path are the ones that administer it rather than work inside it, such as GET /organizations/{id}/members and POST /organizations/{id}/objects/upload. Authorization is enforced per-org from the member’s role in the bound organization.

Roles