Event: price_threshold
Endpoint: wss://api.struct.to/ws/alerts
Cost: 0.2 credits per event
Get notified when an outcome’s price (implied probability) crosses a target level. It is edge-triggered: it fires once on the crossing, not on every trade that stays past the level. Set min_probability for an upward target, max_probability for a downward target, or both to watch from either side.
Filters
| Filter | Type | Required | Description |
|---|
min_probability | number | Yes* | Upward target, 0.0-1.0. Fire when the price crosses up to ≥ this value (e.g. 0.75). *At least one of min_probability or max_probability is required. |
max_probability | number | Yes* | Downward target, 0.0-1.0. Fire when the price crosses down to ≤ this value (e.g. 0.25). *At least one of min_probability or max_probability is required. |
one_shot | boolean | No | Unsubscribe after the first delivery. Requires position_ids or condition_ids |
fire_if_already_past | boolean | No | Fire immediately if the first observed price is already past the target |
condition_ids | string[] | No | Restrict to specific conditions (max 500) |
position_ids | string[] | No | Restrict to specific positions (max 500) |
outcomes | string[] | No | Filter by outcome name, e.g. ["Yes", "No"] (max 500) |
position_outcome_indices | number[] | No | Filter by outcome index: 0 or 1 (max 500) |
event_slugs | string[] | No | Restrict to specific events (max 500) |
tags | string[] | No | Restrict to markets carrying any of these tags or category names, case-insensitive (max 500) |
series_slugs | string[] | No | Restrict to markets in any of these series by slug, case-insensitive (max 500) |
exclude_shortterm_markets | boolean | No | Exclude short-term updown markets from results |
Scope by market taxonomy. tags matches a market’s own tags or its category, given as the display label shown on Polymarket (for example "Sports", "Politics", or "FIFA World Cup"), not a slug. series_slugs matches the market’s parent series by slug (for example "nba-finals"). Both are case-insensitive, accept up to 500 values each, and an empty or omitted list applies no taxonomy restriction.
Subscribe
Fire when a specific market’s YES outcome crosses up through 75%:
{
"op": "subscribe",
"event": "price_threshold",
"condition_ids": ["0x4fec624c0ff2bfae89956cebd6fbc9c58f995f824382dc587dc5a32a4b15940b"],
"min_probability": 0.75
}
Response
{
"event": "price_threshold",
"timestamp": 1775913505260,
"data": {
"trader": "0x9d84cef98b41a5b88dafb55c05e9a7e0f1a4f4d6",
"taker": "0x4bfb41d5b3570defd03c39a9a4d8de6bd8b8982e",
"position_id": "452312848583266388373324160190187140051835877600158453279131187530910662656",
"condition_id": "0x4fec624c0ff2bfae89956cebd6fbc9c58f995f824382dc587dc5a32a4b15940b",
"outcome": "Yes",
"outcome_index": 0,
"question": "Will candidate X win the 2028 election?",
"market_slug": "will-candidate-x-win",
"event_slug": "us-presidential-election-2028",
"trade_id": "0x9a8b7c6d5e4f3a2b1c0d9e8f7a6b5c4d3e2f1a0b",
"hash": "0x1f2e3d4c5b6a7988deadbeefcafebabe0011223344556677889900aabbccddee",
"block": 19456789,
"confirmed_at": 1713012000,
"amount_usd": 5000.00,
"shares_amount": 5263.16,
"fee": 50.00,
"side": "Buy",
"previous_price": 0.72,
"price": 0.76,
"probability": 0.76,
"direction": "up",
"threshold": 0.75
}
}