> ## Documentation Index
> Fetch the complete documentation index at: https://docs.struct.to/llms.txt
> Use this file to discover all available pages before exploring further.

# Oracle Events

> Stream typed UMA oracle lifecycle events for Polymarket markets.

<Note>
  **Room ID:** `polymarket_oracle_events` \
  **Endpoint:** `wss://api.struct.to/ws` \
  **Rate:** 0.002 credits per message
</Note>

Stream typed UMA OOv2/OOv3 oracle lifecycle events plus CTF and NegRisk adapter resolution events. Filter by event type, condition ID, market slug, or event slug. If no filters are provided the room subscribes to all oracle events.

## Subscribe

All filters are optional. Combine multiple filters to narrow the stream. If all filters are empty and `subscribe_all` is false, the room automatically subscribes to all oracle events.

### Filters

| Filter               | Type       | Required | Description                                                       |
| -------------------- | ---------- | -------- | ----------------------------------------------------------------- |
| `condition_ids`      | `string[]` | No       | Filter by 64-char hex condition IDs (with or without 0x prefix)   |
| `market_slugs`       | `string[]` | No       | Filter by market slug                                             |
| `event_slugs`        | `string[]` | No       | Filter by event slug (subscribes to all markets under each event) |
| `oracle_event_types` | `string[]` | No       | Restrict to specific event types (see list below)                 |
| `status`             | `string`   | No       | One of `confirmed` (default), `pending`, or `all`                 |
| `subscribe_all`      | `boolean`  | No       | Explicitly subscribe to all oracle events                         |

#### Event types

Valid values for `oracle_event_types`:

`AssertionMade`, `AssertionDisputed`, `AssertionSettled`, `RequestPrice`, `ProposePrice`, `DisputePrice`, `Settle`, `QuestionResolved`, `QuestionEmergencyResolved`, `QuestionReset`, `QuestionInitialized`, `QuestionPaused`, `QuestionUnpaused`, `QuestionFlagged`, `QuestionUnflagged`, `ConditionResolution`, `NegRiskOutcomeReported`.

### Example

```json theme={null}
{
  "type": "join_room",
  "payload": {
    "room_id": "polymarket_oracle_events"
  }
}
```

```json theme={null}
{
  "type": "room_message",
  "payload": {
    "room_id": "polymarket_oracle_events",
    "message": {
      "action": "subscribe",
      "oracle_event_types": ["QuestionResolved", "ConditionResolution"],
      "condition_ids": ["0xabc123..."]
    }
  }
}
```

### Response

```json theme={null}
{
  "type": "oracle_events_stream_subscribe_response",
  "room_id": "polymarket_oracle_events",
  "data": {
    "condition_ids": ["0xabc123..."],
    "market_slugs": [],
    "event_slugs": [],
    "oracle_event_types": ["QuestionResolved", "ConditionResolution"],
    "status": "confirmed",
    "subscribe_all": false,
    "rejected": []
  }
}
```

## Events

### `oracle_event_update`

The payload is a discriminated union based on the `event_type` field. Each variant carries its own fields. All variants share an on-chain envelope (`id`, `hash`, `block`, `confirmed_at`, `log_index`, `block_index`, `oracle_contract`) and may include the optional market metadata `condition_id`, `question`, `image_url`, `slug`, `event_slug`.

#### AssertionMade

UMA OOv3 truth assertion submitted.

```json theme={null}
{
  "type": "oracle_event_update",
  "room_id": "polymarket_oracle_events",
  "status": "confirmed",
  "data": {
    "event_type": "AssertionMade",
    "id": "0xassert123",
    "hash": "0xasserthash",
    "block": 65000700,
    "confirmed_at": 1743500700,
    "log_index": 1,
    "block_index": 0,
    "oracle_contract": "0x157Ce2d672854c848c9b79C49a8Cc6cc89176a49",
    "assertion_id": "0x1111111111111111111111111111111111111111111111111111111111111111",
    "domain_id": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "claim": "0x59657300000000000000000000000000000000000000000000000000000000",
    "asserter": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
    "callback_recipient": "0xCB1822859cEF82Cd2Eb4E6276C7916e692995130",
    "escalation_manager": "0x0000000000000000000000000000000000000000",
    "caller": "0xCB1822859cEF82Cd2Eb4E6276C7916e692995130",
    "expiration_time": 1743600000,
    "currency": "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174",
    "bond": "5000000000",
    "identifier": "0x59455320204f5220204e4f000000000000000000000000000000000000000000",
    "condition_id": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
    "proposed_outcome": "Yes",
    "slug": "will-bitcoin-hit-100k",
    "event_slug": "bitcoin-price-markets"
  }
}
```

