On this page

The tenant events stream delivers real-time Server-Sent Events (SSE) for all activity across your tenant - sandbox lifecycle changes, deployments, webhook deliveries, and more. Subscribe once and receive events for all your resources.

Base path: /api/v1/events/stream


Endpoints

MethodPathDescription
GET/api/v1/events/streamOpen tenant-wide SSE event stream

Open Event Stream

GET /api/v1/events/stream

Upgrades to an SSE stream. The connection stays open until the client disconnects or the server closes it. A : heartbeat comment is sent every 15 seconds to keep the connection alive through proxies.

Auth

Authorization: Bearer msk_...

Query Parameters

ParameterTypeRequiredDescription
typesstringNoComma-separated glob patterns to filter events (e.g. sandbox.*,webhook.delivered)

Response - 200 OK (text/event-stream)

Each event is a standard SSE frame:

id: evt_01hwxyz...
event: sandbox.ready
data: {"type":"sandbox.ready","id":"sbx_abc123","status":"running","tenant_id":"...","ts":"2026-05-26T10:14:23Z"}

id: evt_01hwyza...
event: deployment.succeeded
data: {"type":"deployment.succeeded","id":"dep_xyz456","url":"https://my-app.miosa.app","ts":"2026-05-26T10:15:01Z"}

: heartbeat

Event Shape

All events share a common envelope:

{
  "type": "sandbox.ready",
  "id": "sbx_abc123",
  "tenant_id": "ten_...",
  "ts": "2026-05-26T10:14:23Z"
}

Additional fields vary by event type (see table below).


Event Types

Sandbox Events

TypeDescriptionExtra Fields
sandbox.createdSandbox provisionedimage, workspace_id
sandbox.readySandbox reached running statusstatus
sandbox.errorSandbox failed to starterror, reason
sandbox.destroyedSandbox deleted-
sandbox.pausedSandbox vCPUs suspended-
sandbox.resumedSandbox vCPUs resumed-

Computer Events

TypeDescriptionExtra Fields
computer.createdComputer provisionedsize, workspace_id
computer.runningComputer reached running status-
computer.stoppedComputer stopped-
computer.deletedComputer deleted-

Deployment Events

TypeDescriptionExtra Fields
deployment.build_startedBuild job enqueuedversion_id
deployment.succeededBuild completed and promotedurl, version_id
deployment.failedBuild or promotion failederror
deployment.rollbackVersion rolled backfrom_version, to_version

Webhook Events

TypeDescriptionExtra Fields
webhook.deliveredOutgoing webhook POST succeededwebhook_id, status_code
webhook.failedOutgoing webhook POST failedwebhook_id, attempt, error

Filtering with types

Pass a comma-separated list of glob patterns. The * wildcard matches any suffix segment:

?types=sandbox.*           # all sandbox events
?types=sandbox.*,computer.running
?types=deployment.succeeded,deployment.failed

An empty types parameter (or no parameter) delivers all events.


Reconnection

On disconnect, reconnect using the Last-Event-ID header set to the last id you received. The server will resume from that cursor, replaying up to 60 seconds of backlogged events.

GET /api/v1/events/stream
Authorization: Bearer msk_...
Last-Event-ID: evt_01hwxyz...

Examples

Was this helpful?