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.