Rate limit exceeded
https://developer.hostup.se/errors/rate_limited {
"type": "https://developer.hostup.se/errors/rate_limited",
"title": "Rate limit exceeded",
"status": 429,
"detail": "Too many WHOIS lookups — please wait a minute and try again.",
"code": "rate_limited",
"instance": "/api/v2/...",
"requestId": "req_abc123",
"timestamp": "2026-04-27T12:00:00.000Z"
}
HTTP 429 responses include headers for retry behavior. Use Retry-After as seconds to wait before retrying.
Retry-After Seconds to wait before retrying the request. X-RateLimit-Limit Maximum requests allowed in the active window. X-RateLimit-Remaining Requests remaining in the active window, usually 0 on 429. X-RateLimit-Reset ISO timestamp when the active window resets. /api/v2/billing/invoices/{id}/actions/resend-email Resend invoice email GET /api/v2/ssh-keys List VPS SSH keys POST /api/v2/ssh-keys Create VPS SSH key PATCH /api/v2/ssh-keys/{id} Rename VPS SSH key DELETE /api/v2/ssh-keys/{id} Delete VPS SSH key GET /api/v2/support/tickets List support tickets POST /api/v2/support/tickets Create support ticket const response = await fetch(url, options);
if (!response.ok) {
const problem = await response.json();
const retryAfterSeconds = response.headers.get("Retry-After");
const rateLimitReset = response.headers.get("X-RateLimit-Reset");
if (problem.code === "rate_limited") {
// Handle: Rate limit exceeded
console.error(problem.detail);
if (retryAfterSeconds) {
// Back off for this many seconds before retrying.
console.log(`Retry after ${retryAfterSeconds}s`);
} else if (rateLimitReset) {
console.log(`Rate limit resets at ${rateLimitReset}`);
}
}
}