Содержание
- Чем API ChatGPT отличается от подписки
- Как получить ключ API ChatGPT
- Как установить библиотеку OpenAI для работы с Python?
- Как работать с вызовами API ChatGPT?
- Модели и цены API ChatGPT в 2026 году
- Как создать беседу?
- Три несовместимости, на которых ломается старый код API ChatGPT
- Ошибки, повторы и лимиты API ChatGPT
- Доступ к API ChatGPT из России
- Чек-лист запуска API ChatGPT на Python
- Частые вопросы про API ChatGPT
Как использовать API ChatGPT с Python — руководство для начинающих
Черновик готовит редакция с помощью ИИ. За стандарт издания отвечает главный редактор — Валерий Курземнек.
API ChatGPT — это платный программный доступ к моделям OpenAI: вы отправляете запрос из кода на Python и получаете ответ модели. Нужны три вещи — аккаунт на платформе OpenAI с пополненным балансом, секретный ключ и библиотека openai. Платите за токены; подписка ChatGPT Plus доступ к API не открывает.
Коротко, что изменилось с момента, когда писалось большинство руководств в выдаче:
- Рабочий вызов в текущей библиотеке —
client.responses.create(). Конструкцияopenai.ChatCompletion.createиз версий до 1.0 выдаёт ошибку и не выполняется. - Chat Completions в документации OpenAI назван «предыдущим стандартом», который поддерживается бессрочно; Responses API компания рекомендует для новых проектов.
- Цены за 1 млн токенов:
gpt-5.6-luna— $0.20 на входе и $1.20 на выходе,gpt-5.6-terra— $2.00 и $12.00,gpt-5.6-sol— $5.00 и $30.00. - Модель
gpt-3.5-turbo, с которой работали старые примеры, отключается 23 октября 2026 года; в таблице устаревания OpenAI на её место поставленаgpt-5.6-terra. - России нет в списке стран и территорий, где OpenAI разрешает доступ к своим сервисам.
Версии библиотеки, имена моделей и цены ниже сверены с документацией OpenAI и карточкой пакета на PyPI 19 августа 2026 года.
Чем API ChatGPT отличается от подписки
Подписка даёт человеку окно чата в браузере. API даёт программе адрес, куда слать запросы, и счёт, который списывается по факту израсходованных токенов. Это разные продукты с раздельной оплатой: деньги на балансе API не превращаются в Plus, а Plus не открывает ключ.
| Что сравниваем | Подписка ChatGPT | API ChatGPT |
|---|---|---|
| Интерфейс | Веб и мобильные приложения | HTTP-запросы из вашего кода |
| Оплата | Фиксированная сумма в месяц | За токены, по факту расхода |
| Кто отправляет запрос | Человек руками | Скрипт, бот, сервис |
| Ключ доступа | Не выдаётся | Секретный ключ в аккаунте платформы |
| Лимиты | Ограничения тарифа | Лимиты уровня использования (tier) |
Отсюда следует практическое: считать бюджет на API по цене подписки бесполезно. Скрипт, который перебирает тысячу карточек товара, может уложиться в доллар, а может съесть двадцать — разница только в длине промптов и выбранной модели. Разбор тарифов самой подписки вынесен отдельно: сколько стоит подписка ChatGPT.
К API переходят тогда, когда обращений к модели много и делает их программа: чат-боты в поддержке, генерация описаний товаров, разбор входящих заявок.
Как получить ключ API ChatGPT

Шаг 1. Учётная запись OpenAI и секретный ключ
Ключ создаётся в аккаунте на платформе OpenAI, в разделе настроек организации — страница API keys (её адрес platform.openai.com/settings/organization/api-keys указан в README официальной библиотеки). В руководствах прошлых лет ту же страницу называли View API keys и открывали через значок аватара — если встретите это название, речь про неё. Нажмите Create new secret key, дайте ключу имя и скопируйте строку сразу: повторно открыть её платформа не даёт, потерянный ключ придётся отзывать и выпускать заново.

Ключ — это доступ к вашим деньгам на балансе, поэтому в репозиторий он не попадает никогда. Официальная библиотека прямо советует хранить его в файле .env через python-dotenv. В исходниках ключу места нет.

