Ref

API

Authenticate with a secret key from the dashboard. Send it as Authorization: Bearer sk_live_… or X-API-Key. Free plans include 1,000 successful calls per UTC month.

Base URL

https://speckinsights.com

GET /api/v1/geo

IP address to location and postal code. Omit ip to look up the caller.

curl "https://speckinsights.com/api/v1/geo?ip=8.8.8.8" \
  -H "Authorization: Bearer sk_live_YOUR_KEY"

Returns city, region, country, ZIP/postal code, coordinates, timezone, and ISP.

GET /api/v1/zip

Demographics for a 5-digit U.S. ZIP code.

curl "https://speckinsights.com/api/v1/zip?zip=10001" \
  -H "X-API-Key: sk_live_YOUR_KEY"

Requires a 5-digit ZIP. Some PO-box and unique ZIPs have no demographics row.

GET /api/v1/demographics

The full pipeline: IP → geolocation/ZIP → demographics.

curl "https://speckinsights.com/api/v1/demographics?ip=8.8.8.8" \
  -H "Authorization: Bearer sk_live_YOUR_KEY"

Non-U.S. IPs still return geo. demographics is null and notes explains why (no ZIP, non-U.S., or no match for that ZIP).

Errors

401 missing/invalid key · 400 private or malformed IP · 404 no demographics for that ZIP · 429 quota · 503 demographics temporarily unavailable.

Caching

Geolocation is stored for 7 days. Demographics payloads are stored for 30 days keyed by ZIP. Cached hits still count against quota.