Authentication
Not authenticated— sign in to auto-fill your API key in code examples
Sign up with invitation
POST
/v1/auth/signup-with-invitationRequest body
emailstringrequiredpasswordstringrequiredinvitationTokenstringrequiredThe invitation token from the email link.
Response201
{
"ok": true,
"user": {
"id": "usr_01HQXYZ",
"email": "alice@acme-logistics.com",
"role": "member",
"accountId": "acc_01HQABC"
}
}Response400
{
"ok": false,
"error": "Invalid request parameters",
"code": "VALIDATION_ERROR",
"details": {
"field": "email",
"reason": "must be a valid email address"
}
}Response409
{
"ok": false,
"error": "Email already registered",
"code": "EMAIL_ALREADY_EXISTS",
"details": {}
}Response422
{
"ok": false,
"error": "Invitation token is invalid or expired",
"code": "INVALID_INVITATION_TOKEN",
"details": {}
}Create session
POST
/v1/auth/sessionRequest body
emailstringrequiredpasswordstringrequiredResponse200
{
"ok": true,
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c3JfMDFIUVhZWiIsImlhdCI6MTcxMjAwMDAwMH0.abc",
"refresh_token": "rt_01HQX789GHI"
}Response401
{
"ok": false,
"error": "Authentication required",
"code": "UNAUTHORIZED",
"details": {}
}Response429
{
"ok": false,
"error": "Rate limit exceeded. Retry after 30 seconds.",
"code": "RATE_LIMIT_EXCEEDED",
"details": {
"retryAfter": 30
}
}Get session
GET
/v1/auth/sessionResponse200
{
"ok": true,
"user": {
"id": "usr_01HQXYZ",
"email": "alice@acme-logistics.com",
"role": "admin",
"accountId": "acc_01HQABC"
}
}Response401
{
"ok": false,
"error": "Authentication required",
"code": "UNAUTHORIZED",
"details": {}
}Logout
DELETE
/v1/auth/sessionResponse200
{
"ok": true
}Response401
{
"ok": false,
"error": "Authentication required",
"code": "UNAUTHORIZED",
"details": {}
}