The Lineup
Today's PicksConnectionsFeaturesResultsCommercial APIPricingAboutContact
THE LINEUP

Product

  • Free Account
  • Pricing
  • EV Results
  • Model Results
  • Commercial API
  • Results Methodology
  • Compare
  • OddsJam Alternative
  • Newsletter

Company

  • About
  • Blog
  • Contact
Privacy PolicyTerms of ServiceRefund Policy

© 2026 THE LINEUP. All rights reserved.

THE LINEUP

Start free with public proof, preview edges, and partner offers. Upgrade when you want the full +EV workflow.

Product

  • Free Account
  • Pricing
  • EV Results
  • Model Results
  • Commercial API
  • Results Methodology
  • Compare
  • OddsJam Alternative
  • Newsletter

Company

  • About
  • Blog
  • Contact

Legal

  • Privacy Policy
  • Terms of Service
  • Refund Policy

© 2026 THE LINEUP. All rights reserved.

Made for bettors who think before they bet

The Lineup
Today's PicksConnectionsFeaturesResultsCommercial APIPricingAboutContact
THE LINEUP

Product

  • Free Account
  • Pricing
  • EV Results
  • Model Results
  • Commercial API
  • Results Methodology
  • Compare
  • OddsJam Alternative
  • Newsletter

Company

  • About
  • Blog
  • Contact
Privacy PolicyTerms of ServiceRefund Policy

© 2026 THE LINEUP. All rights reserved.

THE LINEUP

Start free with public proof, preview edges, and partner offers. Upgrade when you want the full +EV workflow.

Product

  • Free Account
  • Pricing
  • EV Results
  • Model Results
  • Commercial API
  • Results Methodology
  • Compare
  • OddsJam Alternative
  • Newsletter

Company

  • About
  • Blog
  • Contact

Legal

  • Privacy Policy
  • Terms of Service
  • Refund Policy

© 2026 THE LINEUP. All rights reserved.

Made for bettors who think before they bet

Commercial API

Integration guide

Evaluate the sports projections API before committing to a pilot.

These representative contracts show the shape of a managed integration. They are illustrative only: credentials, output coverage, limits, and production semantics are agreed in the paid pilot scope.

Discuss a paid pilotCompare access paths
01

Identity mapping comes first

Compare a small event, team, and participant sample before a pilot. Once approved, the crosswalk is persisted and exceptions are surfaced for review.

02

Outputs are explicit

Point projections, line-relative probabilities, model edge, and market-based EV answer different questions. The pilot contract names which outputs apply to each market.

03

Batching preserves item-level receipts

Event-grouped batches can be shaped around the partner’s slate and refresh cadence while preserving an item-level status for every requested selection.

Representative contracts

Start with one selection. Keep the semantics at batch scale.

Single selectionOne event and one market selection without sportsbook pricing.+

Request

{
  "example_context": "representative_not_live",
  "contract_name": "commercial_model_service_v1",
  "request_id": "request_single_001",
  "submitted_at": "2026-08-15T18:00:00Z",
  "client_data_version": "partner_snapshot_42",
  "event": {
    "external_event_id": "event_2026_001",
    "starts_at": "2026-08-15T23:00:00Z"
  },
  "selection": {
    "selection_id": "selection_001",
    "sport": "nba",
    "participant": {
      "external_participant_id": "participant_123",
      "normalized_name": "sample player"
    },
    "market": "points",
    "selected_line": 24.5,
    "side": "over"
  }
}

Response

{
  "example_context": "representative_not_live",
  "contract_name": "commercial_model_service_v1",
  "request_id": "request_single_001",
  "client_data_version": "partner_snapshot_42",
  "server_data_version": "example_server_snapshot_108",
  "generated_at": "2026-08-15T18:00:02Z",
  "items": [
    {
      "selection_id": "selection_001",
      "result_id": "result_001",
      "sport": "nba",
      "market": "points",
      "selected_line": 24.5,
      "side": "over",
      "status": "complete",
      "code": "ok",
      "identity": {
        "event": "matched",
        "participant": "matched"
      },
      "projection": {
        "point_projection": 26.2,
        "statistic": "median",
        "unit": "points",
        "projection_delta": 1.7
      },
      "source_freshness": {
        "status": "fresh",
        "observed_at": "2026-08-15T17:58:00Z",
        "age_seconds": 120,
        "max_age_seconds": 900
      },
      "model_generation": {
        "generation_id": "generation_example_001",
        "model_version": "example_model_v1",
        "generated_at": "2026-08-15T17:58:30Z",
        "data_cutoff_at": "2026-08-15T17:55:00Z"
      }
    }
  ]
}
Selection with offered oddsAdds a partner-supplied price so model probability edge and optional market comparison remain separate calculations.+

