Search
Search REST API
Full reference for the search endpoint.
Search REST API
POST /api/v1/search/{vertical}
Search entities within a vertical using hybrid search.
Request
curl -X POST https://api.qanatix.com/api/v1/search/manufacturing \
-H "Authorization: Bearer sk_live_abc123..." \
-H "Content-Type: application/json" \
-d '{
"query": "stainless M8 bolt ISO 4017",
"limit": 20,
"offset": 0,
"rerank": true,
"format": "json",
"filters": {
"in_stock": true,
"country": "DE"
}
}'Parameters
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
query | string | yes | — | Search query, 1-500 characters |
limit | integer | no | 20 | Max results (1-100) |
offset | integer | no | 0 | Pagination offset |
rerank | boolean | no | true | Enable cross-encoder reranking |
format | string | no | json | Response format: json, compact, yaml |
filters | object | no | {} | Filters on vertical_data fields (supports _min, _max, _gt, _lt suffixes) |
Response
{
"results": [
{
"entity_id": "550e8400-...",
"name": "Stainless Steel Hex Head Bolt M8x40 ISO 4017",
"score": 0.87,
"vertical": "manufacturing",
"entity_type": "fastener",
"vertical_data": {
"part_number": "SS-M8-40-A2",
"material": "Stainless Steel A2",
"standard": "ISO 4017",
"price_eur": 0.12,
"in_stock": true,
"country": "DE"
},
"description_llm": "...",
"source_type": "file_upload",
"updated_at": "2026-03-05T14:30:00Z"
}
],
"pagination": {
"offset": 0,
"limit": 20,
"has_more": false
},
"metadata": {
"search_mode": "hybrid",
"query_type": "keyword",
"processing_time_ms": 42,
"total_estimate": 1,
"zero_result_fallback_used": false,
"reranked": true,
"cache_hit": false,
"timings": {
"classify_ms": 0.1,
"embed_ms": 18.2,
"search_ms": 12.4,
"hydrate_ms": 8.1
}
}
}Response fields
| Field | Description |
|---|---|
results[].score | Relevance score (0-1, DBSF normalized). Identifier matches = 1.0. |
results[].vertical_data | Your structured data |
metadata.search_mode | Strategy used: hybrid, identifier, degraded, or error |
metadata.query_type | Classification: identifier, keyword, or semantic |
metadata.processing_time_ms | Total server-side time |
metadata.reranked | Whether cross-encoder reranking was applied |
metadata.cache_hit | Whether response was served from cache |
pagination.has_more | Whether more results exist beyond offset + limit |
GET /api/v1/search/{vertical}
Same as POST, with query parameters:
curl "https://api.qanatix.com/api/v1/search/manufacturing?q=M8+bolt&limit=5" \
-H "Authorization: Bearer sk_live_abc123..."| Parameter | Maps to | Default |
|---|---|---|
q | query (required, 1-500 chars) | — |
limit | limit (1-100) | 20 |
offset | offset | 0 |
Filters, rerank, and format are not supported via GET — use POST for those.
Error responses
| Status | Meaning |
|---|---|
| 400 | Invalid query or parameters |
| 401 | Missing or invalid API key |
| 404 | Vertical not found |
| 429 | Rate limit exceeded |
| 500 | Internal error |