A “bond zone” is the near-certain end of a market: an outcome trading at, say, ≥ 95¢ (almost certain to win) or ≤ 5¢ (almost certain to lose). The close_to_bond event fires when a trade prints inside a zone you define, so you can react to outcomes that are effectively resolved before the oracle settles them.
The same event and filters are available two ways:
| Transport | How it arrives | Reference |
|---|
| Webhook | HTTP POST to your endpoint | close-to-bond callback |
| Websocket | Pushed over a live connection | close_to_bond alert |
When to use this
- Resolution front-running — surface markets the crowd already treats as decided, ahead of on-chain settlement.
- Risk / exit signals — alert when a position you hold flips to near-certain-loss so you can exit the remaining size.
- Mispricing scans — watch one side of a market for prints at the opposite extreme of where you think it should trade.
Defining the bond zone
The bond zone is defined entirely by how you combine min_probability and max_probability. The relationship between the two values selects one of four modes:
| You set | Mode | Fires when | bond_side |
|---|
min_probability only | Single high edge | probability ≥ min_probability | "high" |
max_probability only | Single low edge | probability ≤ max_probability | "low" |
Both, with min < max | Bounded range | min_probability ≤ probability ≤ max_probability | "high" |
Both, with min > max | Two edges | probability ≥ min_probability or probability ≤ max_probability | "high" or "low" |
min < max is a band, not a bond. If you set min_probability: 0.75 and max_probability: 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 probability 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 — trading at or above 90% or at or below 10% — set min_probability higher than max_probability:
{
"min_probability": 0.90,
"max_probability": 0.10
}
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 probability is read
- The trade’s
probability is used when present; otherwise its price is used as the probability.
- Trades with a probability of exactly
0 or 1 are skipped — there is no remaining risk to alert on.
probability and price are on a 0.0–1.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.
Examples
A near-certain-win alert for one specific market, Yes side only:
{
"condition_ids": ["0x19b3cbe24efa387cac21271dd869cb1121432cd212308f3a6e3ec2f7a8614b9d"],
"min_probability": 0.95,
"position_outcome_indices": [0]
}
Both extremes across all markets, excluding short-term Up/Down markets:
{
"min_probability": 0.90,
"max_probability": 0.10,
"exclude_shortterm_markets": true
}
Reading the payload
Every delivery tells you which zone was hit and the threshold it breached:
bond_side — "high" (near-certain) or "low" (near-zero).
threshold — the filter value that was breached. In bounded-range mode this is min_probability.
price / probability — the value that triggered the alert, on a 0.0–1.0 scale.
See the full field list on the websocket alert page.
Available filters
| Filter | Type | Description |
|---|
min_probability | number | High-edge / lower bound of the zone, 0.0–1.0. |
max_probability | number | Low-edge / upper bound of the zone, 0.0–1.0. |
condition_ids | string[] | Restrict to specific markets (max 500). |
position_ids | string[] | Restrict to specific outcome tokens (max 500). |
outcomes | string[] | Restrict by outcome name, e.g. ["Yes", "No"] (max 500). |
position_outcome_indices | number[] | Restrict by outcome index: 0 (Yes/Up) or 1 (No). |
event_slugs | string[] | Restrict to specific events (max 500). |
exclude_shortterm_markets | boolean | Exclude short-term Up/Down markets. |
At least one of min_probability or max_probability is required — without either, every trade in every market would fire.