#### AssertionDisputed

UMA OOv3 assertion challenged within liveness.

```json theme={null}
{
  "type": "oracle_event_update",
  "room_id": "polymarket_oracle_events",
  "status": "confirmed",
  "data": {
    "event_type": "AssertionDisputed",
    "id": "0xdispute123",
    "hash": "0xdisputehash",
    "block": 65000800,
    "confirmed_at": 1743500800,
    "log_index": 4,
    "block_index": 0,
    "oracle_contract": "0x157Ce2d672854c848c9b79C49a8Cc6cc89176a49",
    "assertion_id": "0x1111111111111111111111111111111111111111111111111111111111111111",
    "caller": "0xCB1822859cEF82Cd2Eb4E6276C7916e692995130",
    "disputer": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
    "condition_id": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"
  }
}
```

#### AssertionSettled

UMA OOv3 assertion finalized (liveness expired or DVM resolved).

```json theme={null}
{
  "type": "oracle_event_update",
  "room_id": "polymarket_oracle_events",
  "status": "confirmed",
  "data": {
    "event_type": "AssertionSettled",
    "id": "0xsettle123",
    "hash": "0xsettlehash",
    "block": 65000900,
    "confirmed_at": 1743500900,
    "log_index": 2,
    "block_index": 0,
    "oracle_contract": "0x157Ce2d672854c848c9b79C49a8Cc6cc89176a49",
    "assertion_id": "0x1111111111111111111111111111111111111111111111111111111111111111",
    "bond_recipient": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
    "disputed": false,
    "settlement_resolution": true,
    "settle_caller": "0xCB1822859cEF82Cd2Eb4E6276C7916e692995130",
    "condition_id": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"
  }
}
```

#### RequestPrice

UMA OOv2 price request created (resolution lookup begins).

```json theme={null}
{
  "type": "oracle_event_update",
  "room_id": "polymarket_oracle_events",
  "status": "confirmed",
  "data": {
    "event_type": "RequestPrice",
    "id": "0xreq123",
    "hash": "0xreqhash",
    "block": 65001000,
    "confirmed_at": 1743501000,
    "log_index": 0,
    "block_index": 0,
    "oracle_contract": "0x157Ce2d672854c848c9b79C49a8Cc6cc89176a49",
    "requester": "0xCB1822859cEF82Cd2Eb4E6276C7916e692995130",
    "identifier": "0x59455320204f5220204e4f000000000000000000000000000000000000000000",
    "timestamp": "1743501000",
    "ancillary_data": "0x713a2057696c6c20425443206869742024313030483f",
    "currency": "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174",
    "reward": "0",
    "final_fee": "1500000000",
    "condition_id": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"
  }
}
```

#### ProposePrice

UMA OOv2 outcome proposed by a proposer.

```json theme={null}
{
  "type": "oracle_event_update",
  "room_id": "polymarket_oracle_events",
  "status": "confirmed",
  "data": {
    "event_type": "ProposePrice",
    "id": "0xpropose123",
    "hash": "0xproposehash",
    "block": 65001100,
    "confirmed_at": 1743501100,
    "log_index": 1,
    "block_index": 0,
    "oracle_contract": "0x157Ce2d672854c848c9b79C49a8Cc6cc89176a49",
    "requester": "0xCB1822859cEF82Cd2Eb4E6276C7916e692995130",
    "proposer": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
    "identifier": "0x59455320204f5220204e4f000000000000000000000000000000000000000000",
    "timestamp": "1743501000",
    "ancillary_data": "0x713a2057696c6c20425443206869742024313030483f",
    "proposed_price": 1000000000000000000,
    "expiration_timestamp": "1743600000",
    "currency": "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174",
    "condition_id": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
    "proposed_outcome": "Yes"
  }
}
```

