ChatGPT API: ключ, id моделей и первый вызов из России

11 минут чтенияобновлено

Ключ к API OpenAI выпускается на platform.openai.com, а не в настройках ChatGPT, и баланс у него свой. Из России напрямую он не заработает: страны нет в списке поддерживаемых, а российская карта не оплатит кредиты. Через OpenAI-совместимый шлюз в коде меняются две строки, а ломается перенос в других местах: на id моделей, на temperature у рассуждающих моделей и на инструментах у GPT-6.

Ключ выпускается в платформе, у ChatGPT свой счёт

ChatGPT и API — два продукта OpenAI с раздельными счетами. Подписка оплачивает приложение: сайт, мобильный клиент, лимиты сообщений. API оплачивается кредитами на балансе организации в платформе, и ключ создаётся там же, кнопкой Create an API Key (quickstart OpenAI). Оплаченный Plus не даёт ни ключа, ни кредитов.

С 28 октября 2026 года у дорогих тарифов появилось исключение. Подписчики Pro получают от $100 до $500 API-кредитов в месяц в зависимости от тарифа, Business — $20 или $100 за оплаченное место, но не больше $500 на рабочее пространство. Неистраченные кредиты сгорают в конце расчётного периода, а Plus, Go и Free в программу не входят (условия OpenAI). Чем подписка отличается от ключа, кроме счёта, разобрано в статье про подписку и API.

Схема из двух независимых блоков, показывающая разделение балансов чата и API.
Подписка на ChatGPT Plus не даёт доступа к API — это два разных продукта с раздельными счетами.

Почему из России прямой ключ не заработает

Первое препятствие — география. России и Беларуси нет в списке стран, где OpenAI предоставляет API, Казахстан в нём есть. Запрос из неподдерживаемой страны получает 403 с текстом «Country, region, or territory not supported» (коды ошибок OpenAI). Ошибка — меньшая из проблем. В том же списке OpenAI предупреждает, что доступ из других стран «may result in your account being blocked or suspended»: аккаунт могут заблокировать вместе с оплаченными кредитами. VPN меняет адрес запроса, но не это правило. Почему смена IP не решает вопрос с API, мы разбирали отдельно.

Второе препятствие — оплата. API OpenAI работает по предоплате: сначала кредиты, потом запросы. Первый платный тир Build открывается после покупки кредитов на $5 (тиры OpenAI). Карты Visa, выпущенные в России, с марта 2022 года не работают за её пределами.

Покупной аккаунт решает только оплату. Географию он не меняет, а сам аккаунт остаётся у продавца, и ключ могут отозвать вместе с балансом.

Остаётся OpenAI-совместимый шлюз. Он принимает запросы в формате OpenAI, сам обращается к модели и списывает деньги со своего баланса. В altrouter ключ выглядит как ar-…, а баланс пополняется картой РФ, СБП или криптой. Ограничения у этого пути тоже есть, о них — в разделе про перенос кода.

Какой id писать в model

Id — строка, которую вы передаёте в поле model. Ошибка в ней не всегда заканчивается ошибкой API: иногда запрос молча уходит к другой модели. Линейка на 29.10.2026 по странице моделей и changelog OpenAI:

Модельid у OpenAIid в altrouterВышлаДля чего, по описанию OpenAI
GPT-6 Astragpt-6-astragpt-6-astra03.09.2026самые сложные задачи и код
GPT-6.1 Solgpt-6.1-solgpt-6.1-sol29.09.2026почти уровень Astra за меньшие деньги
GPT-6 Solgpt-6-solgpt-6-sol22.09.2026предшественница 6.1 Sol
GPT-6.1 Terragpt-6.1-terraнет в каталоге26.10.2026тексты, работа с картинками и компьютером
GPT-6 Lunagpt-6-lunagpt-6-luna22.09.2026массовые однотипные задачи
GPT-5.6 Solgpt-5.6-sol, алиас gpt-5.6gpt-5.6-pro09.07.2026прошлое поколение
GPT-5.6 Terragpt-5.6-terragpt-5.609.07.2026прошлое поколение
GPT-5.6 Lunagpt-5.6-lunagpt-5.6-mini09.07.2026прошлое поколение

У Astra, 6.1 Sol, 6.1 Terra и Luna контекст 1,05 млн токенов, а ответ может занимать до 128 тысяч. Контекст — всё, что модель видит за один запрос: инструкция, вопрос и история диалога.

