Per-API-key IP allowlist
Bind an Orbit API key to one or more source IPs (or CIDR ranges) so the key only authenticates when the request originates from your infrastructure. A leaked key is then useless to anyone outside your network — the request fails with401 INVALID_API_KEY before it touches your billing or tenant data.
This is a per-key control. The org-wide IP allowlist (under Settings → Security) gates the dashboard and SAML login surfaces; the per-key list gates programmatic API authentication.
Constraints
- Up to 50 entries per key.
- Each entry must be a valid IP (v4 or v6) or CIDR range. The auth package validates each entry before storage.
- An empty list (
[]) ornullclears the allowlist — the key becomes unrestricted again. - Changes take effect on the next request — there is no propagation lag.
Read the current allowlist
Owner / admin / developer scope.allowed_ips is null when the key is unrestricted.
Replace the allowlist
PATCH is replace-only — it never merges. To add an entry, fetch the list, append, and PATCH the full list back.
Clear the allowlist (make unrestricted)
What a blocked request looks like
When a key hasallowed_ips set and a request arrives from a non-allowed source IP:
INVALID_API_KEY rather than IP_NOT_ALLOWED so a leaked key can’t enumerate the allowlist by trial-and-error. For the same reason the rejection is deliberately silent — blocked requests are not recorded under a dedicated audit-log action, so don’t build forensics on an api_key.allowed_ips_violation event (none is emitted). Use your edge/gateway access logs to investigate denied source IPs.
Audit log
Every replacement of the allowlist writes an audit-log entry underapi_key.allowed_ips_updated with:
actor_user_idresource_id— the API key iddetails.count— the number of entries in the new listip_address— the operator’s source IP
Validation rules
See also
- Settings API → IP allowlist — org-wide allowlist for the dashboard / SAML.
- Authentication — API key formats and rotation.
- Webhooks → Security — signing for inbound webhooks.