REST API
Authentication
Send the app's REST API key in a header. Keys are per app, shown once, can be locked to IP addresses, and can be revoked.
Get a key
In the dashboard, open the app's Settings → Keys & IDs and create a REST key. Give it a name and, if you want, the IP addresses allowed to use it.
The key starts with xulo_. It is shown once, when you create it. Store it on your server, for example as XULO_REST_KEY. It must never ship inside an app.
Send the key
Any one of these headers works:
Authorization: Key xulo_...
Authorization: Bearer xulo_...
X-Xulo-Key: xulo_...
A key in the query string is not accepted. The call returns 401.
One key, one app
A key belongs to one app.
- The body's
app_idmust be that app's App ID. Another app's id returns 404. - If the body has a
bundle_id, it must be that app's bundle id. Another bundle id returns 404. GET /api/v1/notifications/{id}with another app's send returns 404.
An organization key that starts with perk_ is not a REST key and returns 401. So does the App ID.
IP lock
A key can be locked to IP addresses or ranges, such as 203.0.113.7 or 203.0.113.0/24. Set them when you create the key, or later under IP lock.
- With no addresses set, every address is allowed.
- With addresses set, a call from anywhere else returns 403, and the key's last use is not updated.
Revoke
Revoke a key in Settings → Keys & IDs. A revoked key returns 401.
Errors
| Status | Body | When |
|---|---|---|
| 401 | {"message":"Missing REST API key."} |
No key in a header. |
| 401 | {"message":"Invalid REST API key."} |
The key is wrong or revoked. |
| 403 | {"message":"This REST key is locked to other IP addresses."} |
The IP lock refused the address. |
See Errors for the rest.