# Stream diagnostic logs Subscribe to real-time diagnostic log entries using Server-Sent Events (SSE). Opens a persistent SSE connection that delivers diagnostic log entries for a Meeting Buddy session in real time. The response uses the `text/event-stream` content type. This is useful for debugging bot connection issues, monitoring audio relay health, and observing session lifecycle events as they happen. The server sends a keepalive comment (`: keepalive`) every 15 seconds to prevent proxy timeouts. When the session reaches a terminal state, a `close` event is sent and the stream ends. #### Path Parameters **`session_id`** string required The session identifier. Must start with `mbsess_`. #### Event Types **`log`** — Diagnostic log entry Sent when a notable event occurs during the session lifecycle. | Field | Type | Description | | --- | --- | --- | | `session_id` | string | Session identifier | | `level` | string | Log level: `"info"`, `"warning"`, or `"error"` | | `message` | string | Human-readable log message | | `timestamp` | string | ISO 8601 timestamp | | `details` | object or null | Additional context (e.g., meeting ID, error details) | **`close`** — Stream termination Sent when the session reaches a terminal state. The stream closes after this event. | Field | Type | Description | | --- | --- | --- | | `reason` | string | Always `"session_ended"` | #### Common Log Messages | Level | Message | Description | | --- | --- | --- | | `info` | `Bot audio relay connected` | Bot successfully connected to the audio relay | | `info` | `Bot leaving meeting (end_session)` | Session stop was requested | | `warning` | `Bot disconnected from audio relay` | Bot lost connection unexpectedly | | `error` | `Audio relay error` | An error occurred in the audio pipeline | ## Returns A `text/event-stream` response. Each event is formatted as: ``` event: data: ``` A keepalive comment is sent every 15 seconds: ``` : keepalive ``` Request ```bash cURL curl -N -H "Authorization: Bearer $ACCESS_TOKEN" \ "https://api.aitronos.com/v1/meeting-buddy/sessions/mbsess_abc123def456/logs/stream" ``` ```python Python SDK from aitronos import Aitronos client = Aitronos(api_key="your-api-key") # Stream diagnostic logs for event in client.meeting_buddy.stream_logs("mbsess_abc123def456"): if event.type == "log": data = event.data print(f"[{data['level'].upper()}] {data['message']}") if data.get("details"): print(f" Details: {data['details']}") elif event.type == "close": print("Session ended") break ``` ```python Python import os import requests import json access_token = os.environ["ACCESS_TOKEN"] session_id = "mbsess_abc123def456" url = f"https://api.aitronos.com/v1/meeting-buddy/sessions/{session_id}/logs/stream" headers = {"Authorization": f"Bearer {access_token}"} with requests.get(url, headers=headers, stream=True) as response: event_type = None for line in response.iter_lines(decode_unicode=True): if not line: event_type = None continue if line.startswith(":"): continue if line.startswith("event: "): event_type = line[7:] elif line.startswith("data: "): data = json.loads(line[6:]) if event_type == "log": print(f"[{data['level'].upper()}] {data['message']}") if data.get("details"): print(f" Details: {data['details']}") elif event_type == "close": print("Stream closed:", data["reason"]) break ``` ```javascript JavaScript const accessToken = process.env.ACCESS_TOKEN; const sessionId = 'mbsess_abc123def456'; const eventSource = new EventSource( `https://api.aitronos.com/v1/meeting-buddy/sessions/${sessionId}/logs/stream`, { headers: { 'Authorization': `Bearer ${accessToken}` } } ); eventSource.addEventListener('log', (e) => { const data = JSON.parse(e.data); console.log(`[${data.level.toUpperCase()}] ${data.message}`); if (data.details) { console.log(' Details:', data.details); } }); eventSource.addEventListener('close', (e) => { const data = JSON.parse(e.data); console.log('Stream closed:', data.reason); eventSource.close(); }); eventSource.onerror = (e) => { console.error('SSE error:', e); eventSource.close(); }; ``` Response ```text 200 OK (text/event-stream) event: log data: {"session_id":"mbsess_abc123def456","level":"info","message":"Bot audio relay connected","timestamp":"2025-12-11T10:00:30Z","details":{"meeting_id":42}} : keepalive event: log data: {"session_id":"mbsess_abc123def456","level":"info","message":"Bot leaving meeting (end_session)","timestamp":"2025-12-11T10:30:00Z","details":null} event: close data: {"reason":"session_ended"} ``` ```json 404 Not Found { "success": false, "error": { "code": "SESSION_NOT_FOUND", "message": "Session not found", "type": "client_error", "status": 404, "details": { "session_id": "mbsess_abc123def456" }, "trace_id": "abc-123-def", "timestamp": "2025-12-11T10:00:00Z" } } ``` ```json 422 Validation Error { "success": false, "error": { "code": "INVALID_SESSION_ID_FORMAT", "message": "Invalid session_id format. Must start with 'mbsess_'", "type": "client_error", "status": 422, "details": { "session_id": "invalid_id" }, "trace_id": "abc-123-def", "timestamp": "2025-12-11T10:00:00Z" } } ``` ## Related Resources - [Stream Session Status](/docs/api-reference/meeting-buddy/session-status-stream) - [Stream Transcripts](/docs/api-reference/meeting-buddy/transcript-stream) - [Start Session](/docs/api-reference/meeting-buddy/start-session) - [Get Session Details](/docs/api-reference/meeting-buddy/get-session) - [Stop Session](/docs/api-reference/meeting-buddy/stop-session)