lead.executable event describes a two-leg purchase that, because of a proven relation between two markets, pays at least $1 per pair in every outcome, and that could be filled at a profit when both order books were read. The body is the LeadEvent schema in the API reference; this page explains each field and walks through the numbers of one delivery. Slack subscriptions receive a text rendering instead (see the overview).
Example delivery
Fields
All fields are always present. Amounts are exact decimal strings (Decimal in the reference), never floats; timestamps are RFC 3339 in UTC.
Envelope
lead
Which sides cover which relation is fixed:
lead.depth
Walks both books’ asks, taking quantity while each additional pair, with both legs’ taker fees, still costs less than the $1 it pays. Whole contracts and each venue’s order minimum are then applied.
limited_by values
Issues and caveats
Every string starts with a category:caveats always contains unverified: top-of-book depth is unknown; asks are discovery observations. It describes the legs[].ask_usd estimate, which depth supersedes; read depth for the sizing and the caveats for what was assumed.
Worked example
Taking the delivery above:- Relation. Kalshi’s “Kansas City at Las Vegas winner?” is proven equivalent to Polymarket’s “Chiefs win”, so buying No on Kalshi and Yes on Polymarket pays exactly $1 per pair whichever team wins.
- Top of book. At the crawl, the asks were 30¢ and 64¢: 94¢ for a guaranteed $1.
- Depth. Walking both books, 60 pairs could be bought before Kalshi’s No side ran out (
limited_by: depth). The principal for 60 pairs was $56.40; the Kalshi leg's taker fee at the series rate came to $0.89 after rounding up to the cent, and the Polymarket market charges no fee. - Net.
60 − 56.40 − 0.89 = 2.71. With the subscription’s defaultmin_netof1, the lead was delivered. - Caveats. The fee is estimated, and the cross-venue caveat applies: if the game is postponed or cancelled, the two venues may settle differently, and the pair is no longer guaranteed.
Handling advice
- Acknowledge with
2xxbefore doing anything slow; Routeur waits 10 seconds in total. - Deduplicate on
Routeur-Delivery; the same lead can also legitimately arrive again after six hours or when its net doubles, with a new delivery id and a newgraph_run. - Treat
net_usdas the ceiling for the whole size, not a per-contract figure. - Compare
versionwith the one you built against and log anything else rather than failing.
Related
- Webhooks overview: what fires, filters, retries.
- Verifying signatures: a worked signature over this exact body.
- Leads and Relations: how leads are derived from proven relations.
- Cross-venue: what settles differently across venues.