pointsbet_sgm_price
Price a PointsBet same game multi using your chosen selections. Submit an event key and outcome pairs to get the correlation-adjusted combined price without multiplying individual odds yourself.
Instructions
PRICE A SAME GAME MULTI you choose — give it selections from one PointsBet event, get the correlation-adjusted combined price. Prices combinations PointsBet has not pre-built (for the ones it has, see pointsbet_preprice_multis).
Returns: {success: true, price: 3.6, message: null, invalidSelections: null} — VERIFIED live 2026-08-27 against AFL Western Bulldogs v Collingwood (event 2860313).
THE PRICE IS NOT THE PRODUCT OF THE LEGS, which is the entire reason to ask. Match Result Bulldogs (1.96) with Over 169.5 (1.90) returns 3.60, not 3.724. Combine that same 1.96 with Bulldogs +1.5 (1.90) and it returns 1.96 FLAT — the line leg is implied by the head-to-head, so it is worth nothing, against a naive 3.724. Never multiply PointsBet legs yourself; the error runs to tens of percent.
REDUNDANT LEGS ARE SILENTLY COLLAPSED AND NOTHING SAYS SO. The response has no leg echo at all: a three-leg request priced as two comes back looking identical to a genuine three-leg quote. Unlike TAB, which marks dropped legs redundant, PointsBet gives you no way to detect it from the response. So STATE THE LEGS YOU SENT whenever you report a price, and treat a price that equals the shorter combination's price as evidence a leg was absorbed. Exact duplicates are deduplicated the same silent way.
enableCorrelatedMulti ON THE MARKET IS NOT ELIGIBILITY. It was true on all 82 markets of the verified event, yet the pricer still refused with Market ... event class First Goalscorer - Home is not allowed for Same Game Multi. Only the pricer knows; do not pre-filter on that flag and do not promise a combination before pricing it.
REFUSALS ARRIVE AS HTTP 200 with success: false and price: 0 — the engine raises these rather than passing a zero off as a quote. Three kinds seen live: a suspended or unknown market names the legs in invalidSelections, mutually exclusive legs give OddsFactory returned price 1 or less, and a disallowed market names its event class. An unknown eventKey is the one that does NOT follow the pattern: it 500s.
Example: Price Bulldogs to win with over 169.5 total points {"eventKey": "2860313", "selectedOutcomes": [{"MarketKey": "114096420", "OutcomeKey": "1"}, {"MarketKey": "114104206", "OutcomeKey": "11"}]}
Auth: none needed.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| eventKey | Yes | Numeric event key as a STRING, e.g. "2860313" — the `key` from pointsbet_event or any events feed. Every selection must belong to this event. | |
| selectedOutcomes | Yes | The legs: [{"MarketKey": "114096420", "OutcomeKey": "1"}, …]. Both come from pointsbet_event — MarketKey is `fixedOddsMarkets[].key`, OutcomeKey is that market's own `outcomes[].key`. OutcomeKey IS ONLY UNIQUE WITHIN ITS MARKET (key "11" is a different bet in each of two markets on the verified event), so the PAIR identifies a leg and an OutcomeKey carried to the wrong MarketKey silently prices something else. Send them as strings. One leg is accepted and just returns that leg's own price. |