IPinfo
IPinfo is a solid read API: GET /{ip}/json returns geo, org and ASN in one call; an invalid or out-of-range IP is a 404 {error:{title:'Wrong ip'}}, not a silent empty 200; a private IP returns {bogon:true} not a made-up location; reads are naturally idempotent; and a chain works - discover your egress IP via GET /json, look up its org, enrich fields via POST /batch. The watch-out: /batch with no token returns {error:'API token required'} but HTTP 200, so trusting the status code reads an auth failure as success.
Cross-validated onClaude Opus 4.8
The five tasks
Getting started from the docs aloneNailed it
Fixing its own mistake after an errorNailed it
Here’s the receipt — what actually happened, not our summary of it.
GET /notanip/json -> 404 {status:404, error:{title:'Wrong ip', message:'Please provide a valid IP address'}} - typed and named. GET /999.999.999.999/json -> same 404 (strict, not a silent empty 200). Watch-out: POST /batch with no token -> {error:'API token required'} but HTTP 200, so the status code masks the auth failure.Following a multi-step flowNailed it
Handling an unclear edge caseNailed it
Not double-charging on a retryNailed it
See everything the AI did (5 steps)
t1 Claude Opus 4.8 GET /8.8.8.8/json?token → 200 full geo/org record
t2 Claude Opus 4.8 GET /notanip/json ; GET /999.999.999.999/json → 404 typed 'Wrong ip' (both)
t3 Claude Opus 4.8 GET /json -> GET /{ip}/json -> POST /batch (field-scoped) → IP discovered -> org -> city/country enriched
t4 Claude Opus 4.8 GET /10.0.0.1/json ; GET /8.8.8.8/country → 200 {bogon:true} ; 'US'
t5 Claude Opus 4.8 POST /batch with no token (auth probe) → HTTP 200 but body {error:'API token required'}Changelog
- 2026-07-05Reclassified to Agent-hostile — silent-failure rule applied consistently across the board.
Tested 2026-07-04 with Claude Opus 4.8 agents · request a re-test