Skip to main content
GET
/
polymarket
/
market
/
oracle-events
List oracle events
curl --request GET \
  --url https://api.struct.to/v1/polymarket/market/oracle-events
[
  {
    "id": "<string>",
    "hash": "<string>",
    "trader": {
      "address": "<string>",
      "name": "<string>",
      "pseudonym": "<string>",
      "profile_image": "<string>",
      "x_username": "<string>",
      "verified_badge": true
    },
    "side": "<string>",
    "position_id": "<string>",
    "usd_amount": 123,
    "shares_amount": 123,
    "price": 123,
    "exchange": "CTFExchange",
    "trade_type": "OrderFilled",
    "block": 1,
    "confirmed_at": 1,
    "received_at": 1,
    "log_index": 1,
    "block_index": 1,
    "order_hash": "<string>",
    "taker": "<string>",
    "condition_id": "<string>",
    "outcome": "<string>",
    "outcome_index": 1,
    "question": "<string>",
    "image_url": "<string>",
    "slug": "<string>",
    "event_slug": "<string>",
    "probability": 123,
    "fee": 123,
    "fee_shares": 123,
    "fee_pct": 123,
    "builder_code": "<string>",
    "builder_fee": 123
  }
]

Query Parameters

condition_ids
string

Comma-separated condition IDs (max 20)

event_types
string

Comma-separated event names: Initialization, Proposal, Dispute, Settled, Resolution, ConditionResolution, Reset, Flag, Unflag, Pause, Unpause, ManualResolution, NegRiskOutcomeReported. Empty = all oracle event types.

from
integer<int64>

Start timestamp (Unix seconds)

to
integer<int64>

End timestamp (Unix seconds)

limit
integer<int32>

Results per page (default 10, max 250)

Required range: x >= 0
offset
integer<int32>

Pagination offset. Takes precedence over pagination_key.

Required range: x >= 0
pagination_key
string

Cursor-based pagination key

sort_desc
boolean

Sort direction (default true = newest first)

Response

200 - application/json

Oracle events matching the filter

Tagged enum for all trade types — serializes with "trade_type": "..." discriminator and only includes fields relevant to each type.

id
string
required
hash
string
required
trader
object
required

Trader profile info - backwards compatibility

side
string
required
position_id
string
required
usd_amount
number<double>
required
shares_amount
number<double>
required
price
number<double>
required
exchange
enum<string>
required

Polymarket exchange contract types. repr(u8) discriminants double as the database column value — DO NOT renumber existing variants. New variants get fresh numbers.

Available options:
CTFExchange,
NegRiskExchange,
ConditionalTokens,
NegRiskAdapter,
CTFExchangeV2,
NegRiskExchangeV2,
Unknown
trade_type
enum<string>
required
Available options:
OrderFilled
block
integer<int64> | null
Required range: x >= 0
confirmed_at
integer<int64> | null
Required range: x >= 0
received_at
integer<int64> | null
Required range: x >= 0
log_index
integer<int64> | null
Required range: x >= 0
block_index
integer<int64> | null
Required range: x >= 0
order_hash
string | null
taker
string | null
condition_id
string | null
outcome
string | null
outcome_index
integer<int32> | null
Required range: x >= 0
question
string | null
image_url
string | null
slug
string | null
event_slug
string | null
probability
number<double> | null
fee
number<double> | null
fee_shares
number<double> | null
fee_pct
number<double> | null
builder_code
string | null

CLOB V2 builder code (lower-cased "0x..." bytes32 hex). Always absent for V1 trades and may be 0x0000… for V2 trades placed without a builder code.

builder_fee
number<double> | null

Builder fee in USDC. Absent when no builder code is attached.

Last modified on April 25, 2026