#### DisputePrice

UMA OOv2 proposal challenged.

```json theme={null}
{
  "type": "oracle_event_update",
  "room_id": "polymarket_oracle_events",
  "status": "confirmed",
  "data": {
    "event_type": "DisputePrice",
    "id": "0xdispprice123",
    "hash": "0xdispricehash",
    "block": 65001200,
    "confirmed_at": 1743501200,
    "log_index": 3,
    "block_index": 0,
    "oracle_contract": "0x157Ce2d672854c848c9b79C49a8Cc6cc89176a49",
    "requester": "0xCB1822859cEF82Cd2Eb4E6276C7916e692995130",
    "proposer": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
    "disputer": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
    "identifier": "0x59455320204f5220204e4f000000000000000000000000000000000000000000",
    "timestamp": "1743501000",
    "ancillary_data": "0x713a2057696c6c20425443206869742024313030483f",
    "proposed_price": 1000000000000000000,
    "condition_id": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"
  }
}
```

#### Settle

UMA OOv2 request settled (proposer or DVM payout).

```json theme={null}
{
  "type": "oracle_event_update",
  "room_id": "polymarket_oracle_events",
  "status": "confirmed",
  "data": {
    "event_type": "Settle",
    "id": "0xs123",
    "hash": "0xshash",
    "block": 65001300,
    "confirmed_at": 1743501300,
    "log_index": 1,
    "block_index": 0,
    "oracle_contract": "0x157Ce2d672854c848c9b79C49a8Cc6cc89176a49",
    "requester": "0xCB1822859cEF82Cd2Eb4E6276C7916e692995130",
    "proposer": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
    "disputer": "0x0000000000000000000000000000000000000000",
    "identifier": "0x59455320204f5220204e4f000000000000000000000000000000000000000000",
    "timestamp": "1743501000",
    "ancillary_data": "0x713a2057696c6c20425443206869742024313030483f",
    "proposed_price": 1000000000000000000,
    "payout": "5000000000",
    "disputed": false,
    "condition_id": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"
  }
}
```

#### QuestionResolved

UMA CTF Adapter: market resolved with definitive outcome.

```json theme={null}
{
  "type": "oracle_event_update",
  "room_id": "polymarket_oracle_events",
  "status": "confirmed",
  "data": {
    "event_type": "QuestionResolved",
    "id": "0xresolved123",
    "hash": "0xresolvedhash",
    "block": 65001400,
    "confirmed_at": 1743501400,
    "log_index": 2,
    "block_index": 0,
    "oracle_contract": "0x157Ce2d672854c848c9b79C49a8Cc6cc89176a49",
    "condition_id": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
    "settled_price": 1000000000000000000,
    "proposed_outcome": "Yes",
    "slug": "will-bitcoin-hit-100k",
    "event_slug": "bitcoin-price-markets"
  }
}
```

#### QuestionEmergencyResolved

UMA CTF Adapter: admin emergency resolution.

```json theme={null}
{
  "type": "oracle_event_update",
  "room_id": "polymarket_oracle_events",
  "status": "confirmed",
  "data": {
    "event_type": "QuestionEmergencyResolved",
    "id": "0xemerg123",
    "hash": "0xemerghash",
    "block": 65001500,
    "confirmed_at": 1743501500,
    "log_index": 0,
    "block_index": 0,
    "oracle_contract": "0x157Ce2d672854c848c9b79C49a8Cc6cc89176a49",
    "condition_id": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
    "proposed_outcome": "No"
  }
}
```

#### QuestionReset

UMA CTF Adapter: dispute succeeded, market returns to active.

