- Authentication: creating and using
X-Api-Key/X-Api-Secret. - Passkey Login: dashboard sign-in, which doesn’t use a whitelist.
- Environments
- Two kinds of whitelist
- Find your server’s public IP
- Whitelist rules
- Check your IP
- Change a key’s allowed IPs
- Account whitelist endpoints (dashboard)
- Errors
- FAQ
Environments
Sandbox and production whitelists are separate.
Rules at a glance
- Production (
https://api.yativo.com, and every other host on that server): every API key must have at least one allowed IP. A request with no whitelist is rejected with401. - Sandbox (
https://smtp.yativo.com): a whitelist is optional. If you set one, requests must still come from those IPs. - Since 15 October 2026, keys and whitelists can only be managed in the dashboard.
Two kinds of whitelist
A key’s effective whitelist is its own
allowed_ips plus the owner’s
account whitelist. Removing an IP from the account whitelist removes it from
every key at once.
Use key whitelists for most setups. Use the account whitelist for an address
that every key should accept, such as your main NAT gateway.
Find your server’s public IP
The whitelist must contain the public IP your requests come from, as seen by the internet. Private addresses (10.x.x.x, 172.16.x.x–172.31.x.x,
192.168.x.x) don’t work.
Run this on the server that will call the API:
tested_ip.
Whitelist rules
- At least one entry is required on every key. A key with no effective whitelist is blocked from every IP.
- Each key entry is either a single IP (
203.0.113.10,2001:db8::1) or a CIDR range (198.51.100.0/28,2001:db8:abcd::/48). - Ranges can’t be broader than /16 for IPv4 or /32 for IPv6. Entries
like
0.0.0.0/0are rejected. - Up to 50 entries per key, with no duplicates.
- The account whitelist accepts single IPs only.
- The IP checked is the address your request reaches Yativo from. Setting
X-Forwarded-Foror similar headers yourself has no effect.
Check your IP
GET /ip-whitelist/check
Shows which IP Yativo sees for your request and whether it passes your
whitelist. It never blocks, so you can call it any time, including right
after changing a whitelist. Limited to 30 requests a minute.
Call it with your API key, from the server that uses the key:
To check another address, such as a server you haven’t deployed yet, add
?ip=<address>. result, summary, api_key and sitewide then describe
that address, and key_usage still describes the server you called from:
detected_ip isn’t the IP you expected, your traffic leaves through a
different address, such as a NAT gateway or proxy. Whitelist detected_ip.
Change a key’s allowed IPs
In the dashboard, go to API Keys → the key → Allowed IPs. The list you save replaces the current one, and the key and secret don’t change. This needs theteam.api-keys.create permission. A revoked key can’t be changed.
When moving servers: add the new IP first, deploy, then remove the old IP. This avoids downtime.Dashboard developers: this is
PUT /teams/{teamId}/api-keys/{keyId}/allowed-ips, described in
API keys.
Account whitelist endpoints (dashboard)
These endpoints power the account whitelist in the dashboard settings. Since 15 October 2026 they only work from the dashboard (https://app.yativo.com)
with the user’s bearer token. API-key requests get 403.
Team members need team.settings.view to read and team.settings.manage to
change the whitelist.
Get the account whitelist
data is null if no IPs have been added.
Add IPs
new_ip is an array of 1 to 50 single IPs (no CIDR ranges). They’re added
to the existing list; duplicates are ignored.
PUT /api/v1/ip/{id} with the same body also adds IPs, to the record with
that id.
Remove an IP
DELETE /api/v1/ip/203.0.113.12. Returns 404 if there’s no whitelist and
400 IP address not found if the IP isn’t on it.
Errors
FAQ
Does the whitelist apply to dashboard sign-in? No. It only applies to requests made withX-Api-Key / X-Api-Secret.
People signing in to the dashboard can be on any network.
Can I allow any IP?
On sandbox, omit the whitelist to call from any IP. On production,
no: every key needs at least one address, and 0.0.0.0/0 and ranges
broader than /16 (IPv4) or /32 (IPv6) are rejected.
My key worked and now returns 401 or 403.
A 401 with no whitelisted IPs means you called production without a
whitelist. A 403 means your server’s egress IP isn’t on the list (it may
have changed). data.error tells you which.
