Документация OpenAI-совместимого API

ChatGPT, Codex и GLM через один API.

Model.sale предоставляет привычный OpenAI-совместимый base URL для ChatGPT-совместимых моделей GPT, клиентов Codex, GLM и DeepSeek. Храните ключ на сервере, используйте ID live-модели и смотрите ID запроса и usage в каждом ответе.

ChatGPT-совместимые GPTИспользуйте Responses или Chat Completions из SDK OpenAI. ID модели остаётся неизменным от начала до конца.
CodexПодключите Codex CLI, App или VS Code по протоколу Responses и выберите модель, в строке каталога которой есть /v1/responses.
GLM и DeepSeekВызывайте ID открытых live-моделей через Chat Completions с необязательным SSE-стримингом.
1. АутентификацияПередавайте Authorization: Bearer ms_live_…. Ключи показываются один раз и отзываются в кабинете.
2. Пополните балансВнесите не меньше $5. Средства резервируются до отправки и списываются по итоговому usage.
3. Вызовите модельИспользуйте модель из GET /v1/models. Запрос никогда не перенаправляется молча на другую модель.

Endpoints

МетодПутьНазначение
GET/v1/modelsОпубликованный live-каталог
GET/v1/models/{id}Одна доступная модель (OpenAI models.retrieve)
GET/v1/catalogПолный реестр с ценами и статусом live/недоступна
POST/v1/responsesResponses, JSON и SSE (GPT/Codex)
POST/v1/chat/completionsChat Completions, JSON и SSE (GPT/GLM/DeepSeek)
POST/v1/messagesТолько когда опубликована проверка Anthropic Messages
Почему некоторые модели каталога отсутствуют в /v1/models? /v1/models намеренно содержит только модели, допущенные к клиентскому трафику прямо сейчас. /v1/catalog оставляет видимыми все ID с ценой вместе с результатом проверки и поддерживаемыми endpoints, включая модели, которые прошли live-проверку, но ещё ждут аудированной публикации цены и маржи. Модель допускается только после свежей JSON/SSE-проверки, итогового usage и одобрения публикации; её никогда не подменяют молча.

Возможности протоколов

Смотрите актуальные supported_endpoints каждой модели в /v1/catalog. Для Codex нужна live-модель с /v1/responses; GLM и DeepSeek сейчас используют /v1/chat/completions. ID Claude остаются видимыми, когда у них есть цена, но доступ по Messages включается только после прохождения проверки.

Минимальный запрос Responses

Актуальный опубликованный пример для Responses: gpt-5.5. Убедитесь, что он всё ещё есть в GET /v1/models.

curl https://api.model.sale/v1/responses \
  -H "Authorization: Bearer $MODEL_SALE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"gpt-5.5","input":"Reply exactly OK"}'

Стриминг

Установите stream: true. Потоки Responses завершаются терминальным событием response, потоки Chat Completions — [DONE]. Шлюз добавляет x-model-sale-request-id в каждый ответ. Usage нужен для точного списания; неполный usage помечается для сверки.

Аутентификация

Передавайте ключ как Authorization: Bearer ms_live_… (SDK OpenAI, Codex) или x-api-key: ms_live_… (SDK Anthropic). Браузерные приложения могут обращаться к API напрямую: CORS включён для /v1/* без cookies. Передавайте ключ только в тот браузер, который вы контролируете.

Ошибки и лимиты

Ошибки имеют формат OpenAI {"error":{"message","type","param","code"}} (формат Anthropic на /v1/messages). type — категория, code — конкретная причина.

СтатусtypeТипичный codeЧто делать
400invalid_request_errorinvalid_json, model_requiredИсправьте тело запроса; сообщение указывает на проблему.
401authentication_errorinvalid_api_keyПроверьте ключ или создайте новый в кабинете.
402insufficient_quotainsufficient_balanceПополните баланс в разделе Billing и повторите.
403permission_errormodel_not_allowed, ip_not_allowedИзмените ограничения ключа по моделям или IP.
404not_found_errormodel_not_foundИспользуйте ID из GET /v1/models.
413invalid_request_errorrequest_too_largeТела запросов ограничены 8 МБ.
429rate_limit_errorrate_limit_exceeded, spend_limit_exceededПодождите Retry-After секунд или увеличьте лимиты ключа.
502/503server_errorupstream_error, model_unavailableПовторите с задержкой; неудачные запросы не списываются.

Первый запрос — через минуту.

Создайте ключ, пополните от $5 и замените base URL. Без подписки и без скрытых платежей.