HttpOnly cookie. All endpoints except /health and the /auth routes themselves require a valid bearer token in the Authorization header.
| Token | Lifetime |
|---|---|
| Access token | 15 minutes |
| Refresh token | 30 days |
POST /auth/signup
Register a new user account and company. Use this endpoint to onboard your organization to Boses for the first time.Rate limit: 10 requests per hour per IP address.
Request body
Email address for the new user account.
Password for the account. Must meet minimum security requirements.
Name of your organization. All projects and resources you create will be scoped to this company.
Display name for the user.
Response
JWT access token. Pass this in the
Authorization: Bearer header on subsequent requests.Always
"bearer".Example
POST /auth/login
Authenticate with your email and password. Returns an access token and sets arefresh_token HttpOnly cookie.
Rate limit: 20 requests per minute per IP address.
Request body
Your account email address.
Your account password.
Response
JWT access token valid for 15 minutes.
Always
"bearer".Example
POST /auth/logout
Revoke the current refresh token and clear the auth cookie. Call this when your user ends their session. No request body is required. The refresh token is read automatically from theHttpOnly cookie.
Example
GET /auth/me
Returns the profile of the currently authenticated user.Response
UUID of the authenticated user.
User’s email address.
Display name.
UUID of the company this user belongs to.
Name of the company.
Example
POST /auth/refresh
Rotate your access and refresh tokens. The existing refresh token cookie is consumed and replaced with a new one. Use this to keep sessions alive without requiring the user to log in again. No request body is required. The refresh token is read automatically from theHttpOnly cookie.
Response
A new JWT access token valid for 15 minutes.
Always
"bearer".Example
POST /auth/forgot-password
Send a password reset email to the specified address. If the email matches a registered account, a one-time reset link is sent.Rate limit: 5 requests per hour per IP address.
Request body
Email address of the account you want to reset.
Example
The response is the same whether or not the email address is registered, to prevent account enumeration.
POST /auth/reset-password
Reset your password using the token from the reset email. The token is single-use and expires after a short window.Request body
The password reset token extracted from the link in the reset email.
The new password to set for the account.
