ASN API
API reference
ASN HTTP endpoints on api.syndaq.com.
All ASN endpoints are served from https://api.syndaq.com/v1/asn/.
Authenticated requests require a valid ASN key. Lookup routes require your as_sec_ secret key.
Endpoints overview
| Method | Path | Auth | Purpose |
|---|---|---|---|
| GET | /v1/asn/lookup | Secret key | Lookup by ?ip= query parameter |
| GET | /v1/asn/lookup/{ip} | Secret key | Lookup by IP in the URL path |
| GET | /v1/asn/status | Public or secret key | Plan limits and quota snapshot |
Response headers
Successful and error responses may include:
| Header | Description |
|---|---|
X-Request-Id | Unique ID for support and log correlation |
X-RateLimit-Limit | Plan requests per minute for this key |
X-RateLimit-Remaining | Requests left in the current minute window |
X-RateLimit-Reset | Unix timestamp when the minute window resets |
X-Quota-Limit | Monthly quota for the subscription |
X-Quota-Remaining | Lookups left this calendar month (UTC) |
X-Quota-Period | Current quota month (YYYY-MM) |
Retry-After | Seconds to wait after HTTP 429 |
GET /v1/asn/lookup
Returns ASN and network classification for a single public IP address.
Request
Pass the target IP using one of these forms:
GET /v1/asn/lookup/8.8.8.8
GET /v1/asn/lookup?ip=8.8.8.8
Both IPv4 and IPv6 are supported. IPv6 addresses in the path should be URL-encoded.
Headers:
Authorization: Bearer as_sec_YOUR_SECRET_KEY
Success response (200)
{
"success": true,
"ip": "8.8.8.8",
"cached": true,
"fetched_at": "2026-07-15 12:00:00.000",
"asn": 15169,
"as_org": "GOOGLE, US",
"network": "8.8.8.0/24",
"country_code": "US",
"registry": "arin",
"allocated": "1992-12-01",
"network_type": "hosting",
"request_id": "e6d04020be9b57b1e1069d6e483c0443"
}
Network type values
network_type is a lightweight heuristic based on organization name keywords:
| Value | Typical signals |
|---|---|
hosting | hosting, cloud, vps, datacenter, colocation |
education | university, edu |
government | government, gov |
isp | telecom-style orgs that are not classified above |
unknown | No clear match |
Treat network_type as a coarse hint for fraud and access control, not a definitive industry classification.
Response fields
| Field | Type | Description | |
|---|---|---|---|
ip | string | Normalized IP that was looked up | |
cached | boolean | true when Syndaq already holds a recent result for this lookup | |
fetched_at | string | When this result was last retrieved | |
asn | integer \ | null | Autonomous system number |
as_org | string \ | null | AS organization name |
network | string \ | null | Announced prefix / CIDR covering the IP |
country_code | string \ | null | ISO country code when available |
registry | string \ | null | RIR label when available (for example arin) |
allocated | string \ | null | Allocation date string when available |
network_type | string | hosting, isp, education, government, or unknown |
GET /v1/asn/status
Returns key status, plan limits, and quota usage without performing a lookup.
Request
GET /v1/asn/status
Authorization: Bearer as_sec_YOUR_SECRET_KEY
The public key (as_pub_) is accepted on this route.
Success response (200)
{
"success": true,
"status": "active",
"product": "asn",
"plan": "starter",
"rate_limit_per_minute": 120,
"monthly_quota": 10000,
"quota_unlimited": false,
"quota_remaining": 9842,
"quota_period": "2026-07",
"database_records": 210000
}
Errors
Failed requests return JSON with success: false, error, error_code, and usually request_id.
| HTTP | error_code | Typical cause |
|---|---|---|
| 400 | invalid_ip | Missing or malformed IP address |
| 401 | missing_credentials | No API key provided |
| 401 | invalid_api_key | Unknown, inactive, or revoked key |
| 401 | wrong_key_type | Public key used on a lookup endpoint |
| 403 | ip_not_allowed | Caller IP not on the key allowlist |
| 422 | ip_not_routable | Private, reserved, or non-routable IP |
| 429 | rate_limit_exceeded | Per-minute limit exceeded |
| 429 | quota_exceeded | Monthly quota exhausted |
| 502 | lookup_failed | Temporary lookup failure |
| 500 | internal_error | Unexpected server error |
Handle non-200 responses in your application and retry transient errors with exponential backoff.