- authentication
- Secret API key as a bearer token
- billing
- As `POST /api/v1/ip`.
Runs the standard lookup for the address your request arrived from, as seen through the trusted proxy in front of the service. Useful from a server to confirm what the outside world sees, and from scripts that need their own egress classified. A reserved address, such as a call from the same machine, answers reason: "reserved_range" free of charge.
Parameters
| name | in | type | description |
|---|---|---|---|
| privacy | query | boolean | Keep nothing about this lookup, not even the seven-day repeat marker. |
| abuse_contact | query | boolean | Also look up the network's abuse mailbox from the registry's RDAP record. |
| network_details | query | boolean | Also read the allocation's RDAP record for the network name, organisation, range and registration dates. |
| hostname | query | boolean | Also resolve and forward-confirm the reverse DNS name; a verified crawler name sets is_crawler. |
Example request
curl https://spaw.co/api/v1/ip/me \ -H "Authorization: Bearer sk_live_…"
Responses
200The same body as `POST /api/v1/ip`, for the calling address.
{
"success": true,
"data": {
"ip": "203.0.113.9",
"version": 4,
"reason": null,
"country": "DE",
"city": "Berlin",
"is_datacenter": false,
"risk_score": 0,
"risk_level": "low"
},
"meta": {
"credits_used": 1,
"credits_remaining": 8,
"cache_hit": false,
"request_id": "req_01m1kgdm4xngzmbmff68g94w0c"
}
}401The key is missing, malformed, or revoked.
{
"success": false,
"error": {
"code": "UNAUTHENTICATED",
"message": "Provide a valid API key as a bearer token.",
"request_id": "req_01m1kgdm4xngzmbmff68g94w0c"
}
}402The balance is empty. The lookup did not run.
{
"success": false,
"error": {
"code": "INSUFFICIENT_CREDITS",
"message": "Your credit balance is empty.",
"request_id": "req_01m1kgdm4xngzmbmff68g94w0c"
}
}422The request body could not be validated; `error.errors` lists the fields.
{
"success": false,
"error": {
"code": "VALIDATION_FAILED",
"message": "The email field is required.",
"errors": {
"email": [
"The email field is required."
]
},
"request_id": "req_01m1kgdm4xngzmbmff68g94w0c"
}
}429Over 5 requests per second for the key. Retry after the limit resets.
{
"success": false,
"error": {
"code": "RATE_LIMITED",
"message": "Too many requests. Retry after the limit resets.",
"request_id": "req_01m1kgdm4xngzmbmff68g94w0c"
}
}Error codes
Failures answer { success: false, error: { code, message, request_id } }. Each code has its own page.