🔴 У OpenAI gpt-5.6 — алиас модели Sol, самой дорогой в поколении: $4 за миллион входных токенов и $20 за миллион выходных против $2 и $12 у Terra (прайс OpenAI на 29.10.2026). В каталоге altrouter под gpt-5.6 лежит Terra, а Sol — под gpt-5.6-pro. Код, перенесённый без правки id, сменит модель без единой ошибки в логах. Перед переносом сверьте id со списком, который отдаёт шлюз:

Shell
curl https://api.altrouter.ai/v1/models \
  -H "Authorization: Bearer $ALTROUTER_API_KEY"

Новый проект начните с gpt-6-luna на массовых задачах и gpt-6.1-sol на остальных. На Astra переходите только там, где Sol проваливает ваши тесты: по прайсу OpenAI она в пять раз дороже Sol и в сто раз дороже Luna. Выход у всех моделей GPT-6 стоит впятеро дороже входа.

Столбчатая диаграмма, где столбец выходных токенов в несколько раз выше столбца входных.
Генерация ответа всегда обходится значительно дороже, чем отправка контекста модели, поэтому важно контролировать объем вывода.

Полный прайс, цены в altrouter и расчёт месячного счёта на трёх сценариях собраны в статье о стоимости ChatGPT API.

Первый вызов

Шлюз принимает запросы в формате OpenAI, поэтому подходит официальная библиотека openai (pip install openai). Меняются два поля: api_key и base_url — адрес, куда SDK отправляет запрос.

Python
import os
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["ALTROUTER_API_KEY"],
    base_url="https://api.altrouter.ai/v1",
)

resp = client.chat.completions.create(
    model="gpt-6.1-sol",
    reasoning_effort="low",
    max_completion_tokens=8000,
    messages=[
        {"role": "system", "content": "Отвечай по-русски, коротко."},
        {"role": "user", "content": "Предложи три названия для сервиса учёта командировок."},
    ],
)

choice = resp.choices[0]
usage = resp.usage
details = usage.completion_tokens_details

print(choice.message.content)
print("finish_reason:", choice.finish_reason)
print("вход:", usage.prompt_tokens, "выход:", usage.completion_tokens)
print("из них рассуждения:", details.reasoning_tokens if details else "нет данных")
print("списано, $:", getattr(usage, "cost", None))

После первого запуска проверьте три поля. finish_reason со значением length значит, что ответ упёрся в потолок max_completion_tokens. reasoning_tokens — сколько модель потратила на черновик, который в ответе не виден, но оплачивается как выход. cost — сколько списано с баланса в долларах (логи и стоимость запроса).

Если вы в поддерживаемой стране и платите OpenAI напрямую, этот код работает и без шлюза: уберите base_url и подставьте ключ OpenAI. Сама OpenAI в quickstart показывает другой интерфейс, Responses API (client.responses.create). Chat Completions остаётся поддерживаемым, но для новых проектов OpenAI советует Responses.

Блок-схема, показывающая замену адреса сервера и ключа доступа без изменения остальной логики.
Для перехода на altrouter не нужно переписывать логику приложения — достаточно поменять два параметра в инициализации клиента.

Для простого запроса с текстом этого достаточно. Код, написанный под GPT-4o или ранние GPT-5, обычно спотыкается на параметрах.

Что ломается при переносе кода

Первыми ломаются параметры случайности. GPT-5.x и GPT-6 — рассуждающие модели: прежде чем ответить, они пишут черновик. Если уровень рассуждений не none, OpenAI требует убрать из запроса temperature, top_p и top_logprobs, а в Chat Completions ещё и logprobs. В нашей справке по параметрам то же правило: GPT-5 сэмплинг-параметры не принимает. Если общий клиент подставляет temperature=0.2 во все запросы, для этих моделей уберите параметр.

Потолок длины ответа называется по-новому. Поле max_tokens в Chat Completions у OpenAI устарело в пользу max_completion_tokens, и в этот потолок входят токены рассуждений. Шлюз принимает оба имени. Если потолок мал, модель израсходует его на черновик, и ответ придёт пустым с finish_reason: length. На этапе экспериментов OpenAI советует оставлять на рассуждения и ответ не меньше 25 000 токенов.

Глубину рассуждений задаёт reasoning_effort, и от неё зависят цена и задержка. В справочнике Chat Completions у OpenAI по умолчанию стоит medium, но не каждая модель принимает каждое значение: у Astra и 6.1 Sol нет none. Задавайте уровень явно, а допустимые значения смотрите на странице модели, например GPT-6.1 Sol.

