Skip to main content

Authentication

Authenticate every request with an API key in the Authorization header:

Authorization: Bearer ru_live_<id>.<secret>

Create and manage keys in the dashboard under Settings → Developer / API.

Keys & secrets

  • The full key (ru_live_<id>.<secret>) is shown once at creation. Store it securely — you can't retrieve the secret again, only rotate or revoke it.
  • Each key has a set of scopes that gate which endpoints it can call.
  • Keys can optionally be restricted to an IP allowlist (plain IPs or CIDR).

Modes

  • ru_live_… — live keys, act on real channels.
  • ru_test_… — test keys.

Scopes

Grant a key only the scopes it needs:

ScopeAllows
messages:readread messages
messages:writesend messages
conversations:readread conversations
conversations:writeassign / change status / tag
customers:readread contacts
customers:writecreate / update / merge contacts
channels:readread channels
webhooks:read / webhooks:manageread / manage webhooks

A request missing the required scope returns 403 with required_scope.

Rate limits

Requests are throttled per API key (~60 req/s). Exceeding the limit returns 429 Too Many Requests with a Retry-After header.

Errors

{ "error": "Insufficient scope", "required_scope": "messages:write" }
StatusMeaning
401Missing, malformed, revoked, or expired key
403Missing scope, or client IP not allowlisted
429Rate limited