Быстрый старт
Создайте индекс, выпустите ключ, загрузите документы и выполните первый поиск — целиком на curl.
Начните в консоли
После подтверждения email выберите Поиск на сайте или Поиск через API. Задайте название поиска — первое рабочее пространство создастся вместе с ним. В мастере три шага: Данные → Проверка → Подключение. Для сайта доступны предпросмотр файла, выбор полей, CMS и выгрузки. Разработчик получает серверный ключ для конкретного поиска и заполненные примеры запросов. Перед подключением выполните успешный поиск в предпросмотре. Созданный ключ или скопированный код ещё не означают установку: выполните запрос с сайта или приложения, затем завершите настройку. Прогресс сохраняется; схема и ранжирование доступны отдельно.
Для примера нужны учётная запись консоли с организацией и доступ к API AACSearch.
1. Создайте индекс
Индекс создаётся в консоли: Search → Indexes → New index. Укажите название, при необходимости слаг (если не указать, он будет собран из названия, а при совпадении получит суффикс -2, -3) и схему, если стандартных полей недостаточно.
Минимальному индексу для сайта документации дополнительные поля не нужны. Для каталога товаров обычно объявляют то, по чему планируется фильтровать:
{
"name": "Documentation",
"slug": "documentation",
"fields": [
{ "name": "category", "type": "string", "facet": true },
{ "name": "published_at", "type": "int64", "sort": true },
{ "name": "views", "type": "int32", "optional": true }
]
}Консоль проверяет эту схему и создаёт управляемый индекс. В API используйте его логический slug:
{
"id": "idx_01HZX8",
"slug": "documentation",
"name": "Documentation"
}Имена полей должны соответствовать ^[a-zA-Z_][a-zA-Z0-9_]{0,63}$ и не пересекаться с зарезервированными (id, external_id, title, content, url, source_type, organization_id, tags, indexed_at, metadata).
2. Выпустите API-ключ
Search → API keys → New key. Выберите нужные права. Набор по умолчанию — search:read, documents:read, documents:write — подходит для задачи загрузки. Добавьте settings:write для переиндексации и ограниченных ключей, analytics:write для учёта кликов.
Ключ возвращается ровно один раз:
{
"id": "key_01HZX9",
"name": "Ingest",
"prefix": "aac_live_9f3c2a1b…",
"scopes": ["search:read", "documents:read", "documents:write"],
"createdAt": "2026-10-23T09:12:44.000Z",
"key": "aac_live_9f3c2a1bD4eF6gH8iJ0kL2mN4oP6qR8s"
}В продакшн-организациях ключ имеет вид aac_live_…, вне продакшена генерируется aac_test_…. Хранится только SHA-256-хеш: если ключ потерян, его отзывают и выпускают новый.
Сохраните его в переменную для команд ниже:
export AAC_KEY="aac_live_9f3c2a1bD4eF6gH8iJ0kL2mN4oP6qR8s"
export AAC_API="https://search.example.com/api/v1"3. Загрузите документы
Обязательны только external_id и content, остальное опционально. Поля вашей схемы передаются как обычные ключи верхнего уровня.
curl -sS -X POST "$AAC_API/indexes/documentation/documents" \
-H "Authorization: Bearer $AAC_KEY" \
-H "Content-Type: application/json" \
-d '{
"documents": [
{
"external_id": "pricing",
"title": "Тарифы",
"content": "На бесплатном тарифе доступно 10 000 поисков в месяц. Pro стоит 29 USD в месяц и включает 500 000 поисков.",
"url": "https://example.com/pricing",
"tags": ["billing"]
},
{
"external_id": "limits",
"title": "Лимиты запросов",
"content": "Один API-ключ может делать 600 запросов в минуту в рамках скользящего окна.",
"url": "https://example.com/limits",
"tags": ["api"]
}
],
"action": "upsert"
}'{
"index": "documentation",
"indexed": 2,
"failed": [],
"usage": {
"plan": "pro",
"planName": "Pro",
"period": "2026-10",
"resetsAt": "2026-11-01T00:00:00.000Z",
"searches": { "used": 0, "limit": 500000 },
"documents": { "used": 2, "limit": 50000 },
"aiTokens": { "used": 0, "limit": 100000 },
"indexes": { "used": 1, "limit": 10 },
"apiKeys": { "used": 1, "limit": 10 },
"connectors": { "used": 0, "limit": 10 },
"wallet": { "balanceCents": 0, "currency": "USD" }
},
"request_id": "req_5b1d9c0a7e2f4a6b8c0d1e2f"
}Пакет не является «всё или ничего»: отклонённые документы попадают в failed в виде { "external_id", "error" }, остальные индексируются. В одном запросе — до 500 документов.
4. Выполните первый поиск
curl -sS -G "$AAC_API/indexes/documentation/search" \
-H "Authorization: Bearer $AAC_KEY" \
--data-urlencode "q=тарифы" \
--data-urlencode "query_by=title,content" \
--data-urlencode "per_page=5"{
"index": "documentation",
"query": "тарифы",
"language": "ru",
"found": 1,
"out_of": 2,
"page": 1,
"per_page": 5,
"took_ms": 12,
"engine_ms": 3,
"hits": [
{
"id": "pricing",
"score": 1754,
"document": {
"id": "pricing",
"external_id": "pricing",
"title": "Тарифы",
"content": "На бесплатном тарифе доступно 10 000 поисков в месяц…",
"url": "https://example.com/pricing",
"source_type": "api",
"organization_id": "org_01h9",
"tags": ["billing"],
"indexed_at": 1761214364
},
"highlights": [
{ "field": "title", "snippet": "<mark>Тарифы</mark>", "matchedTokens": ["тарифы"] }
]
}
],
"facets": [],
"request_id": "req_9a7c3d1e5f0b2a4c6d8e0f1a"
}В заголовках ответа приходят цифры, нужные для back-off и мониторинга:
x-aac-quota-limit: 500000
x-aac-quota-remaining: 499999
x-aac-index: documentation
x-aac-profile: default
x-aac-charged-cents: 0
x-ratelimit-limit: 600
x-ratelimit-remaining: 599
x-ratelimit-reset: 1761214424
x-request-id: req_9a7c3d1e5f0b2a4c6d8e0f1aПоиск без совпадений — это успешный ответ с found: 0; он попадает в журнал как запрос без результатов и виден в /analytics/alerts.
5. Подключите автодополнение
curl -sS -G "$AAC_API/indexes/documentation/suggest" \
-H "Authorization: Bearer $AAC_KEY" \
--data-urlencode "q=тар" \
--data-urlencode "limit=5"{
"index": "documentation",
"query": "тар",
"suggestions": [
{
"text": "Тарифы",
"source": "document",
"documentId": "pricing",
"url": "https://example.com/pricing",
"score": 3,
"highlight": "<mark>Тар</mark>ифы"
}
],
"did_you_mean": null,
"sources": { "documents": 1, "queries": 0 },
"cache": "miss",
"request_id": "req_1c2d3e4f5a6b7c8d9e0f1a2b"
}Запросы подсказок ограничены по частоте, но не расходуют квоту: автодополнение, которое списывает деньги за каждое нажатие клавиши, бесполезно.
Куда дальше
- Поиск — все параметры и поля ответа.
- Документы — частичные обновления, TTL, массовое удаление, экспорт.
- Встраиваемый виджет — тот же индекс в теге
<script>. - Ошибки и лимиты — что означают коды 4xx.