Route preview
POST https://api.alltokens.ru/api/v1/route/preview
Content-Type: application/json
Превью маршрутизации без вызова модели: топ-N кандидатов с учётом цели и ограничений по каталогу моделей.
Заголовки
| Заголовок | Обязательный |
|---|
| Authorization: Bearer <API_KEY> | Да |
| Content-Type: application/json | Да |
Тело запроса
Минимально — пустой объект {}. Параметры маршрутизации в metadata или extra_body:
| Поле | Тип | Описание |
|---|
| model | string | Опционально. Контекст модели |
| metadata / extra_body | object | См. ниже |
Внутри metadata или extra_body
| Поле | Тип | Описание |
|---|
| objective | string | cheapest, fastest, balanced |
| max_cost_per_1k_tokens | number | Макс. стоимость за 1k токенов (USD) |
| allowed_models | string[] | Разрешённые модели/паттерны |
| blocked_models | string[] | Исключаемые модели/паттерны |
| top_n | number | Число кандидатов (1..50, по умолчанию 10) |
Пример (curl)
curl -X POST "https://api.alltokens.ru/api/v1/route/preview" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"metadata": {
"objective": "cheapest",
"max_cost_per_1k_tokens": 0.01,
"top_n": 5
}
}'
Ответ (200)
Корневой объект:
| Поле | Тип | Описание |
|---|
| candidates | array | Массив кандидатов (см. ниже) |
| winnerReason | string | Причина выбора лучшего: cheapest_under_budget, fastest_available, balanced_best_match, unable_to_fetch_models, invalid_models_response, no_models_data |
| estimatedCostPer1KInput | number | null | Оценка стоимости за 1k токенов входа (USD) |
| estimatedCostPer1KOutput | number | null | Оценка стоимости за 1k токенов выхода (USD) |
Элемент candidates[]
| Поле | Тип | Описание |
|---|
| modelId | string | Идентификатор модели |
| name | string | Название модели |
| promptPricePerMillion | number | null | Цена за 1M токенов промпта (USD) |
| completionPricePerMillion | number | null | Цена за 1M токенов ответа (USD) |
| estimatedCostPer1KTokens | number | null | Оценка за 1k токенов (USD) |
| latencyEstimateP50Ms | number | null | Оценка латентности P50 (мс), пока не заполняется |
| latencyEstimateP95Ms | number | null | Оценка латентности P95 (мс), пока не заполняется |
| healthScore | number | null | Оценка здоровья, пока не заполняется |
Коды ответов
| Код | Описание |
|---|
| 200 | Успех |
| 400 | Неверное тело (не JSON и т.д.) |
| 401 | Не авторизован |
| 500 | Ошибка при построении превью |