Сложнее всего с инструментами. Tool calling — это когда модель отвечает «вызови такую-то функцию с такими аргументами», а ваш код вызывает её и возвращает результат. По гайду OpenAI Astra, 6.1 Sol и 6.1 Terra принимают запросы в Chat Completions, но инструменты у них работают только в Responses API. GPT-6 Sol и Luna вызывают функции в Chat Completions только с reasoning_effort: "none". Шлюз отдаёт только Chat Completions. В каталоге у моделей GPT-6 отмечена поддержка инструментов, но если на них держится агент, перед переносом прогоните один запрос с tools на выбранной модели.

Части API OpenAI в шлюзе нет. В справочнике altrouter есть чат, генерация картинок и видео, список моделей и баланс. Responses API, Batch, эмбеддингов, распознавания и синтеза речи и Files нет, и если продукт на них опирается, эта часть остаётся у OpenAI. Заметнее всего отсутствие Batch: у OpenAI пакетные запросы стоят вдвое дешевле обычных. Assistants API OpenAI выключила 26 августа 2026 года, так что код на нём не заработает ни у кого.

Ошибки первого запроса

Что случилосьOpenAI напрямуюaltrouterЧто делать
Неверный ключ401, «Incorrect API key provided»401 authentication_errorпроверить переменную окружения и не перепутать ключи: sk-… не подходит шлюзу, ar-… не подходит OpenAI
Запрос из неподдерживаемой страны403, «Country, region, or territory not supported»не бываетсм. раздел про Россию
Кончились деньги429 credit_balance_exhausted402 insufficient_quotaпополнить баланс, повтор не поможет
Сработал потолок трат429 organization_spend_limit_exceeded или project_spend_limit_exceeded402 spend_limit_exceededподнять потолок или дождаться нового периода
Слишком частые запросы429 с Retry-After, при резком росте slow_down429 rate_limit_error, retry-after: 60ждать столько, сколько сказано в заголовке
Модель перегружена503 server_is_overloaded503повторить с паузой

Источники: коды ошибок OpenAI и коды ошибок altrouter. У OpenAI кодом 429 приходят и нехватка денег, и потолок трат, и частота запросов, поэтому разбирать нужно поле error.code, а не статус. Повторять имеет смысл только частоту и перегрузку. Если id нет в каталоге, шлюз отвечает 404 not_found_error. По умолчанию шлюз пропускает 600 запросов в минуту на ключ (лимиты). Как повторять запрос, не продлевая блокировку, разобрано в статье про ошибку 429.

Ключ в продакшене

Ключ живёт только на сервере, в переменной окружения или менеджере секретов. Во фронтенде и мобильном приложении его вытащит любой, кто откроет код страницы (аутентификация).

Выдайте каждому сервису отдельный ключ с потолком трат. В altrouter потолок ставится на ключ за день, неделю, месяц или за всё время. Когда он исчерпан, запросы этого ключа получают 402, а остальные продолжают работать. Это мягкий предохранитель: проверка идёт перед запросом, а счётчик растёт после списания, поэтому пачка параллельных запросов может немного его перебрать (лимиты). У OpenAI с 22 июля 2026 года есть похожие жёсткие лимиты на организацию и проект, и OpenAI тоже предупреждает, что фактическая сумма может слегка превысить порог.

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

FAQ

Можно ли пользоваться API OpenAI бесплатно?

В таблице тиров OpenAI есть бесплатный уровень с потолком $100 в месяц, но он доступен только пользователям из поддерживаемых стран. С 28.10.2026 API-кредиты получают подписчики Pro и Business. В altrouter при регистрации один раз начисляется $1 за подтверждённый Telegram. Запрос к gpt-6.1-sol на 1000 токенов входа и 500 выхода стоит около $0,006 без учёта рассуждений, так что доллара хватит, чтобы проверить id, параметры и код.

Подробнее: GPT-6.1 Sol: цены и параметры.

Можно ли подключить подписку Plus вместо ключа?

Только в чужих приложениях. Через Sign in with ChatGPT пользователь Plus или Pro разрешает приложению тратить лимиты своего плана. Пока это доступно проектам с открытым кодом, личным проектам, которые работают локально, и отдельным частным приложениям. Платный сервис на своём сервере так не построить: ему нужен ключ и баланс.

Что выбрать: Responses API или Chat Completions?

Если работаете с OpenAI напрямую и начинаете с нуля, OpenAI советует Responses. В нём есть встроенные инструменты вроде веб-поиска и интерпретатора кода, состояние диалога можно хранить на стороне OpenAI, и только он даёт GPT-6 Astra вызывать функции. Chat Completions поддерживается дальше, и его понимают почти все библиотеки и шлюзы, включая altrouter. Если вам нужны встроенные инструменты OpenAI, это довод за прямой доступ.

Подробнее: GPT-6 Astra: цены и параметры.

Вендоры