Skip to main content
Event: price_threshold
Cost: 0.2 credits per delivery
The price_threshold event fires when an outcome’s price (implied probability) crosses a target level you set. It is edge-triggered: it fires once on the crossing, not on every trade that stays past the level. The full payload schema is in the auto-generated Price Threshold callback reference; this page documents the filters and matching behavior.

When to use this

  • Alert the moment an outcome crosses up through a level (e.g. YES reaches 75%) or down through one (e.g. YES falls to 25%).
  • Build one-time triggers that delete themselves after firing, with one_shot.
  • Catch positions that are already past your target when you subscribe, with fire_if_already_past.

Defining the threshold

Set min_probability for an upward target (fire when the price crosses up to ≥ that value) and max_probability for a downward target (fire when the price crosses down to ≤ that value). At least one is required; set both to watch a position from either side. By default the event waits for a real crossing: it needs a prior observation on the other side of the target before it fires. Set fire_if_already_past to fire immediately when the first observed price is already past the target.

Subscription filters

Add these to the filters object when you create the subscription. At least one of min_probability or max_probability is required.
FilterTypeDescription
min_probabilitynumberUpward target, 0.01.0. Fire when the price crosses up to ≥ this value (e.g. 0.75).
max_probabilitynumberDownward target, 0.01.0. Fire when the price crosses down to ≤ this value (e.g. 0.25).
one_shotbooleanDelete the subscription after its first delivery (fire-and-delete). Requires position_ids or condition_ids. Defaults to false.
fire_if_already_pastbooleanFire immediately if the first observed price is already past the target, with no prior baseline. Defaults to false.
condition_idsstring[]Restrict to specific markets by condition ID (max 500).
position_idsstring[]Restrict to specific outcome tokens by position ID (max 500).
outcomesstring[]Restrict by outcome name, e.g. ["Yes", "No"] (max 500).
position_outcome_indicesnumber[]Restrict by outcome index: 0 (Yes/Up) or 1 (No).
event_slugsstring[]Restrict to specific events by slug (max 500).
tagsstring[]Restrict to markets carrying any of these tags or category names, case-insensitive (max 500).
series_slugsstring[]Restrict to markets in any of these series by slug, case-insensitive (max 500).
exclude_shortterm_marketsbooleanExclude short-term Up/Down markets.
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.

Example

Fire once when a specific market’s YES outcome crosses up through 75%, then delete the subscription:
{
  "url": "https://your-server.com/webhooks",
  "event": "price_threshold",
  "filters": {
    "condition_ids": ["0x4fec624c0ff2bfae89956cebd6fbc9c58f995f824382dc587dc5a32a4b15940b"],
    "min_probability": 0.75,
    "one_shot": true
  }
}

Notes

  • The event is edge-triggered: it fires on the transition past the target, then re-arms once the price moves back to the other side (unless one_shot deleted the subscription).
  • The payload reports the crossing direction ("up" or "down"), the threshold that was crossed, and previous_price (the baseline the crossing was measured from).
  • one_shot requires position_ids or condition_ids so the subscription targets a bounded set of markets.
Last modified on June 15, 2026