Skip to main content

Developers

Authentication

The BOS API uses JWT access and refresh tokens for supported user sessions.

Logging in

Exchange credentials for tokens at the login endpoint. Note the request body uses snake_case:

POST /api/v1/auth/login
Content-Type: application/json

{
  "email": "you@company.com",
  "password": "your-password"
}

A successful response returns an access token and a refresh token.

Making authenticated requests

Send the access token as a Bearer token in the Authorization header:

GET /api/v1/crm/leads
Authorization: Bearer <access_token>

Token lifetimes

  • Access token — short-lived (about 15 minutes). Use it on every request.
  • Refresh token — longer-lived (about 7 days). Use it only to get a new access token.

Refreshing a token

When the access token expires, exchange your refresh token for a new one:

POST /api/v1/auth/refresh
Content-Type: application/json

{
  "refresh_token": "<refresh_token>"
}

For security, the old refresh token is rotated out. Logging out via POST /api/v1/auth/logout revokes the refresh token immediately.

Keep secrets safe

Never embed tokens in client-side code or commit them to source control. Store them securely and rotate them through the documented session flow. A leaked token can act with the full permissions of its owner.

Permissions still apply

Authentication only proves who you are. What you can do is still governed by your roles and permissions, and every API action is recorded in the audit trail.