Request

{
  "example_context": "representative_not_live",
  "contract_name": "commercial_model_service_v1",
  "request_id": "request_with_odds_001",
  "submitted_at": "2026-08-15T18:00:00Z",
  "client_data_version": "partner_snapshot_42",
  "event": {
    "external_event_id": "event_2026_001",
    "starts_at": "2026-08-15T23:00:00Z"
  },
  "selection": {
    "selection_id": "selection_001",
    "sport": "nba",
    "participant": {
      "external_participant_id": "participant_123",
      "normalized_name": "sample player"
    },
    "market": "points",
    "selected_line": 24.5,
    "side": "over",
    "quote": {
      "quote_kind": "selected_side",
      "book": "partner_book_a",
      "american_price": -110,
      "quoted_at": "2026-08-15T17:59:30Z"
    }
  }
}

Response

{
  "example_context": "representative_not_live",
  "contract_name": "commercial_model_service_v1",
  "request_id": "request_with_odds_001",
  "client_data_version": "partner_snapshot_42",
  "server_data_version": "example_server_snapshot_108",
  "generated_at": "2026-08-15T18:00:02Z",
  "items": [
    {
      "selection_id": "selection_001",
      "result_id": "result_001",
      "sport": "nba",
      "market": "points",
      "selected_line": 24.5,
      "side": "over",
      "status": "complete",
      "code": "ok",
      "identity": {
        "event": "matched",
        "participant": "matched"
      },
      "projection": {
        "point_projection": 26.2,
        "statistic": "median",
        "unit": "points",
        "projection_delta": 1.7
      },
      "source_freshness": {
        "status": "fresh",
        "observed_at": "2026-08-15T17:58:00Z",
        "age_seconds": 120,
        "max_age_seconds": 900
      },
      "model_generation": {
        "generation_id": "generation_example_001",
        "model_version": "example_model_v1",
        "generated_at": "2026-08-15T17:58:30Z",
        "data_cutoff_at": "2026-08-15T17:55:00Z"
      },
      "probabilities": {
        "probability_kind": "over_under",
        "over": {
          "model_probability": 0.55
        },
        "under": {
          "model_probability": 0.45
        },
        "calibration_version": "example_calibration_v1",
        "calibrated_at": "2026-08-10T12:00:00Z"
      },
      "pricing": {
        "quote_kind": "selected_side",
        "book": "partner_book_a",
        "side": "over",
        "american_price": -110,
        "book_implied_probability": 0.52381,
        "model_probability": 0.55,
        "model_probability_edge_pp": 2.619,
        "market_based_ev": null,
        "market_comparison_status": "approved_fair_anchors_required"
      }
    }
  ]
}
Event-grouped batchGroups ordered selections by event while preserving stable request and selection identifiers.+

Request

{
  "example_context": "representative_not_live",
  "contract_name": "commercial_model_service_v1",
  "request_id": "request_batch_001",
  "submitted_at": "2026-08-15T18:00:00Z",
  "client_data_version": "partner_snapshot_42",
  "events": [
    {
      "event": {
        "external_event_id": "event_2026_001",
        "starts_at": "2026-08-15T23:00:00Z"
      },
      "selections": [
        {
          "selection_id": "selection_001",
          "sport": "nba",
          "participant": {
            "external_participant_id": "participant_123",
            "normalized_name": "sample player"
          },
          "market": "points",
          "selected_line": 24.5,
          "side": "over"
        },
        {
          "selection_id": "selection_002",
          "sport": "nba",
          "participant": {
            "external_participant_id": "participant_123",
            "normalized_name": "sample player"
          },
          "market": "assists",
          "selected_line": 6.5,
          "side": "under"
        }
      ]
    },
    {
      "event": {
        "external_event_id": "event_2026_002",
        "starts_at": "2026-08-16T00:30:00Z"
      },
      "selections": [
        {
          "selection_id": "selection_003",
          "sport": "nba",
          "participant": {
            "external_participant_id": "participant_987",
            "normalized_name": "second sample player"
          },
          "market": "rebounds",
          "selected_line": 9.5,
          "side": "over"
        }
      ]
    }
  ]
}

