Getting started with the Specspool API
The Specspool API gives you programmatic access to a structured catalog of phones, tablets, and smartwatches — 14,561 devices across 126 brands. Authenticate once, query anything, ship in minutes.
Your app
Web · Mobile · Server
Specspool API
Edge · 14 regions
Your response
Typed · Paginated
Base URL
Every endpoint in this reference is appended to the canonical base URL. We require HTTPS — plain HTTP requests are redirected with 308.
Make your first request
From signup to a live JSON response in three steps. No SDK required — every endpoint works with plain HTTP.
Grab an API key
Sign up for a free Developer account — no credit card. Your credentials show up in Dashboard → API Keys with read scope and 100 requests/minute.
# export credentials once per shell session export SPECSPOOL_API_ID="sp_live_pub_•••••••••" export SPECSPOOL_API_KEY="••••••••••••••••"
Call any endpoint
Pass your x-api-id and x-api-key headers. Below: fetch the iPhone 16 Pro Max full specification.
curl --request GET \ --url 'https://api.specspool.com/v1/products/iphone-16-pro-max' \ --header 'Accept-Encoding: gzip, deflate' \ --header 'x-api-id: sp_live_pub_•••••••••' \ --header 'x-api-key: ••••••••••••••••'
Inspect the response
You get a typed JSON envelope with data and meta. Every spec category is normalised so the same field name behaves identically across vendors.
{ "data": { "id": "iphone-16-pro-max", "brand": "Apple", "display": { "size_in": 6.9, "panel": "LTPO OLED", "refresh_hz": 120 } }, "meta": { "request_id": "req_8f3…b21" } }
Authentication
All requests must include your API ID and key in the x-api-id and x-api-key headers. Keys are scoped (read, write, admin), regionable, and revocable from the dashboard.
Header format
x-api-key: ••••••••••••••••
Accept: application/json
User-Agent: your-app/1.0
Key scopes
write — submit corrections, hotfix data
admin — manage org, billing, members
Keys are prefixed by environment — sp_test_pub_ hits the sandbox, sp_live_pub_ hits production.
Rate limits
Limits are per-key, per-minute, smoothed over a 10-second window. Every response carries X-RateLimit-Remaining and X-RateLimit-Reset headers so you can pace clients gracefully.
Status codes
We follow standard HTTP semantics. Error bodies always include a stable code string you can branch on — never parse the human-readable message.
Official SDKs
First-party libraries with typed models, retry/backoff, and streaming pagination. Community ports listed on GitHub.
What to explore next
You've got the basics. Pick a path that matches what you're building.