Skip to main content
Event: close_to_bond
Cost: 0.2 credits per delivery
The close_to_bond callback fires when a trade occurs at the near-certain end of a market (for example an outcome trading at ≥ 95¢ or ≤ 5¢). The full callback schema is in the auto-generated Close to bond callback reference; this page explains the one part the schema can’t show on its own: how the price filters define the zone.

Defining the bond zone

The bond zone is defined entirely by how you combine min_price and max_price. The relationship between the two values selects one of four modes:
min < max is a band, not a bond. If you set min_price: 0.75 and max_price: 0.90, you do not get “fires above 90% or below 75%”. Because min < max, it switches to bounded-range mode and fires only when the price lands inside the 75–90% band. To alert on the two near-certain extremes, you must set min > max (see below).

Alerting on near-certain outcomes

To get notified when an outcome becomes near-certain in either direction (at or above 90% or at or below 10%), set min_price higher than max_price:
Because 0.90 > 0.10, this is read as two separate edges. A trade at 96¢ fires with bond_side: "high"; a trade at 4¢ fires with bond_side: "low". For a single edge, set just one of the two.

How price is read

  • The traded position’s own price is used: the price of the exact outcome token (position_id) that printed.
  • Trades at a price of exactly 0 or 1 are skipped, since there is no remaining risk to alert on.
  • price is on a 0.01.0 scale (so 95¢ = 0.95).

Picking the right side

On a binary market, “YES at ≤10%” and “NO at ≥90%” are the same event priced from opposite tokens. If you add position_outcome_indices: [0] you will only ever see trades that print on the Yes/Up token (index 0); trades on the No token (index 1) won’t fire even when they hit the same bond zone. Omit position_outcome_indices to catch the zone regardless of which side the trade prints on.

Subscription filters

Add these to the filters object when you create the subscription. At least one of min_price or max_price is required.
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.
For a worked walkthrough across both webhooks and websockets, see the Bond-zone alerts guide.
Last modified on July 13, 2026