ProxyAPI — единая точка входа ко всем моделям каталога. Один адрес, один ключ и один формат запроса: модель указывается прямо в запросе, поэтому при переходе с одной модели на другую не нужно ни подключать вторую библиотеку, ни переписывать код под чужой формат.
Формат запросов — OpenAI. Он работает и с моделями Anthropic, Google и остальных вендоров: запрос приводится к нужному виду по пути, а ответ возвращается таким, какой ожидает клиент OpenAI. Один и тот же код обращается к любой модели.
Так же устроены и остальные задачи — эмбеддинги, изображения, речь, видео. У каждой свой эндпоинт, но адрес, ключ и формат общие.
Базовый адрес один:
https://api.proxyapi.ru/v1
Запросы к текстовым моделям идут на https://api.proxyapi.ru/v1/chat/completions. Тело запроса передаётся в JSON, ключ — заголовком Authorization.
Обязательных полей два: model с идентификатором модели и messages со списком сообщений. У каждого сообщения есть роль (user — сообщение от пользователя, assistant — ответ модели, system — инструкция для модели) и содержимое.
curl "https://api.proxyapi.ru/v1/chat/completions" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer <КЛЮЧ>" \ -d '{ "model": "anthropic/claude-haiku-4-5", "messages": [ {"role": "system", "content": "Отвечай коротко."}, {"role": "user", "content": "Назови столицу Австралии."} ] }'
В примере — библиотека OpenAI и модель Anthropic. Это и есть смысл единого API: формат запроса не зависит от того, кто создал модель. Чтобы обратиться к другой модели, меняется только значение model; адрес, заголовки и структура запроса остаются теми же.
Ответ приходит в JSON. Текст модели лежит в первом элементе массива choices, в поле message.content:
{ "choices": [ { "index": 0, "message": { "role": "assistant", "content": "Канберра." }, "finish_reason": "stop" } ] }
Рядом с choices приходит объект usage с числом израсходованных токенов — по нему считается стоимость запроса — и служебные поля: идентификатор ответа, время создания и название модели, которая его сформировала.
Поле finish_reason показывает, почему модель остановилась: stop — ответ завершён, length — упёрлась в ограничение на длину ответа.
Остальные задачи работают на том же адресе и с тем же ключом, у каждой свой эндпоинт:
| Задача | Эндпоинт |
|---|---|
| Генерация текста | /v1/chat/completions |
| Векторные представления текста | /v1/embeddings |
| Генерация и редактирование изображений | /v1/images/generations, /v1/images/edits |
| Синтез речи | /v1/audio/speech |
| Распознавание речи | /v1/audio/transcriptions |
| Генерация видео | /v1/videos |
Например, генерация изображения — тот же адрес, тот же ключ, библиотека OpenAI:
curl "https://api.proxyapi.ru/v1/images/generations" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer <КЛЮЧ>" \ -d '{ "model": "qwen/qwen-image-3", "prompt": "Рыжий кот в скафандре на фоне Земли" }'
Изображение приходит в поле data[0].b64_json — картинка в base64, которую остаётся сохранить в файл.
Формат OpenAI — не единственный: тот же ключ работает с форматами Anthropic Messages, OpenAI Responses и Google Gemini.
- Быстрый старт — первый запрос с примерами на Python и Node.js.
- Модели — как устроены идентификаторы и что доступно.
Частые вопросы
Нужно ли менять адрес при переходе на модель другого вендора?
Нет. Адрес, заголовки и структура запроса не меняются — достаточно поставить другое значение в поле model. Идентификатор при этом лучше писать целиком, вместе с вендором.
Только текстовые модели или что-то ещё?
Через тот же адрес и тот же ключ работают эмбеддинги, генерация и редактирование изображений, синтез и распознавание речи, генерация видео. У каждой задачи свой эндпоинт, формат запроса — такой же, как в API OpenAI.
Сколько сообщений можно передать в одном запросе?
Столько, сколько вмещает контекст модели. Модель не помнит предыдущие запросы, поэтому историю диалога нужно передавать в поле messages целиком при каждом обращении.
Обязательно ли передавать системное сообщение?
Нет, поле messages может содержать только сообщение пользователя. Системное сообщение задаёт модели общие указания и полезно, когда нужен определённый стиль или формат ответа.
Последняя редакция: 2 сентября 2026 г.