PredictorSDK
Guides

Player-prop matching and settlement rules

Compare the same player prop without confusing it with an equivalent contract.

Two markets can ask the same player to exceed the same line and still pay differently when that player does not play. PredictorSDK separates prop identity from settlement equivalence. These options apply to player props only. Moneylines, spreads, and game totals publish a smaller matrix of their own (tie, overtime, push), with its rows only when you send include_rules=true; a player prop's matrix is always there. See game-line rules.

Choose a policy

Use the existing sports matching endpoint.

RequestPlayer props returned
No parametersEach event's full-game moneyline only; no player props
include_submarkets=trueStrict settlement-equivalent player props only
include_submarkets=true&player_prop_match=strictSame strict default, explicitly selected
include_submarkets=true&player_prop_match=same_propVerified same-prop identities, including different or unverified settlement rules
player_prop_match with include_submarkets=false, or in list mode without include_submarkets=true400; the requested comparison would not be visible. A lookup sets include_submarkets=true by default.
An empty, repeated, or unsupported player_prop_match400; no silent fallback

Both policies work with list pagination, lookups (event_id and source_id on GET /v1/matching-markets/sports/lookup), and include_settled=true. A cursor belongs to one policy and cannot be reused after switching policies. Lookup still accepts at most 100 unique identifiers and remains unpaginated. Without include_submarkets=true, each event carries only its full-game moneyline, never player-prop outcomes.

GET /v1/matching-markets/sports?include_submarkets=true&player_prop_match=same_prop

For a known event, call GET /v1/matching-markets/sports/lookup?event_id=<canonical-event-id>; do not search every page to rediscover it. A result requires at least two distinct providers, not two markets from the same venue. An event whose only matches are player props is listed only when the policy admits its props: with include_submarkets=true&player_prop_match=same_prop today, because the strict policy currently admits none.

What must match in both modes

The sport and league, both teams, game date, player, statistic, full-game period, threshold, and native selection meanings must agree. NFL kickoff dates are normalized to America/New_York; Polymarket's UTC-dated slug is not used as the Eastern game date. Player names are resolved against both teams' ESPN rosters to an unambiguous athlete ID, and exactly one ESPN fixture must corroborate the matchup and Eastern game day. An explicit source kickoff that conflicts with ESPN is refused. Explicit full/display-name aliases and individually reviewed, athlete-bound spellings may match; initials, surname-only guesses, suffix removal, and arbitrary collision resolution do not.

For integer statistics, 250+ means Over 249.5, not Over 250. A contract requiring more than 10 points is not the same as 10+ points. Only verified nonnegative half-point thresholds are admitted in this release; whole-number push contracts, exact-value/range bets, fractional statistics, weekly accumulation, season props, and D/ST units are not player-prop matches. Passing touchdowns and touchdowns scored are separate statistics.

Roster checks are performed during sports ingestion, with a five-minute cache and bounded requests. A missing or stale roster, a team conflict, or an ambiguous athlete removes that prop, not ordinary game lines. Current rosters cannot certify historical membership: ingestion does not newly admit props more than 48 hours past their scheduled start. Previously verified archived props remain eligible under include_settled=true; older snapshots without identity verification do not acquire it retroactively.

Read the rule matrix

Every returned player prop has settlement_equivalence and rule_comparisons.

EquivalenceMeaning
equivalentEvery source has a completely reviewed, equivalent settlement profile
differentAt least one known difference exists, even if other rules remain unknown
unverifiedNo difference has been established, but equivalence has not been proved

Each rule_comparisons row has a machine-readable rule, readable label, comparison, and source_values. Each source value names its exact provider and market_id, a machine-readable value, a plain-language description, and an evidence_url when verified. The matrix always covers:

RuleWhat to check
non_participationInactive, withdrawn, or no-play settlement; minimum participation
overtimeWhether overtime statistics count
stat_definitionWhich statistic and attribution rules govern
thresholdComparison operator, equality, and push behavior
stat_correctionsWhether later official corrections can change settlement
postponementHow long a delayed game remains eligible
cancellationFair-price settlement, split payout, or refund conditions
interruptionAbandonment, minimum play, and restart conditions
resolution_sourceOfficial source, fallbacks, and missing-data handling

Filter rows with comparison=different to find known differences. Filter unverified rows to find evidence gaps. Values are extensible strings; display the description rather than guessing an unfamiliar value's meaning. A row can have a known difference and still contain an unknown source value. Agreement on observed clauses is not a complete contract review, and unknown values never mean equivalent or unrestricted.

Rule evidence is attached to individual source contracts, not assumed from the provider's name. Market clauses are observed at ingestion. Kalshi product terms require the current series to link to the reviewed document; ProphetX requires its filings index to retain the reviewed NFL filing. Both require the document's SHA-256 to match the reviewed version; these checks are cached for at most five minutes. Changed or unavailable documents leave affected dimensions unknown. Known unresolved wording is not assigned an invented precedence. Read the evidence link for additional applicable terms.

Example: a no-play difference

The September 2026 audit found Josh Allen passing-yard props with matching game/player/249.5 identities, but different non-participation treatment:

