Every response is JSON, and the status field always equals the HTTP status code. Every response also carries an X-Request-Id header: quote it when you contact support about a call.Status codes#
| Status code | Meaning |
|---|
200 OK | The request was successful, also when it created something. |
400 Bad Request | Invalid input, malformed JSON, or a domain, VPS, certificate or other resource in the URL that is not in your account. status_description says what is wrong. |
401 Unauthorized | No credential, an unknown, expired or revoked one, or one used from an IP address outside its whitelist. See Authentication. |
403 Forbidden | The credential is valid but may not do this: the user lacks the permission, or the token lacks the scope. |
404 Not Found | Unknown endpoint. |
405 Method Not Allowed | The endpoint does not take this HTTP method. The Allow header lists the methods it does take. |
429 Too Many Requests | Over the rate limit. Wait the number of seconds in Retry-After. |
500 Internal Server Error | Something went wrong on our side. Report it with the X-Request-Id. |
Rate limits#
Each API key and token may make 120 requests per minute. Domain availability checks, which query the registries, have their own limit of 30 domains per minute, shared by the single and the bulk check (a bulk check of 10 domains counts 10 times). Every response carries X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset (seconds until the minute ends); on the availability checks they report that limit. After 20 failed authentications from one IP address within 10 minutes, that address gets 429 for a while.Dates and pagination#
Date-times are ISO 8601 with the time zone offset, such as 2026-11-10T09:43:00+01:00; dates without a time are YYYY-MM-DD.List endpoints accept page and limit (1–100, default 50) and return data.pagination with page, limit, total and total_pages. Some lists return everything when you send neither parameter.Examples#
Successful response (200 OK)#
{
"status": 200,
"status_description": "Request successful",
"data": {
"templates": [
{
"id": 1000,
"alias": "my-dns-template",
"default": true
}
]
}
}
Error response (400 Bad Request)#
{
"status": 400,
"status_description": "You have no access to this resource."
}
Error response (401 Unauthorized)#
{
"status": 401,
"status_description": "No valid API key set"
}
Modified at 2026-11-13 09:40:29