Receive chat completion responses incrementally via Server-Sent Events (SSE).
Set stream: true in your request body:
curl https://api.sawalni.com/v1/chat/completions \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "sawalni-beta", "messages": [{"role": "user", "content": "Tell me a story"}], "stream": true }'
Each chunk is sent as a Server-Sent Event:
data: {"id":"chatcmpl-abc","choices":[{"delta":{"content":"Hello"},"index":0}]} data: {"id":"chatcmpl-abc","choices":[{"delta":{"content":" world"},"index":0}]} data: [DONE]
const response = await fetch('https://api.sawalni.com/v1/chat/completions', { method: 'POST', headers: { 'Authorization': 'Bearer YOUR_API_KEY', 'Content-Type': 'application/json' }, body: JSON.stringify({ model: 'sawalni-beta', messages: [{ role: 'user', content: 'Tell me a story' }], 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').filter(l => l.startsWith('data: ')); for (const line of lines) { const data = line.slice(6); if (data === '[DONE]') break; const parsed = JSON.parse(data); const content = parsed.choices[0]?.delta?.content || ''; process.stdout.write(content); } }
from openai import OpenAI client = OpenAI( api_key="YOUR_API_KEY", base_url="https://api.sawalni.com/v1" ) stream = client.chat.completions.create( model="sawalni-beta", messages=[{"role": "user", "content": "Tell me a story"}], stream=True ) for chunk in stream: content = chunk.choices[0].delta.content or "" print(content, end="", flush=True)