Search devices
Find up to 20 published devices by name, with optional brand and category filters. Results contain identifiers and labels only; fetch Device Details for specifications.
/v1/searchRequest
Run this on your server with SPECSPOOL_API_KEY set.
curl --request GET 'https://api.specspool.com/v1/search?q=iphone&category=phone&limit=10' \
--header "x-api-key: $SPECSPOOL_API_KEY"Parameters
Required header: x-api-key.
| Field | Type | Presence |
|---|---|---|
q | string | Required |
brand | slug | Optional |
category | category | Optional |
limit | integer | Optional |
- Send q exactly once. After trimming, it must contain 2-200 characters and at least one letter or digit.
- brand is a lowercase brand slug. limit defaults to 10 and accepts 1-20. category uses one of the supported category values.
- Only q, brand, category and limit are accepted, each at most once. Unknown parameters, duplicates, page and sort return 400 validation_error before admission.
- The response is only a data array of { id, slug, name, brand, brandSlug, category }. It has no summaries, specifications, images, facets, pagination, totals, revision or conditional 304 workflow.
- Category values: phone, tablet, smartwatch, laptop, desktop, cpu, gpu, motherboard, memory, storage, peripheral, reference. Use GET /v1/categories to discover categories with published devices.
- This is a discovery request. Account-wide discovery limits use fixed UTC windows and apply across all API keys.
Response
200 OK, application/json. See Response schema for device, brand, variant and search-result fields.
All customer /v1 responses use Cache-Control: private, no-store. Free device-detail responses omit image URL fields. Image URLs are optional on paid plans too; check for their presence before rendering an image.
Show an example JSON response
Illustrative data; names, counts and specifications are examples.
{
"data": [
{
"id": "00000000-0000-4000-8000-000000000001",
"slug": "example-phone",
"name": "Example Phone",
"brand": "Example Brand",
"brandSlug": "example-brand",
"category": "phone"
}
]
}| Field | Type | Presence |
|---|---|---|
data | CustomerDeviceMatch[] | Required |
Errors
Invalid supported parameters or malformed JSON can return 400 validation_error. Authentication and admission can return 401, 402, 403, 429 or 503; see authentication errors. Unexpected failures return 500 internal_error. Errors after admission remain counted.
400 validation_errorThe query is missing, invalid, duplicated, or contains unsupported parameters.
503 SEARCH_UNAVAILABLESearch is temporarily unavailable. Retry with backoff.
{
"error": {
"code": "validation_error",
"message": "Invalid request parameters"
}
}