Getting Started
What is Headband?#
Headband is the retrieval control plane — the layer between your data, the search engines that index it, and the AI agents that consume it. One API across Meilisearch, Typesense, and Elasticsearch. Pick your engine per index, not per project. Bring your own infra. Headband stores routing metadata and analytics; documents are indexed into the engine selected for each index.
Every project gets automatic API keys, built-in CORS support for browser-side search, and a dashboard for managing indexes, documents, and settings. Run your catalog on Meilisearch, your logs on Elasticsearch, and your autocomplete on Typesense — all under the same project, same API key.
Per-index engines
Mix Meilisearch, Typesense, and Elasticsearch in one project.
Bring your own engine
Point any index at your own cluster; Headband stores routing metadata, not your source corpus.
Built for agents
llms.txt, RAG endpoints, and authenticated HTTP MCP.
Quick Start#
Get up and running in six steps. Replace the example URL with your Headband instance.
Data boundary
Headband stores routing metadata, encrypted engine configs, hashed API keys, usage, and analytics. Documents are indexed into the selected engine. BYOE keeps the search index in your engine; Platform Default uses the configured Headband-managed platform engine. Query analytics may include query text, filters, hit counts, latency, variants, and experiment metadata.
Create a project in the dashboard
You'll receive a project-scoped admin key (hb_adm_) and a search key (hb_src_) automatically.
Create an index
curl -X POST https://your-instance.com/v1/indexes \
-H "Authorization: Bearer hb_adm_YOUR_ADMIN_KEY" \
-H "Content-Type: application/json" \
-d '{"uid": "products", "primaryKey": "id", "engine": "meilisearch"}'Configure searchable, filterable, and sortable fields
curl -X PATCH https://your-instance.com/v1/indexes/products/settings \
-H "Authorization: Bearer hb_adm_YOUR_ADMIN_KEY" \
-H "Content-Type: application/json" \
-d '{
"searchableAttributes": ["title", "description"],
"filterableAttributes": ["category", "price"],
"sortableAttributes": ["price", "createdAt"]
}'Push your documents
curl -X POST https://your-instance.com/v1/documents?index=products&primaryKey=id \
-H "Authorization: Bearer hb_adm_YOUR_ADMIN_KEY" \
-H "Content-Type: application/json" \
-d '[
{"id": 1, "title": "Widget", "price": 9.99},
{"id": 2, "title": "Gadget", "price": 24.99}
]'Poll returned task UIDs until async writes succeed
curl https://your-instance.com/v1/tasks/{taskUid} \
-H "Authorization: Bearer hb_adm_YOUR_ADMIN_KEY"Search
curl -X POST https://your-instance.com/v1/search \
-H "Authorization: Bearer hb_src_YOUR_SEARCH_KEY" \
-H "Content-Type: application/json" \
-d '{"index": "products", "q": "widget", "filter": "price > 5", "sort": ["price:asc"]}'