Channels

Catalog

New, changed and deleted events and markets, one catalog_change frame per entity carrying its current state. Send { action: "subscribe", channel: "catalog", venues?, entities? }; no user auth required, and the app's disabled venues and categories apply. Subscribing again replaces the filter.

Live only, no replay. Subscribe first, then catch up with GET /catalog/changes (same item shape) from your last changedAt minus a minute, then apply buffered frames. Apply an item when its (version, changedAt) is newer than what you hold for (entity, id); duplicates around the catch-up are expected. On stream_interrupted listing catalog, catch up over REST again.

Send

Subscribe to (or unsubscribe from) catalog changes

venues limits changes to those venues (deletes always pass); entities to event and/or market. Server replies with subscribed / unsubscribed on channel catalog.

CatalogSubscribe · Subscribe to catalog changes

{  "action": "subscribe",  "channel": "catalog",  "venues": [    "string"  ],  "entities": [    "event"  ],  "id": "string"}

Receive

Current state of a created, updated or deleted event or market

CatalogChange · Catalog change

{  "type": "catalog_change",  "entity": "event",  "id": "string",  "op": "created",  "version": 0,  "changedAt": "string",  "venue": "polymarket",  "event": {    "id": "string",    "venue": "polymarket",    "externalIdentifier": "0xabc123",    "title": "string",    "slug": "string",    "status": "string",    "startDate": "string",    "endDate": "string",    "createdAt": "string",    "categories": [      {        "id": "string",        "name": "string"      }    ],    "matched": true,    "clusterAnchorId": "string",    "clusterVenues": [      "string"    ]  },  "market": {    "id": "string",    "venueEventId": "evt_xyz789",    "venue": "polymarket",    "externalIdentifier": "0xabc123",    "question": "string",    "shortTitle": "string",    "status": "string",    "startDate": "string",    "endDate": "string",    "createdAt": "string",    "outcomes": [      {        "id": "string",        "label": "Yes",        "title": "string"      }    ],    "categories": [      {        "id": "string",        "name": "string"      }    ],    "matched": true,    "clusterAnchorId": "string",    "clusterVenues": [      "string"    ]  }}

On this page