Ключ к 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.

Почему из России прямой ключ не заработает
Первое препятствие — география. России и Беларуси нет в списке стран, где 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 у OpenAI | id в altrouter | Вышла | Для чего, по описанию OpenAI |
|---|---|---|---|---|
| GPT-6 Astra | gpt-6-astra | gpt-6-astra | 03.09.2026 | самые сложные задачи и код |
| GPT-6.1 Sol | gpt-6.1-sol | gpt-6.1-sol | 29.09.2026 | почти уровень Astra за меньшие деньги |
| GPT-6 Sol | gpt-6-sol | gpt-6-sol | 22.09.2026 | предшественница 6.1 Sol |
| GPT-6.1 Terra | gpt-6.1-terra | нет в каталоге | 26.10.2026 | тексты, работа с картинками и компьютером |
| GPT-6 Luna | gpt-6-luna | gpt-6-luna | 22.09.2026 | массовые однотипные задачи |
| GPT-5.6 Sol | gpt-5.6-sol, алиас gpt-5.6 | gpt-5.6-pro | 09.07.2026 | прошлое поколение |
| GPT-5.6 Terra | gpt-5.6-terra | gpt-5.6 | 09.07.2026 | прошлое поколение |
| GPT-5.6 Luna | gpt-5.6-luna | gpt-5.6-mini | 09.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 со списком, который отдаёт шлюз:
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 отправляет запрос.
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.

Для простого запроса с текстом этого достаточно. Код, написанный под 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_exhausted | 402 insufficient_quota | пополнить баланс, повтор не поможет |
| Сработал потолок трат | 429 organization_spend_limit_exceeded или project_spend_limit_exceeded | 402 spend_limit_exceeded | поднять потолок или дождаться нового периода |
| Слишком частые запросы | 429 с Retry-After, при резком росте slow_down | 429 rate_limit_error, retry-after: 60 | ждать столько, сколько сказано в заголовке |
| Модель перегружена | 503 server_is_overloaded | 503 | повторить с паузой |
Источники: коды ошибок 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: цены и параметры.