Real-time lifecycle events stream for events and markets with resume capability.
Query Parameters:
- since=<uint64> Last applied seq for resume (optional; must be >0; absent or 0 → start from live tail)
- event_id=<id> Repeatable; filter by event_id (includes all markets of the event)
- market_id=<id> Repeatable; filter by market_id
- lang=<code> Repeatable; filter by language code (en, pt, id). Filters LocalizedText fields in payloads. If omitted, all available locales are included.
Resume Semantics:
- Client connects with since=S (last applied seq)
- Server replays frames with seq >= S in order
- Sends backlog_end (last_seq = current max)
- Continues live streaming If S > current max → immediate live (no backlog) If S too old (retention gap) → error frame (code=resume_too_old) then close (4009)
Idempotency / Ordering:
- seq strictly monotonic; no gaps (gap ⇒ operational incident)
- Client drops any frame with seq <= last_applied_seq
- Expected next seq = last_applied_seq + 1 (else trigger reconnect + resume)
Event Types:
- event.created: New event created with full definition
- event.status_changed: Event status changed (only status fields)
- event.settled: Event resolved (includes expiration_value and resolved_market_id; either may be null)
- event.voided: Event cancelled (includes void_reason)
- market.created: New market created with full definition
- market.status_changed: Market status changed (only status fields)
- market.details_changed: Market details changed (title, subtitles, floor_strike)
- market.settled: Market resolved (includes result, settlement_price, expiration_value)
- market.voided: Market cancelled
Market Details At Resolution:
- market.details_changed can arrive on a closed market at resolution, with a new floor_strike
- It always comes before market.settled and event.settled of the same event
- expiration_value in those two events matches the new floor_strike, and can carry more decimals than usual
Heartbeats:
- Sent when no lifecycle_update within configured interval
- Heartbeat does NOT advance seq; only lifecycle_update frames advance seq
- Heartbeat and backlog_end both repeat the last data seq
Flow Control:
- Server may enforce max_pending_frames/bytes and close with code 4008 (flow_control)
Close Codes: 1000 normal 1001 going_away 1011 internal_error 4008 flow_control 4009 resume_too_old / protocol_version 4401 unauthorized
Operation WebSockets-specific information
-
Hide headers attributes Show headers attributes object
-
Broker access key identifier
Format should match the following pattern:
^[A-Za-z0-9._~-]{1,64}$. -
RFC3339 timestamp with milliseconds
-
Keyed BLAKE2b-256 signature hex lowercase
Format should match the following pattern:
^[0-9a-f]{64}$.
-
-
Hide query attributes Show query attributes object
-
Resume from last applied seq (inclusive). Must be >0. If omitted or 0, start from live tail.
Minimum value is
1. -
Repeatable filter by event_id. Includes all markets of the event. Absent → all events accessible to broker.
-
Repeatable filter by market_id. Absent → all markets accessible to broker.
-
Repeatable filter by language code. Filters localized text fields in payloads. If omitted, all available locales are included in each payload.
Values are
en,pt, orid.
-
Event/Market Lifecycle Update Frame
Event or market lifecycle state change notification
Payload
-
Value is
event_update. -
Monotonic sequence for lifecycle events
Minimum value is
0. -
Timestamp in nanoseconds
-
Event ID (if applicable)
-
Market ID (if applicable)
-
Lifecycle event type
Values are
event.created,event.status_changed,event.settled,event.voided,market.created,market.status_changed,market.details_changed,market.settled, ormarket.voided. payload
object Required One of: Hide attributes Show attributes
-
Localized text content. When lang filter is applied, only requested locales are included. When lang filter is omitted, all available locales (en, pt, id) are included.
-
Localized title of the recurring series this event belongs to. Null when the event's template defines no series title. Absent in payloads emitted before this field was introduced.
-
Localized text content. When lang filter is applied, only requested locales are included. When lang filter is omitted, all available locales (en, pt, id) are included.
-
Values are
cryptoorforex. -
Event series meta tag. Empty = standalone event. Non-empty values indicate the event belongs to a recurring series with the given interval.
Values are
,1min,5min,15min,1h,4h, or1d. -
- open: event is open, trading on markets is open or will be open (market statuses: unopened, pre-open, active, or suspended)
- closed: event is closed, trading stopped, markets awaiting resolution and settlement
- settled: all markets resolved and payouts completed
- voided: event cancelled, all markets voided, contracts refunded
Values are
open,closed,settled, orvoided. -
Array of market_ids belonging to this event
Hide attributes Show attributes
-
- open: event is open, trading on markets is open or will be open (market statuses: unopened, pre-open, active, or suspended)
- closed: event is closed, trading stopped, markets awaiting resolution and settlement
- settled: all markets resolved and payouts completed
- voided: event cancelled, all markets voided, contracts refunded
Values are
open,closed,settled, orvoided. -
- open: event is open, trading on markets is open or will be open (market statuses: unopened, pre-open, active, or suspended)
- closed: event is closed, trading stopped, markets awaiting resolution and settlement
- settled: all markets resolved and payouts completed
- voided: event cancelled, all markets voided, contracts refunded
Values are
open,closed,settled, orvoided.
Hide attributes Show attributes
-
Final asset value as string. Not necessarily a price, and not always numeric: it carries whatever value the settlement source publishes for the outcome.
nullif the resolution source publishes no closing value; the outcome is then carried byresolved_market_id, or by the per-marketresultwhen that is null too. -
Market ID of the winning market.
nullwhen no market won, and also when more than one won: this field carries a single winner and cannot express several. Read the per-marketresultto see the outcome of every market. -
Actual resolution timestamp
Hide attributes Show attributes
-
Market ID
-
Index of the market within the event
-
Localized text content. When lang filter is applied, only requested locales are included. When lang filter is omitted, all available locales (en, pt, id) are included.
-
Localized text content. When lang filter is applied, only requested locales are included. When lang filter is omitted, all available locales (en, pt, id) are included.
-
Localized text content. When lang filter is applied, only requested locales are included. When lang filter is omitted, all available locales (en, pt, id) are included.
-
Lower boundary for strike range (NULL for first market)
-
Upper boundary for strike range (NULL for last market)
-
Whether lower_bound is inclusive in the range
-
Whether upper_bound is inclusive in the range
-
- unopened: created, not initialized in CLOB
- pre-open: loaded in CLOB (MM can already place liquidity)
- suspended: market open, but new orders are temporarily declined
- active: market open for order acceptance
- closed: closed, awaiting resolution; trading stopped, orders no longer accepted
- settled: market resolved, payouts completed
- voided: market cancelled, contracts refunded
Values are
unopened,pre-open,active,suspended,closed,settled, orvoided. -
Monotonic revision of the market status from Event Service
-
Written when the event resolves, so it appears before the market reaches settled.
- yes: YES is the winner
- no: NO is the winner
- empty: no result yet, or the market was voided
Values are
yes,no, or. -
Values are
greater,greater_or_equal,less,less_or_equal,between, orcustom. -
Minimum expiration value that leads to a YES settlement
-
Maximum expiration value that leads to a YES settlement
-
Expiration value that leads to a YES settlement when strike_type=custom
Hide attributes Show attributes
-
Monotonic revision of the market status from Event Service
-
- unopened: created, not initialized in CLOB
- pre-open: loaded in CLOB (MM can already place liquidity)
- suspended: market open, but new orders are temporarily declined
- active: market open for order acceptance
- closed: closed, awaiting resolution; trading stopped, orders no longer accepted
- settled: market resolved, payouts completed
- voided: market cancelled, contracts refunded
Values are
unopened,pre-open,active,suspended,closed,settled, orvoided. -
- unopened: created, not initialized in CLOB
- pre-open: loaded in CLOB (MM can already place liquidity)
- suspended: market open, but new orders are temporarily declined
- active: market open for order acceptance
- closed: closed, awaiting resolution; trading stopped, orders no longer accepted
- settled: market resolved, payouts completed
- voided: market cancelled, contracts refunded
Values are
unopened,pre-open,active,suspended,closed,settled, orvoided.
Hide attributes Show attributes
-
Localized text content. When lang filter is applied, only requested locales are included. When lang filter is omitted, all available locales (en, pt, id) are included.
-
Localized text content. When lang filter is applied, only requested locales are included. When lang filter is omitted, all available locales (en, pt, id) are included.
-
Localized text content. When lang filter is applied, only requested locales are included. When lang filter is omitted, all available locales (en, pt, id) are included.
-
Minimum expiration value that leads to a YES settlement
-
Monotonic revision of the market status from Event Service
Hide attributes Show attributes
-
Winner (YES or NO)
Values are
yesorno. -
Final asset value as string. Not necessarily a price, and not always numeric: it carries whatever value the settlement source publishes for the outcome.
nullif the resolution source publishes no closing value, in which case the outcome is carried byresult. -
Monotonic revision of the market status from Event Service
{
"type": "event_update",
"seq": 42,
"ts_ns": 42,
"event_id": "string",
"market_id": "string",
"event_type": "event.created",
"payload": {
"event_id": "string",
"title": {
"en": "string",
"pt": "string",
"id": "string"
},
"series_title": {
"en": "string",
"pt": "string",
"id": "string"
},
"rules_primary": {
"en": "string",
"pt": "string",
"id": "string"
},
"category": "crypto",
"image_url": "string",
"series": "",
"status": "open",
"void_reason": "string",
"created_at": "2026-05-04T09:42:00Z",
"opens_at": "2026-05-04T09:42:00Z",
"closes_at": "2026-05-04T09:42:00Z",
"settlement_sources": [
{
"name": "string",
"url": "string",
"underlying": {
"base_currency": "string",
"quote_currency": "string"
}
}
],
"markets": [
"string"
]
}
}
{
"type": "heartbeat",
"seq": 42,
"ts_ns": 42,
"payload": {
"interval_sec": 42
}
}
{
"type": "backlog_end",
"seq": 42,
"ts_ns": 42,
"payload": {
"last_seq": 42
}
}