Перейти к содержанию
Справочник APIСтриминг (SSE)

Стриминг (SSE)

Потоковые ответы трёх API и завершение при ошибке или лимите.

Протокол модели

stream: true работает на /v1/messages, /v1/chat/completions и /v1/responses с серверным промптом и без него. Формат зависит от API: Anthropic SSE, OpenAI Chat chunks или Responses events соответственно.

Поток и его завершающие события
Ваше приложение
stream: true
GUARD API
SSE
Messages
Куски контента
content_block_delta
Завершение
message_stop
Chat Completions
Куски ответа
chat.completion.chunk
Завершение
data: [DONE]
Responses
Куски текста
response.output_text.delta
Завершение
response.completed
При stream: true ответ приходит частями. Последовательность и завершающее событие зависят от endpoint: Messages, Chat Completions или Responses.
EndpointТерминальное событиеОсобенности
/v1/messages без серверного промптаmessage_stopНативные text/tool/thinking/signature/citations deltas
/v1/messages с применённым промптомmessage_stopText и client tools; без signed thinking и citations deltas
/v1/chat/completionsdata: [DONE]OpenAI-compatible chunks
/v1/responsesresponse.completedResponses events; при лимите финальный объект имеет status: incomplete

Запрос

bash
curl -N https://api.guardrelay.ai/v1/messages \
  -H "x-api-key: $GUARD_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{
    "model": "claude-sonnet-5",
    "max_tokens": 256,
    "stream": true,
    "messages": [{"role": "user", "content": "Напиши хайку про море"}]
  }'

Типы событий Claude Messages без применённого серверного промпта:

  • message_start — начало ответа, метаданные.
  • content_block_start / content_block_delta / content_block_stop — куски контента.
  • message_delta — изменения верхнего уровня (например, stop_reason).
  • message_stop — конец ответа.

Без применённого серверного промпта внутри content_block_delta дополнительно могут приходить thinking_delta, signature_delta, input_json_delta и citations_delta. Обрабатывайте неизвестные типы событий без падения — Anthropic может добавлять новые.

Kimi, Composer и Grok

Kimi стримит на всех трёх поверхностях; кадры обычного Chat Completions и повторный usage разобраны на странице Kimi · Streaming и usage. Composer и Grok стримят на всех трёх поверхностях, в родном для каждой формате.

Поток Kimi

Передайте stream: true — ответ пойдёт кадрами SSE в обычной OpenAI-форме. Каждый кадр это chat.completion.chunk, кусок текста лежит в choices[0].delta.content, а завершает поток строка data: [DONE].

bash
curl -N -X POST https://api.guardrelay.ai/v1/chat/completions \
  -H "Authorization: Bearer gd-ваш-ключ" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "k3",
    "messages": [{"role": "user", "content": "Напиши хайку про море"}],
    "max_tokens": 256,
    "stream": true
  }'

Итоговую статистику Kimi кладёт в завершающий кадр рядом с finish_reason, даже если stream_options.include_usage не запрошен. При include_usage: true та же статистика придёт ещё раз отдельным кадром с пустым choices. Это одно и то же число, складывать их не нужно.

EndpointСобытия Composer и Grok
/v1/messagesmessage_start, content_block_start, content_block_delta, content_block_stop, message_delta с итоговым usage, message_stop
/v1/chat/completionsкадры chat.completion.chunk, последний кадр несёт finish_reason: "stop" и usage, затем data: [DONE]
/v1/responsesresponse.created, response.output_text.delta, response.output_text.done, response.completed с usage

Проверка потока

bash
curl -N -X POST https://api.guardrelay.ai/v1/chat/completions \
  -H "Authorization: Bearer gd-ваш-ключ" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "cursor-grok-4.6-low",
    "messages": [{"role": "user", "content": "Напиши хайку про море"}],
    "max_tokens": 256,
    "stream": true
  }'
bash
curl -N -X POST https://api.guardrelay.ai/v1/chat/completions \
  -H "Authorization: Bearer gd-ваш-ключ" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "composer-2.5",
    "messages": [{"role": "user", "content": "Напиши хайку про море"}],
    "max_tokens": 256,
    "stream": true
  }'

Разделы документации

На этой странице