```json theme={null}
{
  "type": "oracle_event_update",
  "room_id": "polymarket_oracle_events",
  "status": "confirmed",
  "data": {
    "event_type": "QuestionReset",
    "id": "0xreset123",
    "hash": "0xresethash",
    "block": 65001600,
    "confirmed_at": 1743501600,
    "log_index": 0,
    "block_index": 0,
    "oracle_contract": "0x157Ce2d672854c848c9b79C49a8Cc6cc89176a49",
    "condition_id": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"
  }
}
```

#### QuestionInitialized

UMA CTF Adapter: questionID first initialized on-chain.

```json theme={null}
{
  "type": "oracle_event_update",
  "room_id": "polymarket_oracle_events",
  "status": "confirmed",
  "data": {
    "event_type": "QuestionInitialized",
    "id": "0xinit123",
    "hash": "0xinithash",
    "block": 65001700,
    "confirmed_at": 1743501700,
    "log_index": 1,
    "block_index": 0,
    "oracle_contract": "0x157Ce2d672854c848c9b79C49a8Cc6cc89176a49",
    "condition_id": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
    "creator": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
    "reward_token": "0x2791Bca1f2de4661ED88A30C99A7a9449Aa84174",
    "reward": "0",
    "proposal_bond": "5000000000"
  }
}
```

#### QuestionPaused / QuestionUnpaused

UMA CTF Adapter: market paused or unpaused by admin.

```json theme={null}
{
  "type": "oracle_event_update",
  "room_id": "polymarket_oracle_events",
  "status": "confirmed",
  "data": {
    "event_type": "QuestionPaused",
    "id": "0xpause123",
    "hash": "0xpausehash",
    "block": 65001800,
    "confirmed_at": 1743501800,
    "log_index": 0,
    "block_index": 0,
    "oracle_contract": "0x157Ce2d672854c848c9b79C49a8Cc6cc89176a49",
    "condition_id": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"
  }
}
```

#### QuestionFlagged / QuestionUnflagged

UMA CTF Adapter: market flagged for emergency resolution, or flag removed.

```json theme={null}
{
  "type": "oracle_event_update",
  "room_id": "polymarket_oracle_events",
  "status": "confirmed",
  "data": {
    "event_type": "QuestionFlagged",
    "id": "0xflag123",
    "hash": "0xflaghash",
    "block": 65002000,
    "confirmed_at": 1743502000,
    "log_index": 0,
    "block_index": 0,
    "oracle_contract": "0x157Ce2d672854c848c9b79C49a8Cc6cc89176a49",
    "condition_id": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef"
  }
}
```

#### ConditionResolution

CTF: positions become redeemable.

```json theme={null}
{
  "type": "oracle_event_update",
  "room_id": "polymarket_oracle_events",
  "status": "confirmed",
  "data": {
    "event_type": "ConditionResolution",
    "id": "0xcondres123",
    "hash": "0xcondreshash",
    "block": 65002200,
    "confirmed_at": 1743502200,
    "log_index": 5,
    "block_index": 0,
    "oracle_contract": "0x4D97DCd97eC945f40cF65F87097ACe5EA0476045",
    "condition_id": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
    "oracle": "0x157Ce2d672854c848c9b79C49a8Cc6cc89176a49",
    "proposed_outcome": "Yes"
  }
}
```

#### NegRiskOutcomeReported

NegRisk Adapter: neg-risk market outcome determined.

```json theme={null}
{
  "type": "oracle_event_update",
  "room_id": "polymarket_oracle_events",
  "status": "confirmed",
  "data": {
    "event_type": "NegRiskOutcomeReported",
    "id": "0xnegrisk123",
    "hash": "0xnegriskhash",
    "block": 65002300,
    "confirmed_at": 1743502300,
    "log_index": 0,
    "block_index": 0,
    "oracle_contract": "0xd91E80cF2E7be2e162c6513ceD06f1dD0dA35296",
    "condition_id": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
    "proposed_outcome": "Yes"
  }
}
```

<Note>
  **Pending events:** With `status: "pending"` or `status: "all"`, mempool entries are delivered as soon as the transaction is seen. Fields unavailable from mempool (`block`, `confirmed_at`, `log_index`, `block_index`) are omitted, and `received_at` (Unix milliseconds) is included instead.
</Note>
