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

streambooleanrequired

Set to true to enable streaming. The response will be a stream of server-sent events instead of a single JSON object.

modelstringrequired

The model identifier to use. Example: openai/gpt-5.3-codex

inputarrayrequired

Array of input messages with type, role, and content fields.

Next Steps