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:
| Event | Description |
|---|---|
message_start | First event. Contains the message object with id, model, role, and initial usage. |
content_block_start | Marks the beginning of a content block. |
content_block_delta | Incremental text content. |
content_block_stop | Marks the end of a content block. |
message_delta | Final update with stop_reason and output usage. |
message_stop | Stream 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()