Шаг 2. Пополнить баланс
Ключ выпускается сразу, и первый пробный запрос уходит без оплаты — quickstart поздравляет с ним прямо: «Congrats on running a free test API request!». Дальше начинается платная часть, и в ней стоит различать две вещи.
Уровень Free оплаты не требует. Единственное условие в таблице уровней — «User must be in an allowed geography», и для читателя из России это условие ключевое: России в списке разрешённых стран нет, об этом ниже отдельный раздел. Цифра «$100 / month» в той же строке — одобренный OpenAI потолок расхода, деньгами на балансе она не становится: в справке о лимитах расхода сказано отдельно, что «OpenAI also assigns your organization an approved monthly usage limit based on its usage tier».
Деньги нужны, чтобы работа продолжалась. Когда предоплаченный баланс исчерпан, API отвечает кодом 429 с причиной credit_balance_exhausted — «Your organization has no prepaid credits remaining», и документация сразу предупреждает: «Retrying billing, spend, or quota errors won’t restore API access», то есть повтор запроса тут бесполезен, нужно пополнение. Оплата же поднимает лимиты: Tier 1 наступает после $5, Tier 2 — после $50 с потолком $500 в месяц, Tier 3 — после $100, Tier 5 — после $1 000 с потолком $200 000. Переход между уровнями компания делает автоматически: «по мере роста ваших расходов на наш API мы автоматически переводим вас на следующий уровень».
Шаги по интерфейсу и текущие требования к аккаунту описаны в официальном quickstart OpenAI.
Как установить библиотеку OpenAI для работы с Python?
Библиотека одна и ставится одной командой, но версия Python имеет значение: в README указано «Python 3.10 or higher», и метаданные пакета на PyPI требуют того же — >=3.10. На 19 августа 2026 года PyPI отдаёт версию openai 3.3.0, загруженную 18 августа 2026 года. Примеры ниже написаны под неё.
Создайте виртуальное окружение в рабочей директории и активируйте его:
python -m venv env
env\Scripts\activate # Windows
source env/bin/activate # macOS и Linux
pip install openai python-dotenv
pip show openai # проверить, какая версия встала

