Skip to content

Streaming

Both the Anthropic Messages API and the OpenAI-compatible endpoint support streaming responses via Server-Sent Events (SSE). Set stream: true in your request to enable it.

Anthropic SSE Events

When using POST /v1/messages with stream: true, you receive these event types:

EventDescription
message_startFirst event. Contains the message object with id, model, role, and initial usage.
content_block_startMarks the beginning of a content block.
content_block_deltaIncremental text content.
content_block_stopMarks the end of a content block.
message_deltaFinal update with stop_reason and output usage.
message_stopStream is complete.

Example SSE Stream (Anthropic)

text
event: message_start
data: {"type":"message_start","message":{"id":"msg_01...","type":"message","role":"assistant","content":[],"model":"claude-sonnet-4.5","usage":{"input_tokens":12,"output_tokens":0}}}

event: content_block_start
data: {"type":"content_block_start","index":0,"content_block":{"type":"text","text":""}}

event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"Hello"}}

event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"! How can I help?"}}

event: content_block_stop
data: {"type":"content_block_stop","index":0}

event: message_delta
data: {"type":"message_delta","delta":{"stop_reason":"end_turn"},"usage":{"output_tokens":8}}

event: message_stop
data: {"type":"message_stop"}

OpenAI SSE Events

When using POST /v1/chat/completions with stream: true, events follow the OpenAI format:

text
data: {"id":"chatcmpl-...","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"role":"assistant","content":""},"finish_reason":null}]}

data: {"id":"chatcmpl-...","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"Hello"},"finish_reason":null}]}

data: {"id":"chatcmpl-...","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"! How can I help?"},"finish_reason":null}]}

data: {"id":"chatcmpl-...","object":"chat.completion.chunk","choices":[{"index":0,"delta":{},"finish_reason":"stop"}]}

data: [DONE]

cURL Example

bash
curl https://api.claudexia.tech/v1/messages \
  --no-buffer \
  -H "Content-Type: application/json" \
  -H "x-api-key: sk_cdx_YOUR_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -d '{
    "model": "claude-sonnet-4.5",
    "max_tokens": 1024,
    "stream": true,
    "messages": [
      {"role": "user", "content": "Tell me a short joke."}
    ]
  }'

Python Streaming Example

python
from openai import OpenAI

client = OpenAI(
    api_key="sk_cdx_YOUR_KEY",
    base_url="https://api.claudexia.tech/v1",
)

stream = client.chat.completions.create(
    model="claude-sonnet-4.5",
    max_tokens=1024,
    stream=True,
    messages=[
        {"role": "user", "content": "Tell me a short joke."},
    ],
)

for chunk in stream:
    content = chunk.choices[0].delta.content
    if content:
        print(content, end="", flush=True)
print()