Response

{
  "example_context": "representative_not_live",
  "contract_name": "commercial_model_service_v1",
  "request_id": "request_batch_001",
  "client_data_version": "partner_snapshot_42",
  "server_data_version": "example_server_snapshot_108",
  "generated_at": "2026-08-15T18:00:03Z",
  "items": [
    {
      "selection_id": "selection_001",
      "result_id": "result_001",
      "sport": "nba",
      "market": "points",
      "selected_line": 24.5,
      "side": "over",
      "status": "complete",
      "code": "ok",
      "identity": {
        "event": "matched",
        "participant": "matched"
      },
      "projection": {
        "point_projection": 26.2,
        "statistic": "median",
        "unit": "points",
        "projection_delta": 1.7
      },
      "source_freshness": {
        "status": "fresh",
        "observed_at": "2026-08-15T17:58:00Z",
        "age_seconds": 120,
        "max_age_seconds": 900
      },
      "model_generation": {
        "generation_id": "generation_example_001",
        "model_version": "example_model_v1",
        "generated_at": "2026-08-15T17:58:30Z",
        "data_cutoff_at": "2026-08-15T17:55:00Z"
      }
    },
    {
      "selection_id": "selection_002",
      "result_id": "result_002",
      "sport": "nba",
      "market": "assists",
      "selected_line": 6.5,
      "side": "under",
      "status": "partial",
      "code": "not_calibrated",
      "identity": {
        "event": "matched",
        "participant": "matched"
      },
      "projection": {
        "point_projection": 6.1,
        "statistic": "median",
        "unit": "assists",
        "projection_delta": -0.4
      },
      "source_freshness": {
        "status": "fresh",
        "observed_at": "2026-08-15T17:58:00Z",
        "age_seconds": 120,
        "max_age_seconds": 900
      },
      "model_generation": {
        "generation_id": "generation_example_001",
        "model_version": "example_model_v1",
        "generated_at": "2026-08-15T17:58:30Z",
        "data_cutoff_at": "2026-08-15T17:55:00Z"
      },
      "errors": [
        {
          "code": "not_calibrated",
          "severity": "warning",
          "retryable": false
        }
      ]
    },
    {
      "selection_id": "selection_003",
      "result_id": "result_003",
      "sport": "nba",
      "market": "rebounds",
      "selected_line": 9.5,
      "side": "over",
      "status": "error",
      "code": "mapping_not_found",
      "identity": {
        "event": "matched",
        "participant": "unresolved"
      },
      "errors": [
        {
          "code": "mapping_not_found",
          "severity": "error",
          "retryable": false
        }
      ]
    }
  ]
}

Pilot access is scoped, not assumed.

The pilot agreement confirms approved markets, output semantics, refresh cadence, batch limits, authentication, support, and the current validation state. The catalog on the commercial page uses the status vocabulary available for pilot, pilot access, and in validation.

Commercial API

Integration guide

Evaluate the sports projections API before committing to a pilot.

These representative contracts show the shape of a managed integration. They are illustrative only: credentials, output coverage, limits, and production semantics are agreed in the paid pilot scope.

Discuss a paid pilotCompare access paths
01

Identity mapping comes first

Compare a small event, team, and participant sample before a pilot. Once approved, the crosswalk is persisted and exceptions are surfaced for review.

02

Outputs are explicit

Point projections, line-relative probabilities, model edge, and market-based EV answer different questions. The pilot contract names which outputs apply to each market.

03

Batching preserves item-level receipts

Event-grouped batches can be shaped around the partner’s slate and refresh cadence while preserving an item-level status for every requested selection.

Representative contracts

Start with one selection. Keep the semantics at batch scale.

Single selectionOne event and one market selection without sportsbook pricing.+

Request

