Справочник API/Эндпоинты и примеры/Responses

Responses

Эндпоинт, совместимый с OpenAI Responses; Codex CLI использует этот формат по умолчанию. Входные данные передаются в поле input, ответ — массив output, а рассуждения и вызовы инструментов — отдельные элементы.

POSThttps://api.wokey.ai/v1/responses· Совместим с OpenAI Responses
На этой страницеexpand_more

Примерlink

Укажите base URL https://api.wokey.ai/v1. Настройка Codex CLI описана на странице Codex CLI в разделе «Клиенты».

curl https://api.wokey.ai/v1/responses \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-6-sol",
    "instructions": "You are a helpful assistant.",
    "input": [
      { "role": "user", "content": "Hello" }
    ],
    "reasoning": { "effort": "medium" },
    "store": false
  }'

Заголовкиlink

ЗаголовокЗначениеОписание
AuthorizationОбязательноBearer YOUR_API_KEYВаш API-ключ Wokey. Подходит и x-api-key: YOUR_API_KEY.
Content-TypeОбязательноapplication/jsonТело запроса — JSON.
X-End-User-IdstringНеобязательно. ID вашего конечного пользователя, 1–128 видимых символов ASCII. С ним ограничения за повторные нарушения действуют только на этого пользователя.

Параметры запросаlink

Ниже — параметры, которые шлюз читает или которые меняют его поведение. Остальные передаются в той мере, в какой их поддерживает апстрим выбранной модели.

ПараметрТипОписание
modelОбязательноstringНепустой ID модели, в точности совпадающий с ID из списка моделей.
inputОбязательноstring | arrayВходные данные: строка текста или массив сообщений и элементов. Поле messages этот эндпоинт не принимает — запрос с ним вернёт 400.
instructionsstringСистемные инструкции. Для GPT, если их нет, шлюз подставляет "You are a helpful assistant.".
reasoningobjectНапример {"effort": "high", "summary": "auto"}. У GPT effort по умолчанию medium. На Claude через этот эндпоинт не влияет.
streambooleanПри true ответ приходит потоком событий SSE.
toolsarrayФункции-инструменты и встроенные инструменты вроде web_search. Поддерживаются и tool_choice, parallel_tool_calls.
textobjectФормат вывода, например JSON Schema для структурированного вывода в text.format.
max_output_tokensintegerМодели GPT его не поддерживают и игнорируют. Для Claude передаётся как max_tokens, по умолчанию 4096. Grok, DeepSeek, MiniMax и похожие модели получают его как есть.
storebooleanДля GPT всегда считается false: Wokey не хранит диалоги у апстрима.
previous_response_idstringНе поддерживается. Диалоги у апстрима не хранятся, поэтому каждый запрос должен содержать всю историю в input — Codex CLI так и делает по умолчанию.
includearrayНапример ["reasoning.encrypted_content"], чтобы получить зашифрованные рассуждения. Верните эти элементы reasoning во input следующего хода, чтобы продолжить рассуждения и попасть в кэш.
prompt_cache_keystringКлюч кэша, до 64 символов. Постоянное значение в рамках сессии помогает попаданиям в кэш.
providerobjectРасширение Wokey для выбора или исключения поставщиков. Используется только для маршрутизации и не пересылается апстриму.

Как Wokey обрабатывает запросlink

Что шлюз делает до и после пересылки и чем это отличается от прямого вызова официального API.

  • Модели GPT пересылаются в формате Responses без преобразования. Основные изменения: store всегда false; user, safety_identifier, max_output_tokens и параметры сэмплирования не пересылаются; элементы input с role system становятся developer.
  • В этом формате можно вызывать и Claude, DeepSeek и другие модели не от OpenAI. Claude здесь не поддерживает настройки рассуждений, а его usage содержит только input_tokens, output_tokens и total_tokens; для всех возможностей Claude используйте Messages.
  • POST /v1/responses/input_tokens считает входные токены запроса. POST /v1/responses/compact сжимает контекст и поддерживает только модели GPT.
  • GET /v1/responses (режим WebSocket) не поддерживается и возвращает 426 websocket_not_supported.
  • metadata и provider не пересылаются апстриму.

Если у модели несколько поставщиков, добавьте в тело запроса объект provider, чтобы выбрать или исключить поставщиков. Выбор поставщиков и их порядка →

Ответlink

JSON
{
  "id": "resp_...",
  "object": "response",
  "status": "completed",
  "model": "gpt-6-sol",
  "output": [
    { "type": "reasoning", "id": "rs_...", "summary": [] },
    {
      "type": "message",
      "id": "msg_...",
      "role": "assistant",
      "content": [{ "type": "output_text", "text": "Hello! How can I help you today?" }]
    }
  ],
  "usage": {
    "input_tokens": 21,
    "input_tokens_details": { "cached_tokens": 0 },
    "output_tokens": 42,
    "output_tokens_details": { "reasoning_tokens": 32 },
    "total_tokens": 63
  }
}
  • Заголовок ответа x-wokey-request-id — ID запроса в Wokey. Указывайте его, когда сообщаете о проблеме.
  • Массив output по порядку перечисляет элементы рассуждений, сообщений и вызовов инструментов. output_text в SDK склеивает весь текст.
  • GPT: input_tokens включает кэшированные токены, их число — в input_tokens_details.cached_tokens; токены рассуждений — в output_tokens_details.reasoning_tokens.
  • Claude: input_tokens не включает кэш, детализация кэша не возвращается.

Потоковая передачаlink

У каждого события есть строки event: и data:; последнее событие — response.completed.

SSE
event: response.created
data: {"type":"response.created","response":{"id":"resp_...","status":"in_progress"}}

event: response.output_text.delta
data: {"type":"response.output_text.delta","item_id":"msg_...","output_index":1,"delta":"Hello!"}

event: response.output_text.done
data: {"type":"response.output_text.done","item_id":"msg_...","output_index":1,"text":"Hello! How can I help you today?"}

event: response.completed
data: {"type":"response.completed","response":{"id":"resp_...","status":"completed","usage":{"input_tokens":21,"output_tokens":42,"total_tokens":63}}}
  • Для GPT поток событий апстрима передаётся без изменений.
  • Для других моделей шлюз формирует события в формате Responses; поток заканчивается response.completed, после чего идёт data: [DONE].
  • Ошибка во время потока приходит событием response.failed.
  • Пока апстрим не прислал первый байт, шлюз периодически отправляет строки-комментарии SSE, которые клиенты игнорируют.

Формат ошибокlink

JSON
{
  "error": {
    "code": "model_not_found",
    "message": "Model ID \"gpt-6-sun\" was not recognized. The correct model ID is \"gpt-6-sol\"; use it and try again. See https://wokey.ai/models for the full list.",
    "type": "invalid_request_error"
  }
}

Ошибки в формате OpenAI: error.code — код для обработки, error.type обычно invalid_request_error. Что означает каждый статус и что делать, см. Коды ошибок и устранение неполадок →