Статус и обнаружение
GET /status, /health, /capabilities, /openapi.json и /metrics — публичная поверхность для мониторинга и для клиентов, которым нужно знать возможности узла.
GET /api/v1/status
GET /api/v1/health
GET /api/v1/capabilities
GET /api/v1/openapi.json
GET /api/v1/metricsНи один из этих эндпоинтов не требует API-ключа, кроме /metrics, которому нужен отдельный операционный токен.
Статус
Интерактивная документация Scalar доступна на /api/docs вашего API-сервера.
Переключатель выбирает Search API v1 (/api/v1/openapi.json, контракт SDK) или
Console & Auth API (/api/spec.json, авторизация сессией). Открытие документации
не даёт доступа к защищённым операциям.
Публичный документ состояния: доступность движка, Redis и базы в одном вызове, его безопасно показывать на status-странице.
curl -sS "$AAC_API/status"{
"ok": true,
"engine": { "ok": true },
"redis": { "enabled": true, "ok": true, "status": "ready" },
"database": { "ok": true },
"latency_ms": 14,
"time": "2026-10-23T10:41:02.000Z",
"request_id": "req_2c4e6a8b0d2f4a6c8e0b2d4f"
}ok — это логическое И проверок движка и базы; Redis показывается, но не влияет на итог, потому что без него платформа переходит на локальные лимиты и кеш. redis.enabled: false означает, что REDIS_URL не задан. Ответы идут с cache-control: no-store, а проверка движка ограничена 1,5 секунды — зависший узел быстро вернёт engine.ok: false вместо таймаута монитора.
Health
Короткая проверка движка, удобная для балансировщика.
curl -sS "$AAC_API/health"{
"ok": true,
"request_id": "req_5e7a9c1b3d5f7a9c1e3b5d7a"
}Если движок не настроен или недоступен, статус 503 и тело говорит, что именно:
{
"ok": false,
"error": "unavailable"
}error равен not_configured, если поиск не настроен, и unavailable, если сервис недоступен.
Возможности
Этот эндпоинт сообщает о поддержке функций API на текущем развёртывании. Модели и настройки индекса могут требовать дополнительной конфигурации.
curl -sS "$AAC_API/capabilities"{
"features": {
"autoEmbedding": true,
"conversation": true,
"nlSearch": true,
"analytics": true,
"voiceQuery": true,
"imageSearch": true,
"joins": true,
"unionSearch": true,
"scopedKeys": true
},
"endpoints": {
"assistant": "/api/v1/indexes/{index}/assistant",
"assistant_stream": "/api/v1/indexes/{index}/assistant/stream",
"nl_search": "/api/v1/indexes/{index}/nl-search",
"voice": "/api/v1/indexes/{index}/voice",
"scoped_key": "/api/v1/indexes/{index}/scoped-key",
"suggest": "/api/v1/indexes/{index}/suggest"
},
"infrastructure": { "cache": { "enabled": true, "ok": true, "status": "ready" } }
}Доступные функции перечислены в GET /api/v1/capabilities. Поддерживаемой функции могут дополнительно требоваться модель, поля индекса или настройки развёртывания. Версия движка и инфраструктурные сведения относятся к администрированию платформы.
Документ OpenAPI
curl -sS "$AAC_API/openapi.json" -o aacsearch-openapi.jsonИз этого документа генерируются SDK; pnpm sdk:generate пересобирает оба клиента. Он же пригодится для типизированных клиентов на других языках, коллекций Postman и настройки шлюзов.
Метрики
Операционные счётчики для скрейпинга. Эндпоинт отключён, пока на сервере не задан METRICS_TOKEN, и никогда не раскрывает содержимое тенантов — только цифры.
curl -sS "$AAC_API/metrics" -H "x-metrics-token: $METRICS_TOKEN"{
"generated_at": "2026-10-23T10:41:02.000Z",
"gauges": {
"indexes": 42,
"documents": 184203,
"connectors": 17,
"dead_letters_open": 3,
"wallet_liability_cents": 128400
},
"counters_today": { "searches": 91204, "events": 1877 },
"latency": { "avg_search_ms": 18.6 }
}На неверный или отсутствующий токен возвращается 404 и { "error": { "code": "NOT_FOUND", "message": "Not found" } } — эндпоинт не сообщает о своём существовании.