Skip to main content
Every request needs two headers:
X-Tenant-Id does not select which workspace you read. Access is always scoped to the workspace that owns the API key — sending someone else’s workspace id does not grant you their data. Both headers are simply required for the request to be accepted.

Creating a key

In Linkiasoft: Settings → API Keys → Create.
The plaintext key is shown once, at creation, and cannot be retrieved afterwards. Store it in your secret manager immediately. If you lose it, revoke the key and create another.

Scopes

Keys are scoped. A key that lacks the scope for an endpoint gets 403 with a message naming what’s missing:
Grant the minimum. An integration that only fires notifications needs conversations:send — and possibly templates:read and channels:read — and nothing else. A key scoped that way cannot read your inbox even if it leaks.
A key created with no scopes has full access to your workspace, for backwards compatibility with keys issued before scopes existed. Always set scopes explicitly on new keys.

Errors

A record belonging to another workspace returns 404, not 403. That’s deliberate: a 403 would confirm the record exists, which is exactly what someone guessing IDs wants to learn. Treat 404 as “not yours or not there” — the API will not distinguish.

Keeping keys safe

  • Never put a key in frontend code, a mobile app, or anything a customer can view — it carries workspace-wide access for its scopes.
  • Use a separate key per integration, so revoking one doesn’t take down the others.
  • Revoke immediately in Settings → API Keys if a key is exposed; it stops working at once.