Authentication

API key, session token, and browser-side security.

All API requests require an API key. This page explains the key format, usage patterns, and browser-side security model.

API key format

  • Prefix: sk-
  • The plaintext key is returned only once at provisioning. The server stores only a SHA-256 hash.
  • Minimum length: 16 characters (at least 13 characters after sk-)

Server-side usage

All endpoints accept the key via the Authorization: Bearer header:

curl -H "Authorization: Bearer sk-..." https://audio.lansonai.com/v1/audio/transcriptions

This works for both offline HTTP requests and WebSocket upgrade handshakes.

Browser-side security

Never expose your long-lived API key in frontend code or WebSocket URLs. Use a short-lived session token for browser connections.

Session token flow

Browsers cannot safely store a long-lived key. LansonAI provides a short-lived token mechanism:

1. Frontend → your backend: request a session token
2. Your backend → LansonAI:
   POST /v1/audio/transcriptions/session-token
   Authorization: Bearer sk-...   (your long-lived key, server-side only)
3. LansonAI → your backend: returns rt_... token (valid 60 seconds)
4. Your backend → frontend: pass the rt_... token
5. Frontend → LansonAI: open WebSocket
   ?access_token=rt_...

Session token details

PropertyValue
Prefixrt_
Validity60 seconds
SignatureHMAC-SHA256
Signing secretGATEWAY_SESSION_TOKEN_SECRET (server-side config)
TransportURL query ?access_token=rt_... or ?token=rt_...

Token response

{
  "token": "rt_eyJ...",
  "expires_in": 60,
  "endpoint": "/v1/audio/transcriptions/stream"
}

If GATEWAY_SESSION_TOKEN_SECRET is not configured, the endpoint returns 503 token_issuer_unavailable.

WebSocket authentication methods

The realtime WebSocket accepts three authentication methods:

MethodUse caseUsage
Authorization: Bearer sk-...Server-side clientsHTTP upgrade header
?access_token=rt_...BrowserURL query parameter
?token=rt_...BrowserURL query parameter (alias)
Never put sk-... in a URL. Browser connections must always use rt_... session tokens.

Admin API

Key provisioning, revocation, and plan-catalog endpoints exist under /v1/external-transcription, but they are for internal operators and dashboards, not regular API consumers. See Admin API for details.

Error handling

Error codeHTTPCause
missing_api_key401No Authorization header or query token
invalid_api_key401Key format invalid or unknown key
revoked_api_key401Key has been revoked
expired_api_key401Key has expired
auth_unavailable503Key store unavailable
invalid_session_token401Session token invalid or expired
token_issuer_unavailable503Token issuer not configured

See Errors for the full error reference.

Next steps