Перед отправкой запроса ProxyAPI проверяет, хватит ли баланса на его выполнение. Для этого стоимость сначала рассчитывается предварительно. После ответа модели расчёт повторяется по фактическому потреблению — с баланса списывается уже точная сумма.

Предварительная оценка нужна только для проверки баланса. Она не резервируется и не списывается.

Оценка состоит из двух частей:

  1. Объём входа — сообщения, инструкции, история диалога, изображения и остальные данные запроса.
  2. Максимально возможный объём ответа.

До отправки запроса нельзя знать, насколько длинным получится ответ. Если его длина не ограничена в запросе, в расчёт входит максимальное количество токенов, которое может вернуть выбранная модель.

Оценка входа тоже делается с запасом. Её задача — не предсказать итоговую сумму до копейки, а не допустить отрицательного баланса.

Допустим, запрос отправляется на /v1/chat/completions:

{
    "model": "openai/gpt-5-mini",
    "messages": [
        {
            "role": "user",
            "content": "Расскажи коротко, как устроена Солнечная система."
        }
    ]
}

В запросе нет max_completion_tokens. Модель openai/gpt-5-mini может вернуть до 128 000 токенов, поэтому предварительная стоимость включает оценку входа и стоимость 128 000 выходных токенов. Даже если модель ответит одним абзацем, до получения ответа это неизвестно.

Предположим, оценка входа составила 200 токенов, цена — 100 ₽ за миллион входных и 500 ₽ за миллион выходных токенов. Проверка баланса будет такой:

  • вход: 200 × 100 ₽ ÷ 1 000 000 = 0,02 ₽
  • возможный выход: 128 000 × 500 ₽ ÷ 1 000 000 = 64 ₽
  • для запуска запроса нужно не меньше 64,02 ₽

Если баланс меньше предварительной оценки, запрос не отправляется конечному сервису. Ответ приходит с кодом 402:

{
    "detail": "Insufficient balance to run this request."
}

Укажите максимальную длину ответа. Для того же запроса можно разрешить модели не больше 300 токенов:

{
    "model": "openai/gpt-5-mini",
    "max_completion_tokens": 300,
    "messages": [
        {
            "role": "user",
            "content": "Расскажи коротко, как устроена Солнечная система."
        }
    ]
}

Теперь вместо максимальных 128 000 токенов в расчёт войдут 300:

  • вход: 200 × 100 ₽ ÷ 1 000 000 = 0,02 ₽
  • возможный выход: 300 × 500 ₽ ÷ 1 000 000 = 0,15 ₽
  • для запуска запроса нужно не меньше 0,17 ₽

Ограничение влияет не только на проверку баланса. Если модель исчерпает его до завершения ответа, генерация остановится, а finish_reason будет равен length.

В остальных форматах ограничение задаётся своим полем:

{
    "model": "anthropic/claude-haiku-4-5",
    "max_tokens": 300,
    "messages": [
        {
            "role": "user",
            "content": "Расскажи коротко, как устроена Солнечная система."
        }
    ]
}
{
    "generationConfig": {
        "maxOutputTokens": 300
    },
    "contents": [
        {
            "parts": [
                {
                    "text": "Расскажи коротко, как устроена Солнечная система."
                }
            ]
        }
    ]
}

После успешного ответа конечный сервис сообщает фактическое потребление. Оно приходит в usage или в аналогичном поле родного формата модели. По этим данным стоимость считается заново.

Если предварительная оценка была 0,17 ₽, а модель израсходовала 120 выходных токенов вместо разрешённых 300, оплачиваются именно 120. Неиспользованный запас не списывается и не блокируется на балансе.

Отдельно учитываются те виды потребления, которые действительно были в ответе: токены размышлений, чтение и запись кэша, поиск в интернете, изображения, секунды аудио и другие единицы. Цены для конкретной модели указаны в каталоге моделей.

Полный пример расчёта фактической стоимости входных и выходных токенов приведён в статье про баланс.

Если запрос отклонён ProxyAPI до отправки или конечный сервис вернул ошибку, списания за модель нет. Если успешный ответ получен и в нём есть данные о потреблении, списывается фактическая стоимость.

Коды ошибок и их причины разобраны в статье про ошибки.

  • Баланс — пополнение, списание по факту и контроль расходов.
  • Модели — как устроены идентификаторы моделей.

Частые вопросы

Почему запрос вернул 402, хотя ожидаемый ответ стоит дешевле?

До выполнения неизвестно, сколько токенов займёт ответ, поэтому баланс проверяется по максимальной длине ответа выбранной модели. Укажите ограничение на ответ, чтобы уменьшить предварительную оценку.

Предварительная стоимость списывается или блокируется?

Нет. Она используется только для проверки баланса. После ответа списывается фактическая стоимость, а неиспользованный запас никак не затрагивает баланс.

Почему предварительная оценка входа больше фактического числа токенов?

Оценка намеренно делается с запасом, чтобы баланс не стал отрицательным. Точное потребление становится известно только из ответа конечного сервиса.

Списываются ли деньги, если запрос завершился ошибкой?

За запрос, отклонённый ProxyAPI или конечным сервисом, списания за модель нет. Списание происходит по данным о фактическом потреблении в успешном ответе.

Последняя редакция: 3 сентября 2026 г.