Streaming
Stream responses token by token using the Responses API for real-time output
The Responses API supports streaming to receive tokens as they're generated instead of waiting for the complete response. Set stream: true in your request, then read the response body as a stream of server-sent events (SSE). Each event contains a response chunk that you can display incrementally.
The Responses API is best supported on the Enterprise plan. Use https://enterprise.blackbox.ai as the base URL for full model availability and production reliability. The API is also available on standard plans at https://api.blackbox.ai, where it is currently experimental.
Basic Streaming Request
const response = await fetch('https://enterprise.blackbox.ai/v1/responses', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
Authorization: `Bearer ${process.env.BLACKBOX_API_KEY}`,
},
body: JSON.stringify({
model: 'openai/gpt-5.3-codex',
input: [
{
type: 'message',
role: 'user',
content: 'Write a haiku about debugging code.',
},
],
stream: true,
}),
});
const reader = response.body.getReader();
const decoder = new TextDecoder();
while (true) {
const { done, value } = await reader.read();
if (done) break;
const chunk = decoder.decode(value);
const lines = chunk.split('\n');
for (const line of lines) {
if (line.startsWith('data:')) {
const data = line.substring(6).trim();
if (data) {
const event = JSON.parse(data);
if (event.type === 'response.output_text.delta') {
process.stdout.write(event.delta);
}
}
}
}
}import os
import json
import requests
response = requests.post(
'https://enterprise.blackbox.ai/v1/responses',
headers={
'Content-Type': 'application/json',
'Authorization': f"Bearer {os.environ['BLACKBOX_API_KEY']}",
},
json={
'model': 'openai/gpt-5.3-codex',
'input': [
{
'type': 'message',
'role': 'user',
'content': 'Write a haiku about debugging code.',
},
],
'stream': True,
},
stream=True
)
for line in response.iter_lines():
if line:
decoded = line.decode('utf-8')
if decoded.startswith('data:'):
data = decoded[6:].strip()
if data:
event = json.loads(data)
if event.get('type') == 'response.output_text.delta':
print(event['delta'], end='', flush=True)curl https://enterprise.blackbox.ai/v1/responses \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $BLACKBOX_API_KEY" \
-d '{
"model": "openai/gpt-5.3-codex",
"input": [
{
"type": "message",
"role": "user",
"content": "Write a haiku about debugging code."
}
],
"stream": true
}'Streaming Events
The stream emits server-sent events in the following sequence:
| Event | Description |
|---|---|
response.created |
Response initialized — signals the stream has started |
response.output_text.delta |
Text chunk received — contains a delta field with the new text |
response.output_text.done |
Text generation complete for the current output item |
response.completed |
Full response complete, includes final usage statistics |
Event Payloads
response.output_text.delta
{
"type": "response.output_text.delta",
"delta": "Null pointer—"
}response.completed
{
"type": "response.completed",
"response": {
"id": "resp_abc123",
"object": "response",
"model": "openai/gpt-5.3-codex",
"output": [
{
"type": "message",
"role": "assistant",
"content": [
{
"type": "output_text",
"text": "Null pointer—\nthe stack trace unfolds at dawn,\ncoffee grows cold."
}
]
}
],
"usage": {
"input_tokens": 12,
"output_tokens": 20
}
}
}Request Parameters
streambooleanrequiredSet to true to enable streaming. The response will be a stream of server-sent events instead of a single JSON object.
modelstringrequiredThe model identifier to use. Example: openai/gpt-5.3-codex
inputarrayrequiredArray of input messages with type, role, and content fields.