Developers

One API for search, recommendations and answers.

The OpenAPI contract is generated from the live router, so the docs never describe an endpoint that doesn't exist. Use the REST API, the TypeScript or Python SDK, or the embeddable widget.

Operations
176
Endpoints
147
OpenAPI
3.1.0
curl -X POST https://api.example.com/api/v1/indexes/products/search \
  -H "Authorization: Bearer $AAC_KEY" \
  -H "Content-Type: application/json" \
  -d '{"q": "кросовки найк",
       "per_page": 20,
       "facet_by": "brand,size"}'

OpenAPI from the router

The contract is generated from the code that serves requests and checked in CI, so docs and SDKs can't drift from the API.

TypeScript and Python SDKs

Typed clients generated from the contract, with retries on transient errors.

Scoped keys

Keys carry scopes, can expire and be rotated with a grace period; browsers get 15-minute session tokens instead of keys.

Signed webhooks

Events for imports, connector runs and experiments, signed with HMAC and retried on a 1 min → 12 h ladder.

Stable error codes

Every error has a public code, a message and a request id; internal details never leak into responses.

Predictable limits

Per-key rate limits with standard headers, and plan quotas you can read through the API.

Next: connect your data or read how other teams measure search.