Status stream
Follow one relay operation live with Server-Sent Events.
Stream an operation
Opens a Server-Sent Events stream that pushes status changes for one operation. Use it instead of polling when you want updates within a second. See Track status for full client code.
data: {"id":"chain_relayers.operation.progressed","payload":{"operationId":"8d0f...","status":"executing","phase":"broadcasting_user_tx"},"timestamp":1792577260000}
data: {"id":"chain_relayers.operation.completed","payload":{"operationId":"8d0f...","status":"completed","txHash":"c0ffee..."},"timestamp":1792577267000}
:heartbeatWith curl, pass -N so output is not buffered.
Events
Each event is one data: line holding { id, payload, timestamp }.
id | When |
|---|---|
chain_relayers.operation.status_changed | The status moved, for example reserved to executing. |
chain_relayers.operation.progressed | A step inside a status finished, for example a broadcast. |
chain_relayers.operation.completed | Final: success. |
chain_relayers.operation.failed | Final: failure. payload.errorCode says why. |
chain_relayers.operation.voided | Final: cancelled. |
chain_relayers.operation.expired | Final: expired. |
Every payload has operationId. Most also have status and, when known, txHash and errorCode. Ignore event ids and fields you do not know. A payload over 4 KB is cut down to the key fields with "truncated": true. A :heartbeat comment arrives every 30 seconds.
Good to know
- The stream does not replay past events. Open it, then read the operation once with Get an operation so you miss nothing.
- Close the stream after a final event. If it drops, reconnect and read the operation again.
- Browser
EventSourcecannot send headers. Stream from your server withx-api-keyand forward updates to your frontend.
Errors: 400 Invalid operationId. Expected UUID., 404 Operation not found (unknown or not yours).