SourceActive player takes no snap
PolymarketUnder wins; Over loses
KalshiSettles at a pregame fair price, not necessarily zero or one
ProphetXFiled rules require active status and at least one snap for validity; no automatic Under win

A fair-price settlement, a 50-50 split, and a purchase-price refund are not interchangeable. A same-prop match is useful for discovery and comparison; it does not establish a risk-free arbitrage or a perfect hedge.

For a comparison UI, show the prop's display_name, an overall settlement_equivalence badge, and the descriptions from each rule row. Keep unknown rows visible. A simplified excerpt (the actual response contains all nine rows and exact source market references) looks like:

{
  "display_name": "Josh Allen Passing yards O/U 249.5",
  "settlement_equivalence": "different",
  "rule_comparisons": [
    {
      "rule": "non_participation",
      "label": "Player does not participate",
      "comparison": "different",
      "source_values": [
        {
          "provider": "kalshi",
          "market_id": "KXNFLPASSYDS-26SEP13BUFHOU-BUFJALLEN17-250",
          "value": "active_no_snap_pregame_fair_price",
          "description": "If active but never takes a snap, settles at the pregame fair price. Inactive-player handling has not been verified here.",
          "evidence_url": "https://api.elections.kalshi.com/trade-api/v2/markets/KXNFLPASSYDS-26SEP13BUFHOU-BUFJALLEN17-250"
        },
        {
          "provider": "polymarket",
          "market_id": "4080510",
          "value": "under_wins",
          "description": "If the player does not participate or is inactive, Under/No wins and Over/Yes loses.",
          "evidence_url": "https://gamma-api.polymarket.com/markets/4080510"
        }
      ]
    }
  ]
}

Coverage and limitations

ProviderPlayer-prop admission in this release
KalshiThirteen NFL families listed below; validated NBA/WNBA full-game count props when listed
PolymarketCorresponding NFL families, including anytime/2+ touchdowns; validated NBA/WNBA full-game count props when listed
PredictNo new admission: weekly NFL contracts are not single-game props; a bridge alone does not certify prop rules or selections
ProphetXEleven NFL integer-stat families below, using the same primary strike as market detail; whole-number lines and contradictory selections are refused
SX Bet, AlphaArcade, HyperliquidNo verified game player-prop pairing in the audited NFL inventories
NFL statisticKalshiPolymarketProphetX
Passing yardsYesYesYes
Rushing yardsYesYesYes
Receiving yardsYesYesYes
ReceptionsYesYesYes
Passing completionsYesYesYes
Passing touchdownsYesYesExcluded: filing assigns the scorer to the receiver
Touchdowns scored (anytime / 2+)YesYesNo verified matching family
Passing attemptsYesNo observed familyYes
Passing interceptionsYesNo observed familyYes
Rushing attemptsYesNo observed familyYes
Rushing + receiving yardsYesNo observed familyYes
Longest receptionYesNo observed familyYes
Longest rushYesNo observed familyYes

These are supported families, not a promise of a matching line at every venue. ProphetX alternate strikes are not exposed under the primary market ID: its market-detail response selects one current primary strike. Both selection labels and structured strike values must agree, including every order-book level's outcome identity. A whole-number primary line is excluded even when an alternate half-point line exists.

The September 14 audit read all seven upstreams. Predict's 20 NFL statistical props were weekly passing-yard or anytime-touchdown contracts, not single-game contracts. SX Bet's 386 NFL markets, AlphaArcade's current NFL game children, and Hyperliquid's NFL outcomes provided no verified player-stat pairing. Provider tags alone are insufficient: AlphaArcade even carried an NFL tag on a SpaceX IPO question. Missing coverage stays explicit rather than creating a player match from unrelated or ambiguous data.

The Chiefs' published roster names Kenneth Walker, while ESPN calls athlete 4567048 Kenneth Walker III. This reviewed alias is tied to that exact athlete and still requires a fresh matching-team roster. It does not remove suffixes from other players or resolve a name collision automatically.

Availability is dynamic. NBA points inventory was empty on Kalshi during this audit; basketball evidence includes historical Polymarket contracts and the current published Kalshi terms, not a certified live NBA pair. This release does not claim a complete settlement profile for any audited provider pair; strict mode can legitimately return no player props. Previous NBA/WNBA name-and-line groupings are not grandfathered into strict equivalence.

Canonical player keys use espn_<league>_<athlete-id>. Same-prop keys identify the base prop; strict keys additionally identify a reviewed settlement group. One base prop can contain several equivalent subsets: strict mode emits each qualifying subset separately and never pulls in an incompatible third venue. Join native market/outcome IDs to market detail for current data; this endpoint adds no prices, liquidity, or execution advice.

ProphetX market detail converts its Trading API's American-odds offers into probabilities: the cheapest available back offer is the named selection's ask, and the opposite selection's ask supplies the complementary bid. price is the midpoint when both are present, not a last trade or a guaranteed fill. A one-sided book remains one-sided, and an empty book has null quotes. These quote conventions do not establish settlement equivalence or make an alternate strike interchangeable with the current primary strike.

On this page