Ключ в код не вписывают. Документация OpenAI формулирует это так: «Each OpenAI SDK automatically reads your API key from the system environment» — то есть достаточно положить ключ в переменную окружения OPENAI_API_KEY, и клиент подхватит его сам:
export OPENAI_API_KEY="your_api_key_here" # macOS и Linux
setx OPENAI_API_KEY "your_api_key_here" # Windows, новая сессия терминала
Вариант для проекта — файл .env со строкой OPENAI_API_KEY="My API Key" и вызов load_dotenv() в начале скрипта. Файл .env сразу добавьте в .gitignore. Рабочее окружение на этом собрано: Python от 3.10, пакет openai текущей версии, ключ в переменной окружения. Дальше идёт код, и именно здесь старые руководства ломаются.
Как работать с вызовами API ChatGPT?
Основной интерфейс библиотеки — Responses API. В README он назван «the primary API for interacting with OpenAI models». На этом вызове держится всё остальное — чат-бот, разбор писем, любая задача обработки естественного языка (NLP). Минимальный рабочий скрипт занимает шесть строк:
from openai import OpenAI
client = OpenAI() # ключ берётся из переменной окружения OPENAI_API_KEY
response = client.responses.create(
model="gpt-5.6-terra",
instructions="Отвечай кратко, на русском языке.",
input="Объясни, что такое токен в языковой модели.",
)
print(response.output_text)
Про имя модели есть расхождение, о котором стоит знать заранее, и вариантов сразу три. В quickstart OpenAI примеры написаны с model="gpt-5.6". В README самой библиотеки openai — то есть в документе, который ближе всего к вашему питон-коду, — во всех примерах стоит model="gpt-5.5", прошлая модель: в таблице цен она идёт отдельной строкой, $5.00 на входе и $30.00 на выходе. На страницах моделей и цен перечислены только варианты с суффиксом — gpt-5.6-sol, gpt-5.6-terra, gpt-5.6-luna; в карточке gpt-5.6-terra в списке снапшотов и алиасов указано одно имя — само gpt-5.6-terra. Отсюда рабочее правило: синтаксис вызова копируйте из quickstart и README, а имя модели берите со страницы моделей или цен — полное, с суффиксом. Роли задают, чей это текст и с каким приоритетом его читать. Документация формулирует иерархию прямо: «Developer messages are instructions provided by the application developer, prioritized ahead of user messages», пользовательские сообщения «prioritized behind developer messages», а ответы модели идут с ролью assistant:
response = client.responses.create(
model="gpt-5.6-terra",
reasoning={"effort": "low"},
input=[
{"role": "developer", "content": "Ты редактор. Правишь только факты."},
{"role": "user", "content": "Проверь абзац: ..."},
],
)
Если проект уже написан на Chat Completions, переписывать его срочно не нужно: этот интерфейс остаётся рабочим и принимает привычный список messages.
completion = client.chat.completions.create(
model="gpt-5.6-terra",
messages=[
{"role": "developer", "content": "Talk like a pirate."},
{"role": "user", "content": "Как проверить тип объекта в Python?"},
],
)
print(completion.choices[0].message.content)
Ответ можно забирать по мере генерации — библиотека поддерживает Server-Sent Events. Достаточно добавить stream=True и читать события в цикле:
stream = client.responses.create(
model="gpt-5.6-terra",
input="Напиши абзац про виртуальные окружения Python.",
stream=True,
)
for event in stream:
print(event)
Параметры запроса и что изменилось в их наборе
Параметры запроса (parameters) настраивают ответ модели. Здесь старые руководства ошибаются чаще всего: часть параметров переехала, часть сменила диапазон, часть в Responses API просто отсутствует. Знакомые по прежним статьям Max tokens, Frequency penalty и Presence penalty никуда не делись, но живут теперь по разным адресам и с другими границами.
| Параметр | Что делает по документации | Где живёт |
|---|---|---|
temperature |
«What sampling temperature to use, between 0 and 2». Выше — ответ разнообразнее, ниже — сфокусированнее | Responses и Chat Completions |
top_p |
Nucleus sampling: 0.1 означает, что рассматриваются токены из верхних 10 % вероятностной массы. Документация советует крутить его или temperature, но не оба сразу |
Responses и Chat Completions |
max_output_tokens |
«An upper bound for the number of tokens that can be generated for a response», включая токены рассуждения | Responses |
max_tokens |
Помечен как устаревший в пользу max_completion_tokens и несовместим с моделями o-серии |
Chat Completions |
frequency_penalty |
«Number between -2.0 and 2.0» — снижает вероятность дословного повтора строк | Chat Completions |
presence_penalty |
«Number between -2.0 and 2.0» — повышает вероятность, что модель заговорит о новом | Chat Completions |
reasoning |
Уровень усилия на рассуждение, например {"effort": "low"} |
Responses |
stream |
Отдаёт ответ по частям через server-sent events | Responses и Chat Completions |
Два вывода для тех, кто переносит старый код. Первый: frequency_penalty и presence_penalty в справочнике Responses API отсутствуют — они остались в Chat Completions. Второй: диапазон у обоих штрафов идёт от −2.0 до 2.0. Руководства эпохи gpt-3.5 указывали нижней границей ноль. Потолок «до 4097 токенов» оттуда же: это был предел конкретной старой модели. У gpt-5.6-terra в карточке модели указано контекстное окно 1 050 000 токенов и максимум 128 000 токенов на выходе.
Модели и цены API ChatGPT в 2026 году
Тарификация идёт по токенам и считается за 1 млн токенов отдельно на входе и на выходе. Отдельная строка — кэшированный вход: повторно уходящий в модель одинаковый кусок промпта стоит дешевле. Цифры ниже взяты со страницы цен OpenAI 19 августа 2026 года.
| Модель | Вход, $ / 1M | Кэш. вход, $ / 1M | Выход, $ / 1M |
|---|---|---|---|
gpt-5.6-sol |
5.00 | 0.50 | 30.00 |
gpt-5.6-terra |
2.00 | 0.20 | 12.00 |
gpt-5.6-luna |
0.20 | 0.02 | 1.20 |
gpt-5.5 |
5.00 | 0.50 | 30.00 |
gpt-5.4-nano |
0.20 | 0.02 | 1.25 |
Роли в линейке OpenAI описывает так: gpt-5.6-sol — «frontier model for complex professional work», gpt-5.6-terra балансирует качество и стоимость, gpt-5.6-luna рассчитана на дешёвые массовые задачи. Посчитаем на конкретной задаче. Тысяча запросов, в каждом примерно 800 токенов промпта и 400 токенов ответа — это 0,8 млн входных и 0,4 млн выходных токенов. На gpt-5.6-luna выходит 0,8 × $0.20 + 0,4 × $1.20 = $0.64. На gpt-5.6-terra — 0,8 × $2.00 + 0,4 × $12.00 = $6.40. На gpt-5.6-sol — $16.00. Разрыв между младшей и старшей моделью на одной и той же работе — двадцать пять раз. Отдельно про модели из старых статей. В таблице устаревания OpenAI gpt-3.5-turbo и gpt-3.5-turbo-0125 отключаются 23 октября 2026 года, замена — gpt-5.6-terra. Тем же числом отключаются gpt-4, gpt-4-1106-preview и gpt-4-turbo, их замена — gpt-5.6-sol. Если в вашем коде зашита одна из этих строк, дата уже назначена.
Как создать беседу?
Модель не помнит предыдущий запрос сама. Контекст диалога либо передаёт платформа, либо собираете вы. Первый способ — параметр previous_response_id. В справочнике он описан как «the unique ID of the previous response to the model. Use this to create multi-turn conversations»:
first = client.responses.create(
model="gpt-5.6-terra",
input="Придумай название для сервиса доставки книг.",
)
print(first.output_text)
second = client.responses.create(
model="gpt-5.6-terra",
previous_response_id=first.id,
input=[{"role": "user", "content": "Дай ещё пять вариантов в том же духе."}],
)
print(second.output_text)
Ответы при этом хранятся на стороне OpenAI: «Response objects are saved for 30 days by default», их видно в логах панели и можно вытащить через API. Если такое хранение не подходит, ответ можно не сохранять — за это отвечает параметр store. Второй способ — вести историю руками. Документация описывает его так: «To manually share context across generated responses, include the model’s previous response output as input, and append that input to your next request». Список сообщений чередует роли user и assistant:
history = [{"role": "user", "content": "Привет, помоги с планом статьи."}]
resp = client.responses.create(model="gpt-5.6-terra", input=history)
history += [{"role": "assistant", "content": resp.output_text}]
history += [{"role": "user", "content": "Сократи план до пяти пунктов."}]
resp = client.responses.create(model="gpt-5.6-terra", input=history)
print(resp.output_text)
Здесь работает то же правило, что и десять лет назад в любом чат-бэкенде: при каждом вызове вся беседа уходит в модель заново. Двадцатое сообщение оплачивается вместе с девятнадцатью предыдущими. Смягчает это только кэш ввода — в таблице цен кэшированный вход у gpt-5.6-terra стоит $0.20 против $2.00 за обычный, то есть в десять раз дешевле.
Три несовместимости, на которых ломается старый код API ChatGPT

