Blog·Craft·

One route. Two depths.

Free and paid data ship from the same endpoint. Upgrading is one query parameter, not a new client.

Upgrading a plan should not mean rewriting a client.

Every endpoint returns one shape. Add ?deep=true on a paid plan and the same response comes back with a nested deep object: datacenter flags on /ip, line type on /phone, MX and registration on /domain.

Same call, more fields

Call /ip/8.8.8.8 and you get country, ASN, and network name. Call it again with ?deep=true on a paid plan and those same fields come back, plus deep with datacenter, relay, and Tor.

GET /ip/8.8.8.8
GET /ip/8.8.8.8?deep=true

Same route. Same core fields. One more object when you ask. Nothing moves underneath: no new base URL, no new error shapes, no client rewrite. The upgrade is the query parameter.

Write the integration once against Free. Flip ?deep=true later. The core fields stay put either way.

Try it

Get a key and call any route with ?deep=true. The base fields stay where they were. deep just shows up next to them.