Documentation Index
Fetch the complete documentation index at: https://vpn-docs.wxapros.com/llms.txt
Use this file to discover all available pages before exploring further.
Error envelope
Every error response uses the same JSON shape:code is a stable machine-readable identifier; message is human-readable
and may change. Always switch on code, not message.
Status codes
| Status | Code | Meaning | Retry? |
|---|---|---|---|
400 | bad_request | Malformed request body or invalid IP format | No — fix the request |
401 | missing_api_key | X-API-Key header missing | No — add the header |
401 | invalid_api_key | Key not found or revoked | No — generate a new key |
403 | tier_locked | Endpoint requires a higher tier | No — upgrade or remove field |
403 | scope_denied | Key doesn’t include the required scope | No — regenerate with vpn scope |
404 | not_found | Resource doesn’t exist (rare) | No |
422 | validation_error | Pydantic validation failed | No — fix payload |
429 | rate_limited | Too many requests | Yes — see headers |
429 | quota_exhausted | Monthly quota used | Yes after billing reset |
500 | internal_error | Unexpected server error | Yes — exponential backoff |
503 | unhealthy | Service degraded | Yes — exponential backoff |
Rate-limit headers
Every response includes the current rate-limit state:X-RateLimit-Limit is your sustained-rate cap (req/s). X-RateLimit-Reset
is a Unix timestamp when the current window rolls over. Retry-After
appears only on 429 and is the recommended wait in seconds.
Retry strategy
For transient errors (429, 500, 503):
Quota-exhausted handling
When you receive429 quota_exhausted, your monthly quota is consumed.
Until the next billing cycle:
- Switch to cached or aged data if you have it
- Drop low-value lookups (e.g., already-known clean IPs)
- Contact
sales@whoisxmlapi.comfor an emergency quota top-up - Upgrade to a higher tier — pro-rated billing means same-day activation