{
  "example_context": "representative_not_live",
  "contract_name": "commercial_model_service_v1",
  "request_id": "request_single_001",
  "submitted_at": "2026-08-15T18:00:00Z",
  "client_data_version": "partner_snapshot_42",
  "event": {
    "external_event_id": "event_2026_001",
    "starts_at": "2026-08-15T23:00:00Z"
  },
  "selection": {
    "selection_id": "selection_001",
    "sport": "nba",
    "participant": {
      "external_participant_id": "participant_123",
      "normalized_name": "sample player"
    },
    "market": "points",
    "selected_line": 24.5,
    "side": "over"
  }
}

Response

{
  "example_context": "representative_not_live",
  "contract_name": "commercial_model_service_v1",
  "request_id": "request_single_001",
  "client_data_version": "partner_snapshot_42",
  "server_data_version": "example_server_snapshot_108",
  "generated_at": "2026-08-15T18:00:02Z",
  "items": [
    {
      "selection_id": "selection_001",
      "result_id": "result_001",
      "sport": "nba",
      "market": "points",
      "selected_line": 24.5,
      "side": "over",
      "status": "complete",
      "code": "ok",
      "identity": {
        "event": "matched",
        "participant": "matched"
      },
      "projection": {
        "point_projection": 26.2,
        "statistic": "median",
        "unit": "points",
        "projection_delta": 1.7
      },
      "source_freshness": {
        "status": "fresh",
        "observed_at": "2026-08-15T17:58:00Z",
        "age_seconds": 120,
        "max_age_seconds": 900
      },
      "model_generation": {
        "generation_id": "generation_example_001",
        "model_version": "example_model_v1",
        "generated_at": "2026-08-15T17:58:30Z",
        "data_cutoff_at": "2026-08-15T17:55:00Z"
      }
    }
  ]
}
Selection with offered oddsAdds a partner-supplied price so model probability edge and optional market comparison remain separate calculations.+

Request

{
  "example_context": "representative_not_live",
  "contract_name": "commercial_model_service_v1",
  "request_id": "request_with_odds_001",
  "submitted_at": "2026-08-15T18:00:00Z",
  "client_data_version": "partner_snapshot_42",
  "event": {
    "external_event_id": "event_2026_001",
    "starts_at": "2026-08-15T23:00:00Z"
  },
  "selection": {
    "selection_id": "selection_001",
    "sport": "nba",
    "participant": {
      "external_participant_id": "participant_123",
      "normalized_name": "sample player"
    },
    "market": "points",
    "selected_line": 24.5,
    "side": "over",
    "quote": {
      "quote_kind": "selected_side",
      "book": "partner_book_a",
      "american_price": -110,
      "quoted_at": "2026-08-15T17:59:30Z"
    }
  }
}

Response

{
  "example_context": "representative_not_live",
  "contract_name": "commercial_model_service_v1",
  "request_id": "request_with_odds_001",
  "client_data_version": "partner_snapshot_42",
  "server_data_version": "example_server_snapshot_108",
  "generated_at": "2026-08-15T18:00:02Z",
  "items": [
    {
      "selection_id": "selection_001",
      "result_id": "result_001",
      "sport": "nba",
      "market": "points",
      "selected_line": 24.5,
      "side": "over",
      "status": "complete",
      "code": "ok",
      "identity": {
        "event": "matched",
        "participant": "matched"
      },
      "projection": {
        "point_projection": 26.2,
        "statistic": "median",
        "unit": "points",
        "projection_delta": 1.7
      },
      "source_freshness": {
        "status": "fresh",
        "observed_at": "2026-08-15T17:58:00Z",
        "age_seconds": 120,
        "max_age_seconds": 900
      },
      "model_generation": {
        "generation_id": "generation_example_001",
        "model_version": "example_model_v1",
        "generated_at": "2026-08-15T17:58:30Z",
        "data_cutoff_at": "2026-08-15T17:55:00Z"
      },
      "probabilities": {
        "probability_kind": "over_under",
        "over": {
          "model_probability": 0.55
        },
        "under": {
          "model_probability": 0.45
        },
        "calibration_version": "example_calibration_v1",
        "calibrated_at": "2026-08-10T12:00:00Z"
      },
      "pricing": {
        "quote_kind": "selected_side",
        "book": "partner_book_a",
        "side": "over",
        "american_price": -110,
        "book_implied_probability": 0.52381,
        "model_probability": 0.55,
        "model_probability_edge_pp": 2.619,
        "market_based_ev": null,
        "market_comparison_status": "approved_fair_anchors_required"
      }
    }
  ]
}
Event-grouped batchGroups ordered selections by event while preserving stable request and selection identifiers.+

