How to price an esports parlay with an API

GET /v7/{sport}/parlays does two jobs on one route: price a slip you already built, or scan the board and hand you ranked parlays. Either way, every leg prices on the one book you name — and the fair value is computed from the other venues.

Price mode: your ticket, our fair price

Pass ticket= as comma-separated legs in the form kr_match_id:market:selection. The response returns the combined decimal and American price, the consensus fair probability, and EV — for the whole ticket and for each leg.

curl -H "X-API-Key: YOUR_KEY" \
  "https://kashrock.up.railway.app/v7/cs2/parlays?book=thunderpick\
&ticket=kr_cs2_fnatic-vs-phantom-07-10-2026:match_winner:kr_tm_d60a39d59027"

Discover mode: the board does the hunting

Omit ticket and the endpoint ranks parlays on your book — size=2 or size=3 legs, non-negative EV by default. An empty board comes back as reason: no_parlays; add include=all to inspect the negative-EV tickets too.

{
  "mode": "discover",
  "book": "thunderpick",
  "parlays": [{
    "legs": [{
      "name": "Fnatic",
      "american": -208,
      "fair_probability": 0.628141,
      "ev_pct": -6.98,
      "fair_books": ["1xbet", "betonline", "betway", "dexsport"],
      "fair_excludes_leg_book": true
    }],
    "american": 119,
    "ev_pct": -12.89
  }]
}

The leg book never grades itself

fair_excludes_leg_book: true is the important field: the consensus fair price for a leg is built from the venues listed in fair_books— never the book selling the ticket. A sportsbook can't mark its own homework, so the EV you read means something.

Full contract on the parlays endpoint docs and the parlay API page.

KashRock is an independent data provider, not a sportsbook. Data is for informational and analytical use.

Frequently asked questions

What plan do I need for the parlay endpoint?

Hobby ($29/mo) and up. The free Sandbox covers matches, props, players, live and results — parlays, lines and flow start at Hobby.

What does a leg look like?

Each leg is kr_match_id:market:selection — for example kr_cs2_fnatic-vs-phantom-07-10-2026:match_winner:kr_tm_d60a39d59027 — where the selection is the kr_tm_* team id you are backing on that market.

Why is my leg list rejected across books?

Every leg must price on the single book named in book=. A parlay priced on one book cannot borrow a leg's price from another venue — that is what keeps the combined price placeable.

Is same-game parlay supported?

No. Legs are independent main lines across different matches. There is no same-game correlation modelling, which is exactly what keeps the EV figure honest.