Create a key
An Org Admin creates a key under Settings → API Keys in the dashboard. The raw key is shown once and starts withdh_. Store it in a secret manager and
use it only from a trusted server. Never put it in browser code, a mobile
application, a URL, or a source repository.
Send the key
Send the key on every request. The recommended header is:What a key represents
A key authenticates the organization, not the person who created it. It carriescall_logs.view and chat_logs.view and nothing else, and no
lifecycle event on its creator (a role change, a password reset, a removed
membership, a deleted account) changes what it reaches. Revoking the key is the
only thing that stops it.
To replace a key, create a new one, update your server’s secret, confirm a
request, and then revoke the old key.
Tenant selection
Requests may name an organization or a workspace, through a header or a query parameter:When a request is refused
These refusals happen before the endpoint runs. They return403 Forbidden
with a detail message instead of the standard response envelope:
A record your organization does not own is not refused this way. It reads as
“not found” in the standard envelope, so a caller is never told whether it
exists in another organization.
