Quickstart
Zero to first search query in 5 minutes.
Quickstart
Get your first search result from QANATIX in under 5 minutes.
1. Get an API key
curl -X POST https://api.qanatix.com/api/v1/auth/keys \
-H "X-Tenant-Id: your-tenant-id" \
-H "Content-Type: application/json" \
-d '{"name": "my-first-key", "scopes": ["search", "upload", "records"]}'Response:
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "my-first-key",
"key": "sk_live_abc123...",
"scopes": ["search", "upload", "records"],
"message": "Store this key securely — it cannot be retrieved again."
}Save the key value. You'll use it in all subsequent requests.
2. Upload data
Push a batch of records:
curl -X POST https://api.qanatix.com/api/v1/upload/parts_catalog/fastener/batch \
-H "Authorization: Bearer sk_live_abc123..." \
-H "Content-Type: application/json" \
-d '[
{
"name": "Stainless Steel Bolt M8x40 A2",
"source_id": "ERP-001",
"part_number": "SS-M8-40-A2",
"material": "Stainless Steel A2",
"price_eur": 0.12,
"in_stock": true
},
{
"name": "Hex Nut M8 Grade 8 Zinc",
"source_id": "ERP-002",
"part_number": "HN-M8-G8-ZN",
"material": "Carbon Steel Zinc Plated",
"price_eur": 0.04,
"in_stock": true
}
]'result = qx.ingest.batch("parts_catalog", "fastener", [
{
"name": "Stainless Steel Bolt M8x40 A2",
"source_id": "ERP-001",
"part_number": "SS-M8-40-A2",
"material": "Stainless Steel A2",
"price_eur": 0.12,
"in_stock": True,
},
{
"name": "Hex Nut M8 Grade 8 Zinc",
"source_id": "ERP-002",
"part_number": "HN-M8-G8-ZN",
"material": "Carbon Steel Zinc Plated",
"price_eur": 0.04,
"in_stock": True,
},
])
print(f"Accepted: {result.summary.accepted}")Or upload a CSV file:
curl -X POST https://api.qanatix.com/api/v1/upload/parts_catalog/fastener/upload \
-H "Authorization: Bearer sk_live_abc123..." \
-F "file=@parts.csv"result = qx.ingest.upload("parts_catalog", "fastener", "parts.csv")QANATIX validates, normalizes, and makes your data instantly queryable.
3. Search
curl -X POST https://api.qanatix.com/api/v1/search/parts_catalog \
-H "Authorization: Bearer sk_live_abc123..." \
-H "Content-Type: application/json" \
-d '{"query": "stainless M8 bolt", "limit": 5}'results = qx.search("parts_catalog", "stainless M8 bolt", limit=5)
for r in results.results:
print(r.name, r.score, r.collection_data)Response:
{
"results": [
{
"record_id": "...",
"name": "Stainless Steel Bolt M8x40 A2",
"score": 0.87,
"collection": "parts_catalog",
"record_type": "fastener",
"collection_data": {
"part_number": "SS-M8-40-A2",
"material": "Stainless Steel A2",
"price_eur": 0.12,
"in_stock": true
}
}
],
"metadata": {
"search_mode": "fulltext",
"query_type": "keyword",
"processing_time_ms": 42,
"cache_hit": false
},
"pagination": {
"offset": 0,
"limit": 5,
"has_more": false
}
}4. Connect to Claude
Add QANATIX as an MCP tool in Claude Code:
claude mcp add --transport http qanatix https://api.qanatix.com/mcp/Or in Claude Desktop, add to your config:
{
"mcpServers": {
"qanatix": {
"url": "https://api.qanatix.com/mcp/",
"headers": {
"Authorization": "Bearer sk_live_abc123..."
}
}
}
}Then just ask Claude:
Find stainless M8 bolts in stock
Claude calls qanatix_search() automatically and returns results from your data.
Next steps
- Python SDK — typed client for ingestion, search, and management
- Authentication — scopes, rotation, revocation
- Data Import — all 10+ data sources
- Search — full-text search, filters, response formats
- Integrations — Claude, GPT, LangChain, Cursor