Информация о запросе

Стоимость, токены и время одного запроса по его ID. Метод AITUNNEL, не OpenAI.

Эндпоинт
Авторизация
Тот же Bearer, что для чата

ID приходит в поле id ответа модели (chat-…, resp-…, msg-…, emb-…, img-… и другие), он же показан в истории расходов в кабинете.

Как вызвать

curl https://api.aitunnel.ru/v1/aitunnel/requests/chat-034pYx9KaOzvCxWdvYoAvp \
  -H "Authorization: Bearer sk-aitunnel-xxx"

Ответ

JSON
{
  "id": "chat-034pYx9KaOzvCxWdvYoAvp",
  "object": "request",
  "created_at": "2026-10-31T16:43:24.774Z",
  "endpoint": "/v1/chat/completions",
  "model": "deepseek-v4.1-flash-1017",
  "router": null,
  "service_tier": null,
  "cost_rub": 0.03,
  "tool_cost_rub": null,
  "cache_savings_rub": 0.26,
  "discount_savings_rub": null,
  "usage": {
    "prompt_tokens": 9201,
    "completion_tokens": 49,
    "cached_tokens": 8704,
    "reasoning_tokens": 49
  },
  "duration_ms": 761,
  "streamed": true,
  "ttft_ms": 318,
  "finish_reason": "stop",
  "user": "customer-42",
  "web_search_engine": null,
  "num_citations": null,
  "num_fetches": null
}
ПолеСмысл
idID запроса, тот же, что в ответе модели
objectВсегда request
created_atКогда запрос пришёл, ISO 8601 (UTC)
endpointМетод API, например /v1/chat/completions или /v1/images/edits
modelМодель, которая обработала запрос
routerКто выбрал модель: auto — алиас auto, имя — пресет, null — модель указана в запросе явно
service_tierТариф провайдера, если был задан, иначе null
cost_rubСколько списали за запрос, ₽. То же число, что usage.cost_rub в ответе модели
tool_cost_rubЧасть стоимости за серверные инструменты, например веб-поиск, ₽, или null
cache_savings_rubСколько сэкономил кэш промпта, ₽, или null
discount_savings_rubСколько сэкономила персональная скидка, ₽, или null
usageТокены и единицы, которые были в запросе. Поля без значения не возвращаются
duration_msСколько запрос шёл, мс, или null
streamedtrue, если вы просили потоковый ответ (stream: true). null у методов без стрима и у запросов, записанных до появления поля
ttft_msВремя до первого токена потока, мс: от старта запроса до первого текста, рассуждения или вызова инструмента. Только для потока, иначе null
finish_reasonЧем закончился ответ, как в Chat Completions: stop, length (упёрся в лимит токенов), tool_calls, content_filter, error. Для Responses и Messages приводится к тем же словам. null, если неизвестно
userВаш идентификатор конечного пользователя из запроса: user или metadata.user_id у Messages, до 128 символов. Пишется для чата, Responses, Messages и эмбеддингов. Иначе null
web_search_engineПоисковый движок, который вы указали в инструменте веб-поиска (parameters.engine), если поиск выполнялся. null — поиска не было или движок не указан
num_citationsСколько разных источников процитировал ответ после поиска, или null
num_fetchesСколько страниц загрузил инструмент web fetch, или null

Поля usage: prompt_tokens, completion_tokens, cached_tokens, cache_write_tokens, reasoning_tokens, audio_input_tokens, audio_output_tokens, video_input_tokens, image_output_tokens, web_search_requests.

Провайдер и его собственный ID запроса не возвращаются.

Ошибки

КодКогда
400ID не похож на наш: нужен вид chat- + 22 символа, как в ответе API. ID от самого провайдера (gen-…, chatcmpl-…) не подходит
401Нет ключа или он неверный
404Запроса нет в журнале этого ключа
404
{
  "error": {
    "code": 404,
    "message": "Запрос не найден. Он мог быть сделан другим ключом или уже удалён из журнала."
  }
}

Когда запрос появляется и пропадает

  • Запись создаётся, когда запрос рассчитан. Если сразу после ответа получили 404, повторите через пару секунд.
  • Журнал хранится около трёх месяцев. Потом подробности запроса удаляются, а расход остаётся в расходе за период и кабинете.