Stream agent responses in real-time
POST https://api.run-agent.ai/v1/agents/{agent_id}/stream Content-Type: application/json Authorization: Bearer YOUR_API_KEY Accept: text/event-stream
event: start data: {"message": "Stream started"} event: chunk data: {"content": "The weather in "} event: chunk data: {"content": "San Francisco is "} event: done data: {"message": "Stream complete", "usage": {...}}
event: start data: {"message": "Stream started", "session_id": "abc123"}
event: chunk data: {"content": "Hello, ", "index": 0}
event: error data: {"error": "Processing failed", "code": "STREAM_ERROR"}
event: done data: { "message": "Stream complete", "usage": { "total_tokens": 150 }, "execution_time": 2.5 }
const eventSource = new EventSource( 'https://api.run-agent.ai/v1/agents/agent-123/stream', { headers: { 'Authorization': 'Bearer YOUR_API_KEY', 'Content-Type': 'application/json' } } ); eventSource.onmessage = (event) => { const data = JSON.parse(event.data); if (event.type === 'chunk') { // Append chunk to output document.getElementById('output').innerHTML += data.content; } }; eventSource.onerror = (error) => { console.error('Stream error:', error); eventSource.close(); }; // Send request to start streaming fetch('https://api.run-agent.ai/v1/agents/agent-123/stream', { method: 'POST', headers: { 'Authorization': 'Bearer YOUR_API_KEY', 'Content-Type': 'application/json' }, body: JSON.stringify({ query: 'Tell me a story about space' }) });
import requests import json def stream_agent_response(agent_id, query): url = f"https://api.run-agent.ai/v1/agents/{agent_id}/stream" headers = { "Authorization": "Bearer YOUR_API_KEY", "Content-Type": "application/json", "Accept": "text/event-stream" } response = requests.post( url, headers=headers, json={"query": query}, stream=True ) for line in response.iter_lines(): if line: line = line.decode('utf-8') if line.startswith('data: '): data = json.loads(line[6:]) if 'content' in data: print(data['content'], end='', flush=True) # Usage stream_agent_response("agent-123", "Explain quantum computing")
const EventSource = require('eventsource'); const eventSource = new EventSource( 'https://api.run-agent.ai/v1/agents/agent-123/stream', { headers: { 'Authorization': 'Bearer YOUR_API_KEY' } } ); let fullResponse = ''; eventSource.addEventListener('chunk', (event) => { const data = JSON.parse(event.data); fullResponse += data.content; process.stdout.write(data.content); }); eventSource.addEventListener('done', (event) => { const data = JSON.parse(event.data); console.log('\n\nStream complete:', data); eventSource.close(); }); eventSource.addEventListener('error', (event) => { console.error('Stream error:', event); eventSource.close(); });
let reconnectAttempts = 0; const maxReconnects = 3; function connectStream() { const eventSource = new EventSource(url, options); eventSource.onerror = (error) => { eventSource.close(); if (reconnectAttempts < maxReconnects) { reconnectAttempts++; setTimeout(() => { console.log(`Reconnecting... (${reconnectAttempts}/${maxReconnects})`); connectStream(); }, Math.pow(2, reconnectAttempts) * 1000); } }; eventSource.addEventListener('done', () => { reconnectAttempts = 0; // Reset on success }); }
{ "query": "Continue the story", "parameters": { "resume_from_index": 150 }, "session_id": "abc123" }
// JavaScript eventSource.close(); // Python response.close() // cURL # Ctrl+C to interrupt
{ "query": "Explain slowly", "parameters": { "stream_delay_ms": 100, "chunk_size": 10 } }
eventSource.onerror = (event) => { if (event.readyState === EventSource.CLOSED) { console.log('Connection closed'); } else { console.error('Connection error:', event); // Implement retry logic } };
event: error data: {"error": "Model overloaded", "code": "CAPACITY_ERROR", "retry_after": 30}