Public API
Third-party access to PNIO traceroute data, targets, anomalies, and infrastructure statistics
Authentication
All endpoints require an API key. Pass it via header or query parameter:
curl -H "X-API-Key: YOUR_KEY" https://pnio.s4s.host/v1/public/statscurl "https://pnio.s4s.host/v1/public/stats?api_key=YOUR_KEY"Rate Limits
Default: 100 req/hr, 2000 req/day
Response Format
JSON by default, CSV for exports
Interactive Docs
OpenAPI / Swagger UIGET
/v1/public/tracesSearch and filter traceroutes with pagination. Supports filtering by direction, probe location, target, anomaly score, status, and time range.
Parameters
direction(string)— outside_to_pk, pk_to_outside, cross_isp, within_ispprobe_city(string)— Probe city nameprobe_country(string)— Probe country code (e.g. PK, US)probe_asn(integer)— Probe AS numbertarget_domain(string)— Target domain (partial match)target_ip(string)— Exact target IPtarget_city(string)— Target city namemin_anomaly(float)— Minimum anomaly score (0.0-1.0)status(string)— completed or failedsince(string)— ISO datetime startuntil(string)— ISO datetime endhours(integer)— Last N hours (default: 168, max: 720)page(integer)— Page number (default: 1)limit(integer)— Results per page (default: 50, max: 200)include_hops(boolean)— Include hop details (default: false)curl -H "X-API-Key: $KEY" "https://pnio.s4s.host/v1/public/traces"GET
/v1/public/traces/{trace_id}Get a single traceroute with full hop details, geo enrichment, and ASN data.
Parameters
trace_id(uuid)required— Traceroute IDcurl -H "X-API-Key: $KEY" "https://pnio.s4s.host/v1/public/traces/example"GET
/v1/public/traces/exportBulk export traces as JSON or CSV. Max 10,000 traces per export.
Parameters
format(string)— json or csv (default: json)direction(string)— Filter by directionmin_anomaly(float)— Minimum anomaly scorehours(integer)— Last N hours (default: 24)limit(integer)— Max traces (default: 1000, max: 10000)include_hops(boolean)— Include hop details (default: true)curl -H "X-API-Key: $KEY" "https://pnio.s4s.host/v1/public/traces/export"Error Codes
| Code | Error | Description |
|---|---|---|
| 401 | api_key_required | No API key provided |
| 403 | invalid_key | API key not found in database |
| 403 | key_disabled | API key has been deactivated |
| 403 | key_expired | API key has passed its expiry date |
| 404 | not_found | Requested resource does not exist |
| 429 | rate_limit_hourly | Hourly request limit exceeded |
| 429 | rate_limit_daily | Daily request limit exceeded |