Skip to main content
The GET /v8/missions/{runId}/events endpoint opens a durable, resumable Server-Sent Events (SSE) stream for a mission. As the agent executes each step, the gateway emits a typed event that you can consume in real time. You can reconnect at any point in the stream’s history by sending the Last-Event-ID header — the gateway maintains a bounded replay window so you never miss events across brief network interruptions. The stream closes automatically once the mission reaches a terminal state (succeeded, failed, or cancelled).

Endpoint

Required scope: missions:read Response content type: text/event-stream Required headers: Optional headers:

Path Parameters

string (UUID)
required
The unique run identifier returned when you created the mission via POST /v8/missions. Must be a valid UUID v7.

SSE Event Format

Each event conforms to the WHATWG EventSource specification. Events carry three lines:
Example SSE event

Event Types

Events that arrive after a mission.completed, mission.failed, or mission.cancelled event are informational trailing events only. Do not assume the stream will emit additional state-changing events once a terminal event is received.

Example: Consuming with curl


SDK Equivalent

Returns: AsyncGenerator<PraxaSseEvent>
The SDK’s missionEvents async generator closes automatically when the stream reaches a terminal event (mission.completed, mission.failed, or mission.cancelled). You do not need to call .return() or wrap the loop in a try/finally block for normal termination. For early exits, use break inside your for await loop and the generator will clean up the underlying HTTP connection.

Error Responses

Last modified on August 14, 2026