Authentication

Not authenticated— sign in to auto-fill your API key in code examples

Sign up with invitation

POST/v1/auth/signup-with-invitation

Request body

emailstringrequired

passwordstringrequired

invitationTokenstringrequired

The 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/session

Request body

emailstringrequired

passwordstringrequired

Response200
{
  "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/session
Response200
{
  "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/session
Response200
{
  "ok": true
}
Response401
{
  "ok": false,
  "error": "Authentication required",
  "code": "UNAUTHORIZED",
  "details": {}
}