QANATIX

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", "ingest", "entities"]}'

Response:

{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "name": "my-first-key",
  "key": "sk_live_abc123...",
  "scopes": ["search", "ingest", "entities"],
  "message": "Store this key securely — it cannot be retrieved again."
}

Save the key value. You'll use it in all subsequent requests.

2. Register a schema

Define a schema for your data. This tells QANATIX what fields to expect and validate.

curl -X POST https://api.qanatix.com/api/v1/schemas \
  -H "Authorization: Bearer sk_live_abc123..." \
  -H "Content-Type: application/json" \
  -d '{
    "vertical": "parts_catalog",
    "entity_type": "fastener",
    "json_schema": {
      "type": "object",
      "properties": {
        "part_number": { "type": "string" },
        "material": { "type": "string" },
        "price_eur": { "type": "number" },
        "in_stock": { "type": "boolean" }
      },
      "required": ["part_number"]
    }
  }'

3. Ingest data

Push a batch of records:

curl -X POST https://api.qanatix.com/api/v1/ingest/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
    }
  ]'

Or upload a CSV file:

curl -X POST https://api.qanatix.com/api/v1/ingest/parts_catalog/fastener/upload \
  -H "Authorization: Bearer sk_live_abc123..." \
  -F "file=@parts.csv"

QANATIX validates, normalizes, generates embeddings, and indexes automatically.

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}'

Response:

{
  "results": [
    {
      "entity_id": "...",
      "name": "Stainless Steel Bolt M8x40 A2",
      "score": 0.87,
      "vertical": "parts_catalog",
      "entity_type": "fastener",
      "vertical_data": {
        "part_number": "SS-M8-40-A2",
        "material": "Stainless Steel A2",
        "price_eur": 0.12,
        "in_stock": true
      }
    }
  ],
  "metadata": {
    "search_mode": "hybrid",
    "query_type": "keyword",
    "processing_time_ms": 42,
    "cache_hit": false
  },
  "pagination": {
    "offset": 0,
    "limit": 5,
    "has_more": false
  }
}

5. 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

On this page