Request

{
  "example_context": "representative_not_live",
  "contract_name": "commercial_model_service_v1",
  "request_id": "request_batch_001",
  "submitted_at": "2026-08-15T18:00:00Z",
  "client_data_version": "partner_snapshot_42",
  "events": [
    {
      "event": {
        "external_event_id": "event_2026_001",
        "starts_at": "2026-08-15T23:00:00Z"
      },
      "selections": [
        {
          "selection_id": "selection_001",
          "sport": "nba",
          "participant": {
            "external_participant_id": "participant_123",
            "normalized_name": "sample player"
          },
          "market": "points",
          "selected_line": 24.5,
          "side": "over"
        },
        {
          "selection_id": "selection_002",
          "sport": "nba",
          "participant": {
            "external_participant_id": "participant_123",
            "normalized_name": "sample player"
          },
          "market": "assists",
          "selected_line": 6.5,
          "side": "under"
        }
      ]
    },
    {
      "event": {
        "external_event_id": "event_2026_002",
        "starts_at": "2026-08-16T00:30:00Z"
      },
      "selections": [
        {
          "selection_id": "selection_003",
          "sport": "nba",
          "participant": {
            "external_participant_id": "participant_987",
            "normalized_name": "second sample player"
          },
          "market": "rebounds",
          "selected_line": 9.5,
          "side": "over"
        }
      ]
    }
  ]
}

Response

{
  "example_context": "representative_not_live",
  "contract_name": "commercial_model_service_v1",
  "request_id": "request_batch_001",
  "client_data_version": "partner_snapshot_42",
  "server_data_version": "example_server_snapshot_108",
  "generated_at": "2026-08-15T18:00:03Z",
  "items": [
    {
      "selection_id": "selection_001",
      "result_id": "result_001",
      "sport": "nba",
      "market": "points",
      "selected_line": 24.5,
      "side": "over",
      "status": "complete",
      "code": "ok",
      "identity": {
        "event": "matched",
        "participant": "matched"
      },
      "projection": {
        "point_projection": 26.2,
        "statistic": "median",
        "unit": "points",
        "projection_delta": 1.7
      },
      "source_freshness": {
        "status": "fresh",
        "observed_at": "2026-08-15T17:58:00Z",
        "age_seconds": 120,
        "max_age_seconds": 900
      },
      "model_generation": {
        "generation_id": "generation_example_001",
        "model_version": "example_model_v1",
        "generated_at": "2026-08-15T17:58:30Z",
        "data_cutoff_at": "2026-08-15T17:55:00Z"
      }
    },
    {
      "selection_id": "selection_002",
      "result_id": "result_002",
      "sport": "nba",
      "market": "assists",
      "selected_line": 6.5,
      "side": "under",
      "status": "partial",
      "code": "not_calibrated",
      "identity": {
        "event": "matched",
        "participant": "matched"
      },
      "projection": {
        "point_projection": 6.1,
        "statistic": "median",
        "unit": "assists",
        "projection_delta": -0.4
      },
      "source_freshness": {
        "status": "fresh",
        "observed_at": "2026-08-15T17:58:00Z",
        "age_seconds": 120,
        "max_age_seconds": 900
      },
      "model_generation": {
        "generation_id": "generation_example_001",
        "model_version": "example_model_v1",
        "generated_at": "2026-08-15T17:58:30Z",
        "data_cutoff_at": "2026-08-15T17:55:00Z"
      },
      "errors": [
        {
          "code": "not_calibrated",
          "severity": "warning",
          "retryable": false
        }
      ]
    },
    {
      "selection_id": "selection_003",
      "result_id": "result_003",
      "sport": "nba",
      "market": "rebounds",
      "selected_line": 9.5,
      "side": "over",
      "status": "error",
      "code": "mapping_not_found",
      "identity": {
        "event": "matched",
        "participant": "unresolved"
      },
      "errors": [
        {
          "code": "mapping_not_found",
          "severity": "error",
          "retryable": false
        }
      ]
    }
  ]
}

Pilot access is scoped, not assumed.

The pilot agreement confirms approved markets, output semantics, refresh cadence, batch limits, authentication, support, and the current validation state. The catalog on the commercial page uses the status vocabulary available for pilot, pilot access, and in validation.