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.
Base URL
/api/v1/vpn/* to the WXA VPN backend. All
URLs in this reference are relative to the base.
Endpoint inventory
Lookup
| Method | Path | Description | Min tier |
|---|---|---|---|
GET | /ip/{ip} | Single IP classification | Free |
POST | /ip/batch | Batch up to 100 IPs | Pro |
GET | /shadow_vpn/lookup/{ip} | Shadow VPN / RAI assets on an IP | Enterprise |
Aggregates
| Method | Path | Description | Min tier |
|---|---|---|---|
GET | /stats | Global classification counts | Free |
GET | /providers | All known providers + IP counts | Starter |
GET | /stats/country/{code} | Per-country VPN concentrators | Pro |
GET | /stats/asn-abuse | ASN abuse leaderboard | Pro |
Bulk exports
| Method | Path | Description | Min tier |
|---|---|---|---|
GET | /export/csv | Full dataset, CSV | Starter |
GET | /export/mmdb | MaxMind-style database | Pro |
GET | /export/parquet | Columnar Parquet | Business |
Conventions
IP format
Always use canonical string form. Both IPv4 and IPv6 are supported:- IPv4:
1.1.1.1 - IPv6:
2606:4700:4700::1111
404 not_found — we don’t classify them.
Response shape
The pinned fields (see CONTRACT.md) are stable. Field availability depends on tier — see tiers. When a tier-gated field is unavailable, it is omitted from the response, not returned asnull. Callers should handle missing fields
gracefully.
Caching
Aggregate endpoints (/stats, /providers, /stats/country/*,
/stats/asn-abuse) are server-side cached for 60 s – 5 min. The
Cache-Control header reflects this. Lookup endpoints are not cached
server-side — every request hits the live database.
Time
All timestamps are ISO 8601 withZ suffix:
2026-04-28T17:23:00Z. They reflect UTC.