Библиотека для API ChatGPT пережила три перелома. Руководство, написанное между любыми двумя из них, выглядит правдоподобно и не запускается.
Перелом первый: версия 1.0. До неё вызов писали через модуль — openai.api_key = "..." и openai.ChatCompletion.create(...). Начиная с 1.0 такой код падает с сообщением: «You tried to access openai.ChatCompletion, but this is no longer supported in openai>=1.0.0». Руководство по миграции предлагает два выхода — команда openai migrate, которая переписывает исходники локально через grit (на Windows нужен WSL), или откат на старую версию командой pip install openai==0.28. Заодно изменился доступ к ответу: раньше completion['choices'][0]['text'], теперь объекты стали pydantic-моделями и читаются через точку — completion.choices[0].text, а в словарь превращаются через model_dump().
Перелом второй: Responses вместо Chat Completions. Здесь ломается не код, а выбор. Chat Completions остаётся рабочим — документация называет его «предыдущим стандартом» и обещает поддержку бессрочно. Но для новых проектов OpenAI рекомендует Responses и приводит два аргумента: «Using reasoning models, like GPT-5, with Responses will result in better model intelligence when compared to Chat Completions» и экономия за счёт кэша — «40% to 80% improvement when compared to Chat Completions in internal tests».
Перелом третий: версия 3.0, 12 августа 2026 года. Свежий и потому не описанный почти нигде. В changelog он помечен как breaking change: «HTTPX2 is now the default HTTP client, and httpx is no longer installed automatically». Приложения со своими HTTPX-клиентами, транспортами или объектами конфигурации обязаны перейти на эквиваленты HTTPX2 либо временно включить legacy-режим. Простого скрипта из этой статьи это не касается, но проект, который сам настраивал прокси или таймауты через httpx, после pip install --upgrade openai упадёт на импорте. Даты и формулировки — в changelog библиотеки. Практическое следствие: первым делом фиксируйте версию в requirements.txt. Если код перестал работать после обновления, диагностику начинайте с pip show openai. Симптомы со стороны самого сервиса разобраны отдельно — почему ChatGPT не работает.
Ошибки, повторы и лимиты API ChatGPT
Библиотека разделяет два класса отказов. Не удалось достучаться до API — сеть, таймаут — поднимается наследник openai.APIConnectionError. Ответ пришёл с кодом 4xx или 5xx — наследник openai.APIStatusError со свойствами status_code и response. Все ошибки наследуются от openai.APIError.
| Код ответа | Класс исключения |
|---|---|
| 400 | BadRequestError |
| 401 | AuthenticationError |
| 403 | PermissionDeniedError |
| 404 | NotFoundError |
| 422 | UnprocessableEntityError |
| 429 | RateLimitError |
| 500 и выше | InternalServerError |
| нет ответа | APIConnectionError |
Минимальная обработка выглядит так:
import openai
from openai import OpenAI
client = OpenAI()
try:
resp = client.responses.create(model="gpt-5.6-terra", input="Привет")
except openai.APIConnectionError as e:
print("Сервер недоступен:", e.__cause__)
except openai.RateLimitError:
print("Код 429 — упёрлись в лимит, стоит притормозить")
except openai.APIStatusError as e:
print("Другой код ответа:", e.status_code, e.response)
Повторы библиотека делает сама. По умолчанию отдельные ошибки повторяются дважды с короткой экспоненциальной паузой: обрывы соединения, 408, 409, 429 и коды от 500. Число попыток настраивается параметром max_retries — на клиенте целиком или на конкретном запросе через client.with_options(max_retries=5). Таймаут по умолчанию — 10 минут, меняется параметром timeout. Код 429 приходит и по превышению лимитов уровня. Уровень поднимается автоматически по мере оплаченных сумм: $5 — Tier 1, $50 — Tier 2, $100 — Tier 3, $250 — Tier 4, $1 000 — Tier 5 с потолком расхода $200 000 в месяц.
Доступ к API ChatGPT из России
Здесь важно отделить факты от советов, которые устаревают за месяц. Факты такие. OpenAI публикует список стран и территорий, где разрешено пользоваться её сервисами, и предупреждает: «Accessing or offering access to our services outside of the countries and territories listed below may result in your account being blocked or suspended». России в этом списке нет — между Румынией и Руандой перечисления страна не появляется. Отдельно на бесплатный уровень использования наложено условие «пользователь должен находиться в разрешённой географии». Из этого следует ровно одно проверяемое утверждение: аккаунт, работающий с API из России, находится вне условий использования, и риск блокировки несёт владелец аккаунта. Всё остальное — карты, посредники, прокси — меняется быстрее, чем живёт статья, и проверять это нужно на день покупки, а не по чужому руководству годичной давности. Текущее состояние способов оплаты мы держим в отдельном материале: как оплатить ChatGPT из России. Второй путь — модели, у которых нет географического ограничения на российских пользователей. Синтаксис вызова у них похож: HTTP-запрос с ключом, ответ в JSON, оплата по токенам, — поэтому переносится код обычно за вечер. У Сбера это GigaChat, разбор возможностей и бесплатного объёма — в статье про Гигачат. Из зарубежных чаще берут DeepSeek, и его цену можно положить рядом с таблицей выше. На официальной странице цен DeepSeek за 1 млн токенов модель deepseek-v4-flash стоит $0.44 на входе без кэша и $1.32 на выходе в часы пик; вне пика вдвое дешевле — $0.22 и $0.66. Пиком там названы 01:00–04:00 и 06:00–10:00 UTC. Сравнение выходит построчным: на входе gpt-5.6-luna дешевле в любые часы ($0.20 против $0.22 и $0.44), на выходе DeepSeek дешевле вне пика ($0.66 против $1.20) и дороже в пик ($1.32). Текущее состояние сервиса мы описали здесь. Технически API ChatGPT из России вызывается тем же кодом, что и откуда угодно. Ограничение лежит в условиях использования и в оплате.
Чек-лист запуска API ChatGPT на Python
Собранное в одну колонку — то, что нужно проверить перед первым запросом и после каждого обновления библиотеки.
- Python 3.10 или выше — этого требуют и README библиотеки, и метаданные пакета на PyPI.
- Виртуальное окружение создано,
pip install openaiотработал,pip show openaiпоказывает ожидаемую версию. - Версия зафиксирована в
requirements.txt: между 2.54.0 и 3.0.0 сменился HTTP-клиент. - Ключ лежит в переменной окружения
OPENAI_API_KEYили в.env, файл.envдобавлен в.gitignore. - Баланс пополнен: на пустом предоплаченном балансе приходит код 429
credit_balance_exhausted, первый уровень лимитов открывается после $5. - В коде стоит имя модели с суффиксом — например
gpt-5.6-terra, — а неgpt-3.5-turboс датой отключения 23 октября 2026 года. - Вызов написан как
client.responses.create(); конструкцииopenai.ChatCompletion.createв файле не осталось. - Обработаны
RateLimitErrorиAPIConnectionError, при необходимости настроенmax_retries. - Для диалога выбран способ хранения контекста:
previous_response_idлибо собственная история сообщений. - Стоимость посчитана на реальном объёме промптов: один тестовый запрос про деньги ничего не говорит.
Частые вопросы про API ChatGPT
Работает ли сейчас вызов openai.ChatCompletion.create?
Нет. Начиная с версии openai 1.0 такой код падает с сообщением «You tried to access openai.ChatCompletion, but this is no longer supported in openai>=1.0.0». Актуальные вызовы — client.responses.create() для Responses API и client.chat.completions.create() для Chat Completions.
Какую модель ставить вместо gpt-3.5-turbo?
В таблице устаревания OpenAI для gpt-3.5-turbo указана дата отключения 23 октября 2026 года и замена gpt-5.6-terra. Для gpt-4 и gpt-4-turbo той же датой назначена замена gpt-5.6-sol.
Сколько стоит API ChatGPT?
Оплата идёт за токены и считается за 1 млн токенов. По ценам OpenAI на 19 августа 2026 года gpt-5.6-luna стоит $0.20 на входе и $1.20 на выходе, gpt-5.6-terra — $2.00 и $12.00, gpt-5.6-sol — $5.00 и $30.00. Тысяча запросов по 800 входных и 400 выходных токенов обойдётся в $0.64 на luna и $16.00 на sol.
Даёт ли подписка ChatGPT Plus доступ к API?
Нет, это раздельные продукты с раздельной оплатой. API работает по секретному ключу и балансу на платформе OpenAI, подписка оплачивает интерфейс чата и ключ не выдаёт.
Какая версия Python нужна для библиотеки openai?
Python 3.10 или выше. Требование указано и в README библиотеки, и в метаданных пакета на PyPI.
Доступен ли API ChatGPT в России?
России нет в списке поддерживаемых стран и территорий OpenAI. Документация предупреждает, что доступ к сервисам вне перечисленных стран может привести к блокировке или приостановке аккаунта.
