Integration and operations
API
Every page is backed by an endpoint. Same contract, same fields.
The interface is built on the same API that is published. Responses conform to api/openapi.yaml; no richer internal format exists.
| Endpoint | Returns |
|---|---|
GET /api/v1/ip/{ip} | Verdict for one address |
GET /api/v1/prefix/{cidr} | Prefix with providers inside it |
GET /api/v1/asn/{asn} | Network with provider distribution |
GET /api/v1/service/{tag} | Provider profile |
POST /api/v1/bulk | Many addresses, with a summary |
GET /api/v1/search?q= | Resolve free text to an entity |
GET /api/v1/sources | Feed provenance, licences and freshness — administrators only |
GET /api/v1/meta | Dataset version, counts, coverage |
Every response carries its own provenance
datasetVersionon every response. Do not interpret a result without it.confidenceandevidenceaccompany every claim.- No pre-filtering. The consuming system applies its own threshold.
degradedis set when part of the answer could not be produced, so a partial response is identifiable as such.
curl -s --cookie 'vpndb_session=...' \ https://vpndb.example/api/v1/asn/9009 | jq '.attribution[:3]'