POST /v1/responses — основной интерфейс Codex для этого подключения. Поддерживаются текстовые запросы и история, instructions, клиентские функции, обычные и потоковые ответы. Режимов ключа нет; серверный промпт настраивается отдельно.
| Вход | Поддержка |
|---|---|
input | Строка или массив message items с input_text; также function_call и function_call_output для продолжения client-tool цикла |
| Генерация | max_output_tokens, stream; применение temperature и top_p зависит от модели и thinking |
| Client tools | Функции type: "function", tool_choice и совместимый parallel tool loop; функцию выполняет клиент |
| Ответ | output_text и function_call; streaming завершается response.completed, а обрезка по лимиту получает status: "incomplete" |
curl https://api.guardrelay.ai/v1/responses \
-H "Authorization: Bearer $GUARD_API_KEY" \
-H "content-type: application/json" \
-d '{
"model": "claude-sonnet-5-5",
"instructions": "Отвечай кратко",
"input": "Проверка связи: ответь OK",
"max_output_tokens": 64
}'- PDF /
input_file,input_image, native citations и server-side Web/MCP tools не входят в контракт Responses. Для PDF и изображений используйте Messages. top_k, явныйcache_control, native thinking/reasoning blocks и structuredtext.formatне входят в поддержанный контракт.claude-fable-5иclaude-fable-5-1доступны здесь, включая поток и клиентские функции. Ограничения типов данных этого endpoint сохраняются.- Явно запрещённые типы или семантика получают локальный
400до списания. Compatibility-only поля вродеprevious_response_id,include,truncationилиprompt_cache_keyмогут быть приняты без эффекта — полагаться на них нельзя.
Здесь работают все три семейства: Kimi, Composer и Grok. Поверхность одна и та же, короче у них только список принимаемых полей.
Kimi здесь обслуживается: ключ и адрес обычные, в поле model точный id Kimi, текст или история кладутся в input. Готовая настройка Codex на этой поверхности собрана на странице Codex. Если вашему клиенту привычнее OpenAI Chat Completions, тот же ключ работает и там.
curl -X POST https://api.guardrelay.ai/v1/responses \
-H "Authorization: Bearer gd-ваш-ключ" \
-H "Content-Type: application/json" \
-d '{
"model": "k3",
"input": "Привет!",
"max_output_tokens": 128
}'curl https://api.guardrelay.ai/v1/responses \
-H "Authorization: Bearer gd-ваш-ключ" \
-H "Content-Type: application/json" \
-d '{
"model": "cursor-grok-4.6-low",
"instructions": "Отвечай кратко",
"input": "Проверка связи: ответь OK",
"max_output_tokens": 64
}'curl https://api.guardrelay.ai/v1/responses \
-H "Authorization: Bearer gd-ваш-ключ" \
-H "Content-Type: application/json" \
-d '{
"model": "composer-2.5",
"instructions": "Отвечай кратко",
"input": "Проверка связи: ответь OK",
"max_output_tokens": 64
}'| Что | Как у Composer и Grok |
|---|---|
| Поля запроса | model, input, instructions, max_output_tokens, stream, tools |
input | строка либо массив элементов type: "message" с ролями user, assistant, system, developer |
| Блоки содержимого | input_text и output_text с ключами type и text; cache_control принимается и игнорируется; у Grok дополнительно input_image с инлайн base64 |
function_call, function_call_output | часть цикла клиентских инструментов, обслуживаются |
web_search_call, file_search_call, computer_call и другие провайдерские элементы | отклоняются с 400 cursor_client_tools_unavailable |
reasoning, temperature, top_p, store, include, truncation, metadata, previous_response_id, prompt_cache_key, thinking | принимаются и молча отбрасываются |
parallel_tool_calls: true, service_tier auto/default, tool_choice: "auto" | принимаются только в значении по умолчанию |
text, любое другое значение полей выше | не принимаются, 400 cursor_parameter_unavailable |
| Ответ | status: "completed", текст в output_text и в output[0].content[0].text, кэш в usage.input_tokens_details.cached_tokens |
| Ответ с вызовом инструмента | в output добавляется элемент type: "function_call" с call_id, name и arguments; на него отвечают элементом function_call_output в следующем запросе |
Для семи GPT-моделей работают оба alias: POST https://api.guardrelay.ai/v1/responses и прежний POST https://api.guardrelay.ai/codex/v1/responses. Они используют один Responses lifecycle, одно owner-scoped хранилище и одинаковый billing.
curl https://api.guardrelay.ai/codex/v1/responses \
-H "Authorization: Bearer $GUARD_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-6-astra",
"instructions": "Отвечай кратко",
"input": "Проверка связи: ответь OK",
"reasoning": {"effort": "medium"},
"store": false
}'Responses поддерживает JSON по HTTP, SSE с stream: true и native WebSocket на wss://api.guardrelay.ai/v1/responses либо wss://api.guardrelay.ai/codex/v1/responses. Поддержаны instructions, reasoning effort, parallel client tools, изображения у совместимых моделей и фактический usage; неизвестные поля отклоняются до reserve/egress.
store: trueResponses, получение/удаление, input-items и cancel используют один owner-scoped lifecycle через оба namespace alias.- Conversations CRUD и их items используют одно хранилище и одинаковые правила owner/key/payer через
/v1и/codex/v1. - Chat Completions и Messages передают историю, которую прислал клиент. Guard не создаёт серверное continuation между форматами.
- Официальный maximum output всех семи моделей — 128 000 токенов. Responses-поле
max_output_tokensGuard принимает и сохраняет как advisory. Принудительное обрезание на 128K не обещается; списание определяется фактическими токенами и денежными правилами ключа. - Для всех семи моделей Codex поле
temperatureнедоступно через текущее подключение. Не передавайте его вообще: и явное значение, иtemperature: nullвозвращают400 invalid_requestдо reserve/egress. GPT-6 Sol и GPT-6 Luna по-прежнему поддерживаютreasoning.effort: none, когдаtemperatureотсутствует. Поддерживаемые effort остальных моделей и контрактtop_pэтим уточнением не меняются. service_tier: "fast"Guard отправляет в source какpriority; ответ сохраняет фактически возвращённый tier. Source может вернутьdefault, поэтому наличие Fast и ускорение ответа не гарантируются.- Batches, управляемые сервером агенты, Projects/Tasks, server browser/MCP и расширенный hosted-resource API не входят в этот выпуск.
Используйте POST /v1/responses или POST /glm/v1/responses. input может быть строкой или непустым массивом исходных элементов ввода.
curl https://api.guardrelay.ai/glm/v1/responses \
-H "Authorization: Bearer $GUARD_API_KEY" \
-H "content-type: application/json" \
-d '{"model":"glm-5.3","input":"Reply with OK","max_output_tokens":4096,"store":false}'{
"id": "resp_…",
"model": "glm-5.3",
"status": "completed",
"output": [
{"type": "reasoning", "content": []},
{"type": "message", "content": [{"type": "output_text", "text": "OK"}]}
],
"usage": {
"input_tokens": 31,
"input_tokens_details": {"cached_tokens": 0},
"output_tokens": 12,
"output_tokens_details": {"reasoning_tokens": 5}
}
}Guard добавляет store: true, если поле пропущено. Чтобы не сохранять ответ для продолжения, передайте явный store: false.
{
"model": "glm-5.3",
"previous_response_id": "resp_из_первого_ответа",
"input": "Continue from the previous answer",
"max_output_tokens": 4096
}| Результат | Смысл |
|---|---|
404 response_not_found | ID не сохранён, неизвестен или принадлежит другому ключу. |
409 response_account_unavailable | Закреплённая сессия временно недоступна; состояние не переносится автоматически. |
При исчерпании бюджета Responses возвращает status: "incomplete" и incomplete_details.reason: "max_output_tokens"; в SSE терминальным событием служит response.incomplete. Уже выполненная часть имеет точные счётчики и оплачивается.
Используйте POST /v1/responses с точным model Gemini. input может быть строкой или массивом элементов ввода; без явного max_output_tokens шлюз берёт 4096 токенов.
curl https://api.guardrelay.ai/v1/responses \
-H "Authorization: Bearer $GUARD_API_KEY" \
-H "content-type: application/json" \
-d '{"model":"gemini-4-argon","input":"Reply with OK","max_output_tokens":4096}'Используйте POST /v1/responses с точным model Muse. input может быть строкой или массивом элементов ввода.
curl https://api.guardrelay.ai/v1/responses \
-H "Authorization: Bearer $GUARD_API_KEY" \
-H "content-type: application/json" \
-d '{"model":"muse-wonder-1.0","input":"Reply with OK","max_output_tokens":4096}'previous_response_id продолжает ответ Gemini, сохранённый Guard для владельца ключа: любой его ключ продолжает диалог, ответ хранится 30 дней; без поля store ответ сохраняется, после ответа с store: false продолжать нечего. Неизвестный или устаревший id получает 404 gemini_history_not_found: тогда передайте всю историю в input. Поле conversation Gemini не принимает: запрос с ним получает ошибку gemini_history_required.
previous_response_id продолжает ответ Muse, созданный тем же ключом с store: true; без поля store ответ сохраняется. После ответа с store: false продолжать нечего: передайте историю в input. Неизвестный id получает 404 response_not_found. Для подсчёта токенов история нужна в input, а не в previous_response_id.