### GET /v1/fixtures Source: https://github.com/pinnacleapi/pinnacleapi-documentation/blob/master/APIChangelog.md Retrieves a list of upcoming prematch fixtures, including event details, start times, and status. ```APIDOC ## GET /v1/fixtures ### Description Retrieves a list of available prematch fixtures for betting. ### Method GET ### Endpoint /v1/fixtures ### Parameters #### Query Parameters - **sportId** (integer) - Required - The ID of the sport to retrieve fixtures for. ### Request Example GET /v1/fixtures?sportId=33 ### Response #### Success Response (200) - **id** (long) - Unique identifier for the fixture. - **starts** (string) - ISO 8601 timestamp of event start. - **home** (string) - Home participant name. - **away** (string) - Away participant name. - **rotNum** (string) - Rotation number. #### Response Example [ { "id": 1504081918, "starts": "2022-02-28T19:45:00Z", "home": "Ana Konjuh", "away": "Katie Boulter", "rotNum": "8909" } ] ``` -------------------------------- ### Retrieve Straight Market Odds Data Source: https://github.com/pinnacleapi/pinnacleapi-documentation/blob/master/FAQ.md Example JSON response from the Get Odds endpoint showing market status, cutoff times, and available spreads and totals. ```json { "lineId": 527557614, "number": 1, "cutoff": "2018-06-30T21:00:00Z", "maxSpread": 250, "maxTotal": 250, "status": 1, "spreads": [ { "hdp": -0.25, "home": 140, "away": -172 } ], "totals": [ { "points": 0.75, "over": -128, "under": 107 } ] } ``` -------------------------------- ### GET /fixtures Source: https://github.com/pinnacleapi/pinnacleapi-documentation/blob/master/APIChangelog.md Retrieves a list of sports fixtures, including event details, start times, and resulting units for specific sports. ```APIDOC ## GET /fixtures ### Description Retrieves the list of available fixtures for a given sport, including event IDs, names, and the unit of measurement for results (e.g., Sets, Games). ### Method GET ### Endpoint /fixtures ### Parameters #### Query Parameters - **sportId** (integer) - Required - The unique identifier for the sport. ### Response #### Success Response (200) - **sportId** (integer) - The ID of the sport. - **league** (array) - List of leagues containing events. - **events** (array) - List of events with details like id, starts, home, away, and resultingUnit. ### Response Example { "sportId": 33, "league": [ { "id": 2957, "name": "ATP Paris - R1", "events": [ { "id": 1562180480, "resultingUnit": "Sets" } ] } ] } ``` -------------------------------- ### GET /v1/client/balance Source: https://context7.com/pinnacleapi/pinnacleapi-documentation/llms.txt Retrieves current account balance information. ```APIDOC ## GET /v1/client/balance ### Description Retrieves current account balance information. ### Method GET ### Endpoint https://api.pinnacle.com/v1/client/balance ### Response #### Success Response (200) - **availableBalance** (number) - Current available funds. - **currency** (string) - Account currency code. #### Response Example { "availableBalance": 5000.00, "currency": "USD" } ``` -------------------------------- ### GET /v1/fixtures Source: https://github.com/pinnacleapi/pinnacleapi-documentation/blob/master/APIChangelog.md Retrieves a list of sports fixtures, including event IDs, start times, participant names, and the resulting units (e.g., Sets, Games) for betting markets. ```APIDOC ## GET /v1/fixtures ### Description Fetches current sports fixtures for a specific sport and league, including metadata like live status and resulting units. ### Method GET ### Endpoint /v1/fixtures ### Parameters #### Query Parameters - **sportId** (integer) - Required - The unique identifier for the sport. ### Response #### Success Response (200) - **sportId** (integer) - ID of the sport. - **league** (array) - List of leagues containing events. - **events** (array) - List of events with details like home/away teams and resultingUnit. #### Response Example { "sportId": 33, "league": [{ "id": 2957, "events": [{ "id": 1562180480, "home": "Sebastian Korda", "resultingUnit": "Sets" }] }] } ``` -------------------------------- ### Get In-Running API Response (JSON) Source: https://github.com/pinnacleapi/pinnacleapi-documentation/blob/master/APIChangelog.md Sample JSON response for the Get In-Running API endpoint. It provides real-time data for sports events, including the current state and elapsed time for a specific event. ```json { "sports": [ { "id": 29, "leagues": [ { "id": 218153, "events": [ { "id": 1563271334, "state": 3, "elapsed": 23 } ] } ] } ] } ``` -------------------------------- ### Get Special Fixtures API Source: https://context7.com/pinnacleapi/pinnacleapi-documentation/llms.txt Retrieves props and futures markets offered as specials. ```APIDOC ## Get Special Fixtures ### Description Retrieves props and futures markets offered as specials. ### Method GET ### Endpoint /v1/fixtures/special ### Parameters #### Query Parameters - **sportId** (integer) - Required - The ID of the sport. - **leagueIds** (string) - Optional - A comma-separated string of league IDs to filter by. ### Request Example ```bash curl -X GET "https://api.pinnacle.com/v1/fixtures/special?sportId=29&leagueIds=2331" \ -H "Authorization: Basic U03MyOT23YbzMDc6d3c3O1DQ1" \ -H "Accept: application/json" ``` ### Response #### Success Response (200) - **sportId** (integer) - The ID of the sport. - **last** (integer) - Timestamp of the last update. - **leagues** (array) - An array of leagues containing special fixtures. - **id** (integer) - The ID of the league. - **specials** (array) - An array of special fixtures available in the league. - **id** (integer) - The ID of the special fixture. - **betType** (string) - The type of bet. - **name** (string) - The name of the special market. - **cutoff** (string) - The cutoff time for the special. - **status** (string) - The status of the special. - **liveStatus** (integer) - The live status of the special. - **event** (object) - Details of the event associated with the special. - **id** (integer) - The ID of the event. - **periodNumber** (integer) - The period number. - **home** (string) - The home team name. - **away** (string) - The away team name. - **contestants** (array) - An array of contestants in the special. - **id** (integer) - The ID of the contestant. - **name** (string) - The name of the contestant. - **rotNum** (integer) - The rotation number. #### Response Example ```json { "sportId": 29, "last": 150000000, "leagues": [ { "id": 2331, "specials": [ { "id": 1065232780, "betType": "MULTI_WAY_HEAD_TO_HEAD", "name": "To Score First", "cutoff": "2022-11-17T13:30:00Z", "status": "O", "liveStatus": 0, "event": { "id": 1051780418, "periodNumber": 1, "home": "Malta", "away": "Norway" }, "contestants": [ { "id": 1065232781, "name": "Malta", "rotNum": 101 }, { "id": 1065232782, "name": "Norway", "rotNum": 102 } ] } ] } ] } ``` ``` -------------------------------- ### Get Fixtures API Response (JSON) Source: https://github.com/pinnacleapi/pinnacleapi-documentation/blob/master/APIChangelog.md Sample JSON response for the Get Fixtures API endpoint. It includes sport and league details, with events showing their start times, teams, and status. Note the 'parentId' field indicating an associated event. ```json { "sportId": 29, "last": 442452738, "league": [ { "id": 218153, "name": "Zanzibar - Mapinduzi Cup", "events": [ { "id": 1563271322, "starts": "2022-11-17T13:30:00Z", "home": "TeamA", "away": "TeamB", "rotNum": "99552", "liveStatus": 2, "status": "O", "parlayRestriction": 2, "altTeaser": false, "resultingUnit": "Regular", "version": 442452541 }, { "id": 1563271334, "starts": "2022-11-17T13:30:00Z", "home": "TeamA", "away": "TeamB", "rotNum": "99556", "liveStatus": 1, "status": "O", "parlayRestriction": 1, "parentId": 1563271322, "altTeaser": false, "resultingUnit": "Regular", "version": 442452738 } ] } ] } ``` -------------------------------- ### GET /api/inrunning Source: https://github.com/pinnacleapi/pinnacleapi-documentation/blob/master/APIChangelog.md Retrieves the current in-running status for live sports events. ```APIDOC ## GET /api/inrunning ### Description Fetches the real-time in-running status for live sports events, including elapsed time and current state. ### Method GET ### Endpoint `/api/inrunning` ### Query Parameters - **sportId** (integer) - Required - The ID of the sport to retrieve in-running status for. ### Response #### Success Response (200) - **sports** (array) - An array of sport objects. - **id** (integer) - The ID of the sport. - **leagues** (array) - An array of league objects. - **id** (integer) - The ID of the league. - **events** (array) - An array of event objects. - **id** (integer) - The ID of the event. - **state** (integer) - The current state of the event (e.g., 3 for in-play). - **elapsed** (integer) - The number of minutes elapsed in the event. ### Request Example ```json { "sportId": 29, "leagues": [ { "id": 218153, "events": [ { "id": 1563271334, "state": 3, "elapsed": 23 } ] } ] } ``` ### Response Example ```json { "sports": [ { "id": 29, "leagues": [ { "id": 218153, "events": [ { "id": 1563271334, "state": 3, "elapsed": 23 } ] } ] } ] } ``` ``` -------------------------------- ### Group Associated Events Using Parent ID (JSON Example) Source: https://github.com/pinnacleapi/pinnacleapi-documentation/blob/master/FAQ.md Demonstrates how to use the `parentId` field in the `/odds` and `/fixtures` responses to group associated events. Parent events are pre-game and do not have a `parentId`, while live events always have a `parentId` linking them to a parent event. This example shows a parent event with associated live and corner events. ```json { "sportId": 29, "last": 148671597, "league": [ { "id": 2331, "name": "Norway - 1st Division", "events": [ { "id": 837721686, "starts": "2018-04-10T17:00:00Z", "home": "Viking Fk", "away": "Mjondalen", "rotNum": "6751", "liveStatus": 1, "status": "O", "parlayRestriction": 2, "parentId": 834342247, "altTeaser": false }, { "id": 834342247, "starts": "2018-04-10T17:00:00Z", "home": "Viking Fk", "away": "Mjondalen", "rotNum": "6751", "liveStatus": 2, "status": "I", "parlayRestriction": 2, "altTeaser": false } ] }, { "id": 6816, "name": "Norway - 1st Division Corners", "events": [ { "id": 837721684, "starts": "2018-04-10T17:00:00Z", "home": "Viking Fk (Corners)", "away": "Mjondalen (Corners)", "rotNum": "6751", "liveStatus": 1, "status": "O", "parlayRestriction": 1, "parentId": 834342247, "altTeaser": false }, { "id": 837721615, "starts": "2018-04-10T17:00:00Z", "home": "Viking Fk (Corners)", "away": "Mjondalen (Corners)", "rotNum": "6751", "liveStatus": 2, "status": "I", "parlayRestriction": 1, "parentId": 834342247, "altTeaser": false } ] } ] } ``` -------------------------------- ### Get Teaser Groups API Source: https://context7.com/pinnacleapi/pinnacleapi-documentation/llms.txt Retrieves available teaser configurations including point adjustments and payout combinations. ```APIDOC ## Get Teaser Groups ### Description Retrieves available teaser configurations including point adjustments and payout combinations. ### Method GET ### Endpoint /v1/teaser/groups ### Parameters #### Query Parameters - **oddsFormat** (string) - Required - The odds format to use (e.g., AMERICAN, DECIMAL, FRACTIONAL). ### Request Example ```bash curl -X GET "https://api.pinnacle.com/v1/teaser/groups?oddsFormat=AMERICAN" \ -H "Authorization: Basic U03MyOT23YbzMDc6d3c3O1DQ1" \ -H "Accept: application/json" ``` ### Response #### Success Response (200) - **teaserGroups** (array) - An array of available teaser groups. - **id** (integer) - The ID of the teaser group. - **name** (string) - The name of the teaser group. - **teasers** (array) - An array of teaser configurations within the group. - **id** (integer) - The ID of the teaser. - **sportId** (integer) - The ID of the sport. - **minLegs** (integer) - The minimum number of legs required for the teaser. - **maxLegs** (integer) - The maximum number of legs allowed for the teaser. - **leagues** (array) - An array of league IDs included in the teaser. - **payouts** (array) - An array of payout combinations based on the number of legs. - **numberOfLegs** (integer) - The number of legs. - **price** (integer) - The payout price. #### Response Example ```json { "teaserGroups": [ { "id": 1, "name": "6 Point Teaser", "teasers": [ { "id": 101, "sportId": 4, "minLegs": 2, "maxLegs": 10, "leagues": [1728, 1729], "payouts": [ { "numberOfLegs": 2, "price": -110 }, { "numberOfLegs": 3, "price": 150 } ] } ] } ] } ``` ``` -------------------------------- ### Live Fixtures API Source: https://github.com/pinnacleapi/pinnacleapi-documentation/blob/master/APIChangelog.md This section details the structure of live fixture data, including match details, start times, and participant information. ```APIDOC ## GET /api/v1/live/fixtures ### Description Retrieves a list of live sports fixtures. ### Method GET ### Endpoint /api/v1/live/fixtures ### Parameters #### Query Parameters - **sportId** (integer) - Optional - Filter fixtures by sport ID. - **regionId** (integer) - Optional - Filter fixtures by region ID. ### Response #### Success Response (200) - **fixtures** (array) - A list of live fixture objects. - **id** (integer) - Unique identifier for the fixture. - **starts** (string) - ISO 8601 formatted start time of the fixture. - **home** (string) - Name of the home team or participant. - **away** (string) - Name of the away team or participant. - **rotNum** (string) - Rotation number for the fixture. - **liveStatus** (integer) - Indicates the live status of the fixture. - **status** (string) - Current status of the fixture (e.g., 'O' for Open). - **parlayRestriction** (integer) - Parlay restriction level. - **parentId** (integer) - Parent ID for related fixtures or markets. - **altTeaser** (boolean) - Indicates if an alternative teaser is available. - **resultingUnit** (string) - The unit for the result (e.g., 'Regular'). - **version** (integer) - Version number of the fixture data. ### Response Example ```json { "fixtures": [ { "id": 1504322998, "starts": "2022-02-28T21:30:00Z", "home": "Ana Konjuh", "away": "Katie Boulter", "rotNum": "10909", "liveStatus": 1, "status": "O", "parlayRestriction": 1, "parentId": 1504081918, "altTeaser": false, "resultingUnit": "Regular", "version": 400699030 } ] } ``` ``` -------------------------------- ### Get Odds Changes (Snapshot and Delta Calls) Source: https://github.com/pinnacleapi/pinnacleapi-documentation/blob/master/FAQ.md Demonstrates how to retrieve odds changes by first making a snapshot call to get cached odds, and then a delta call with a 'since' parameter to fetch only the changes since the snapshot. This is useful for real-time odds updates. ```API 1) Call the snapshot /odds (without the since parameter) - this would return cached odds snapshot 2) Call the delta /odds (with the `since` parameter, from the snapshot response) - to get all the changes since the snapshot. ``` -------------------------------- ### GET /v1/fixtures/settled Source: https://context7.com/pinnacleapi/pinnacleapi-documentation/llms.txt Retrieves settlement information for completed events. ```APIDOC ## GET /v1/fixtures/settled ### Description Retrieves settlement information for completed events including deletion status. ### Method GET ### Endpoint https://api.pinnacle.com/v1/fixtures/settled ### Parameters #### Query Parameters - **sportId** (integer) - Required - The ID of the sport. - **since** (integer) - Optional - Timestamp to filter settled fixtures. ### Response #### Success Response (200) - **sportId** (integer) - The sport ID. - **leagues** (array) - List of leagues with settled events. #### Response Example { "sportId": 29, "leagues": [ { "id": 2331, "events": [ { "id": 933912855, "periods": [] } ] } ] } ``` -------------------------------- ### Odds API Source: https://github.com/pinnacleapi/pinnacleapi-documentation/blob/master/APIChangelog.md This section provides an example of odds data structure, including periods and line details. ```APIDOC ## GET /api/v1/odds ### Description Retrieves odds for a given fixture or market. ### Method GET ### Endpoint /api/v1/odds ### Parameters #### Query Parameters - **fixtureId** (integer) - Required - The ID of the fixture to retrieve odds for. - **marketType** (string) - Optional - Filter odds by market type (e.g., 'MONEYLINE', 'SPREAD'). ### Response #### Success Response (200) - **id** (integer) - The ID of the fixture. - **periods** (array) - A list of periods for the fixture. - **lineId** (integer) - The ID of the odds line. - **periodNumber** (integer) - The period number (e.g., 1 for first half, 2 for second half). - **odds** (array) - A list of odds for this line. - **handicap** (string) - The handicap for the odds. - **moneyline** (integer) - The moneyline value. - **price** (number) - The price of the odds. - **team** (string) - The team associated with the odds. ### Response Example ```json { "id": 1504322998, "periods": [ { "lineId": 1601797796, "periodNumber": 1, "odds": [ { "handicap": "-1.5", "moneyline": -110, "price": -110, "team": "home" }, { "handicap": "+1.5", "moneyline": -110, "price": -110, "team": "away" } ] } ] } ``` ``` -------------------------------- ### GET /v1/line Source: https://context7.com/pinnacleapi/pinnacleapi-documentation/llms.txt Retrieves exact limits and prices for a specific line before placing a bet. Use this to validate a bet before submission. ```APIDOC ## GET /v1/line ### Description Retrieves exact limits and prices for a specific line before placing a bet. Use this to validate a bet before submission. ### Method GET ### Endpoint https://api.pinnacle.com/v1/line ### Parameters #### Query Parameters - **sportId** (integer) - Required - The ID of the sport. - **leagueId** (integer) - Required - The ID of the league. - **eventId** (integer) - Required - The ID of the event. - **periodNumber** (integer) - Required - The period number. - **betType** (string) - Required - The type of bet (e.g., SPREAD). - **team** (string) - Required - The team name. - **handicap** (number) - Optional - The handicap value. ### Request Example curl -X GET "https://api.pinnacle.com/v1/line?sportId=29&leagueId=218153&eventId=1563271334&periodNumber=0&betType=SPREAD&team=Team1&handicap=-0.25" ### Response #### Success Response (200) - **status** (string) - Status of the request. - **price** (number) - The price of the line. - **maxRiskStake** (number) - Maximum risk stake allowed. ``` -------------------------------- ### GET /v1/teaserlines Source: https://github.com/pinnacleapi/pinnacleapi-documentation/blob/master/GettingStarted.md Validates a proposed teaser bet, calculates limits, and retrieves pricing without placing the bet. ```APIDOC ## GET /v1/teaserlines ### Description Validates a proposed teaser bet and retrieves pricing information and bet limits. ### Method GET ### Endpoint /v1/teaserlines ### Parameters #### Query Parameters - **teaserId** (integer) - Required - The unique identifier for the teaser type. - **leg** (array) - Required - List of legs included in the teaser. ### Request Example GET /v1/teaserlines?teaserId=123&leg=... ### Response #### Success Response (200) - **minBet** (decimal) - Minimum allowed bet amount. - **maxBet** (decimal) - Maximum allowed bet amount. - **price** (decimal) - The price offered for the teaser. #### Response Example { "minBet": 1.00, "maxBet": 500.00, "price": -110 } ``` -------------------------------- ### GET /api/fixtures Source: https://github.com/pinnacleapi/pinnacleapi-documentation/blob/master/APIChangelog.md Retrieves a list of upcoming and live sports fixtures, including league and event details. ```APIDOC ## GET /api/fixtures ### Description Fetches sports fixtures, organized by sport and league, including event start times, team names, and live status. ### Method GET ### Endpoint `/api/fixtures` ### Query Parameters - **sportId** (integer) - Required - The ID of the sport to retrieve fixtures for. ### Response #### Success Response (200) - **sportId** (integer) - The ID of the sport. - **last** (integer) - Timestamp of the last update. - **league** (array) - An array of league objects. - **id** (integer) - The ID of the league. - **name** (string) - The name of the league. - **events** (array) - An array of event objects. - **id** (integer) - The ID of the event. - **starts** (string) - The start time of the event in ISO 8601 format. - **home** (string) - The home team name. - **away** (string) - The away team name. - **rotNum** (string) - Rotation number for the event. - **liveStatus** (integer) - The live status of the event (e.g., 1 for live, 2 for pre-match). - **status** (string) - The status of the event (e.g., 'O' for open). - **parlayRestriction** (integer) - Parlay restriction level. - **parentId** (integer) - Optional - ID of the parent event if this is a sub-event. - **altTeaser** (boolean) - Indicates if alternate teasers are available. - **resultingUnit** (string) - The unit for results (e.g., 'Regular'). - **version** (integer) - The version of the event data. ### Request Example ```json { "sportId": 29, "last": 442452738, "league": [ { "id": 218153, "name": "Zanzibar - Mapinduzi Cup", "events": [ { "id": 1563271322, "starts": "2022-11-17T13:30:00Z", "home": "TeamA", "away": "TeamB", "rotNum": "99552", "liveStatus": 2, "status": "O", "parlayRestriction": 2, "altTeaser": false, "resultingUnit": "Regular", "version": 442452541 } ] } ] } ``` ### Response Example ```json { "sportId": 29, "last": 442452738, "league": [ { "id": 218153, "name": "Zanzibar - Mapinduzi Cup", "events": [ { "id": 1563271322, "starts": "2022-11-17T13:30:00Z", "home": "TeamA", "away": "TeamB", "rotNum": "99552", "liveStatus": 2, "status": "O", "parlayRestriction": 2, "altTeaser": false, "resultingUnit": "Regular", "version": 442452541 }, { "id": 1563271334, "starts": "2022-11-17T13:30:00Z", "home": "TeamA", "away": "TeamB", "rotNum": "99556", "liveStatus": 1, "status": "O", "parlayRestriction": 1, "parentId": 1563271322, "altTeaser": false, "resultingUnit": "Regular", "version": 442452738 } ] } ] } ``` ``` -------------------------------- ### GET /v1/fixtures Source: https://context7.com/pinnacleapi/pinnacleapi-documentation/llms.txt Retrieves current events and fixtures for a sport, supporting delta updates for efficiency. ```APIDOC ## GET /v1/fixtures ### Description Retrieves current events/fixtures for a sport. Supports delta calls using the since parameter to get only changed fixtures. ### Method GET ### Endpoint https://api.pinnacle.com/v1/fixtures ### Parameters #### Query Parameters - **sportId** (integer) - Required - The ID of the sport. - **since** (integer) - Optional - The last version ID received to fetch only updates. ### Response #### Success Response (200) - **last** (integer) - The current version ID for delta tracking. - **league** (array) - List of leagues containing events. #### Response Example { "sportId": 29, "last": 442452738, "league": [] } ``` -------------------------------- ### GET /v1/sports Source: https://context7.com/pinnacleapi/pinnacleapi-documentation/llms.txt Retrieves the list of all available sports. It is recommended to cache this data as it changes infrequently. ```APIDOC ## GET /v1/sports ### Description Retrieves the list of all available sports. This endpoint should be called at most once every 60 minutes. ### Method GET ### Endpoint https://api.pinnacle.com/v1/sports ### Response #### Success Response (200) - **sports** (array) - List of sports objects #### Response Example { "sports": [ { "id": 29, "name": "Soccer", "hasOfferings": true, "eventCount": 1250 } ] } ``` -------------------------------- ### Retrieve Betting Odds Source: https://github.com/pinnacleapi/pinnacleapi-documentation/blob/master/APIChangelog.md Example of an odds response structure, detailing line IDs, moneyline values for home/away teams, and period-specific betting information. ```json { "sportId": 33, "last": 1894932080, "leagues": [ { "id": 2957, "events": [ { "id": 1562180480, "periods": [ { "lineId": 1894801784, "number": 1, "moneyline": { "home": -130.0, "away": 109.0 } } ] } ] } ] } ``` -------------------------------- ### Get Customer Balance - Bash Source: https://context7.com/pinnacleapi/pinnacleapi-documentation/llms.txt Retrieves the current account balance information for the authenticated client. Returns available balance, outstanding transactions, credit status, and currency. ```bash curl -X GET "https://api.pinnacle.com/v1/client/balance" \ -H "Authorization: Basic U03MyOT23YbzMDc6d3c3O1DQ1" \ -H "Accept: application/json" ``` -------------------------------- ### Linking Special Events to Fixtures (JSON Example) Source: https://github.com/pinnacleapi/pinnacleapi-documentation/blob/master/FAQ.md Illustrates how to link 'special' markets, such as props and futures, back to their associated events. The `event` object within the special market response contains an `id` that can be used to correlate with events from the `/fixtures` endpoint. ```json { "id": 1065232780, ... "event": { "id": 1051780418, "periodNumber": 1, "home": "Malta", "away": "Norway" }, ... } ``` -------------------------------- ### Example JSON Response for Alternate Market Limits Source: https://github.com/pinnacleapi/pinnacleapi-documentation/blob/master/APIChangelog.md This snippet illustrates the structure of the alternate market limits response, including the 'max' property introduced to support specific market limits. ```json { "altLineId": 30375816408, "points": 21.5, "over": -139.0, "under": 116.0, "max": 3000.0 } ``` -------------------------------- ### Retrieve Event Fixtures Source: https://github.com/pinnacleapi/pinnacleapi-documentation/blob/master/APIChangelog.md Example of a fixtures response structure, including event metadata, live status, and the explicit resultingUnit field for sports like tennis. ```json { "sportId": 33, "last": 440033657, "league": [ { "id": 2957, "name": "ATP Paris - R1", "events": [ { "id": 1562180480, "starts": "2022-10-31T20:30:00Z", "home": "Sebastian Korda", "away": "Alex De Minaur", "rotNum": "8325", "liveStatus": 0, "status": "O", "parlayRestriction": 2, "altTeaser": false, "resultingUnit": "Sets", "version": 440033645 } ] } ] } ``` -------------------------------- ### POST /v1/bets/straight Source: https://github.com/pinnacleapi/pinnacleapi-documentation/blob/master/GettingStarted.md Places a straight bet on a specific event using odds retrieved from the Get Odds or Get Line operations. ```APIDOC ## POST /v1/bets/straight ### Description Places a single straight bet. Requires mapping parameters from the Get Odds response to the request body. ### Method POST ### Endpoint /v1/bets/straight ### Parameters #### Request Body - **sportId** (integer) - Required - The ID of the sport. - **leagueId** (integer) - Required - The ID of the league. - **eventId** (long) - Required - The ID of the event. - **periodNumber** (integer) - Required - The period number of the event. - **team** (string) - Required - The team selection (e.g., Team1, Team2, Draw). - **handicap** (decimal) - Optional - The handicap value if applicable. - **lineId** (long) - Required - The line ID from Get Odds or Get Line. - **altLineId** (long) - Optional - The alternate line ID if betting on an alternate line. ### Request Example { "sportId": 29, "leagueId": 1980, "eventId": 123456789, "periodNumber": 0, "team": "Team1", "lineId": 987654321 } ### Response #### Success Response (200) - **betId** (long) - The unique identifier for the placed bet. - **status** (string) - The status of the bet placement. #### Response Example { "betId": 555000111, "status": "ACCEPTED" } ``` -------------------------------- ### API Usage Rules Source: https://github.com/pinnacleapi/pinnacleapi-documentation/blob/master/README.md Guidelines for efficient API usage, including delta/snapshot patterns and rate limiting. ```APIDOC ## API Usage Rules ### Delta and Snapshot Calls - **Snapshot**: Initial call to get full state. Do not provide `since` parameter. - **Delta**: Subsequent calls to get updates. Use the `last` property from the previous response as the `since` parameter. ### Performance Guidelines - Do not loop calls for individual sports or leagues. Use `leagueIds` or `eventIds` parameters to batch requests. - Limit `/sports` endpoint calls to once every 60 minutes. - Do not loop the `/line` endpoint; it is intended for price checks prior to bet placement. ### Deduplication - All place bet requests support automatic deduplication using a `uniqueRequestId`. Requests are tracked for 30 minutes. ``` -------------------------------- ### Get Odds API Response (JSON) Source: https://github.com/pinnacleapi/pinnacleapi-documentation/blob/master/APIChangelog.md Sample JSON response for the Get Odds API endpoint. This response includes detailed odds information for various periods of an event, including moneyline, spread, and total odds. ```json { "sportId": 29, "last": 1912670245, "leagues": [ { "id": 218153, "events": [ { "id": 1563271334, "awayScore": 1.0, "homeScore": 1.0, "awayRedCards": 1, "homeRedCards": 0, "periods": [ { "lineId": 1912670188, "number": 8, "cutoff": "2022-11-17T17:45:51.367Z", "maxMoneyline": 100.0, "status": 1, "moneylineUpdatedAt": "2022-11-17T14:34:49.527Z", "moneyline": { "home": -322.0, "away": 212.0 } }, { "lineId": 1912670213, "number": 3, "cutoff": "2022-11-17T17:46:01.913Z", "maxSpread": 100.0, "maxMoneyline": 100.0, "maxTotal": 100.0, "status": 1, "spreadUpdatedAt": "2022-11-17T14:34:51.603Z", "moneylineUpdatedAt": "2022-11-17T14:34:51.603Z", "totalUpdatedAt": "2022-11-17T14:34:51.603Z", "spreads": [ { "hdp": -0.25, "home": -127.0, "away": -109.0 }, { "altLineId": 30710204111, "hdp": -1.0, "home": 404.0, "away": -823.0, "max": 100.0 }, { "altLineId": 30710204112, "hdp": -0.75, "home": 195.0, "away": -306.0, ``` -------------------------------- ### Authenticate with Pinnacle API using cURL Source: https://context7.com/pinnacleapi/pinnacleapi-documentation/llms.txt Demonstrates how to perform HTTP Basic authentication by Base64 encoding the username and password. This header is required for all API requests to the Pinnacle service. ```bash curl -X GET "https://api.pinnacle.com/v1/sports" \ -H "Authorization: Basic $(echo -n 'username:password' | base64)" \ -H "Accept: application/json" \ -H "User-Agent: MyBettingApp/1.0" ``` -------------------------------- ### GET /v2/line/parlay Source: https://github.com/pinnacleapi/pinnacleapi-documentation/blob/master/APIChangelog.md Retrieves parlay and round robin limits. ```APIDOC ## GET /v2/line/parlay ### Description Retrieves parlay and round robin betting limits. This endpoint replaces the deprecated /v1/line/parlay. ### Method GET ### Endpoint /v2/line/parlay ### Parameters #### Query Parameters - **sportId** (integer) - Required - The ID of the sport. - **leagueId** (integer) - Required - The ID of the league. ### Request Example GET /v2/line/parlay?sportId=29&leagueId=1980 ### Response #### Success Response (200) - **limits** (object) - The parlay and round robin limits for the requested league. #### Response Example { "limits": { "max": 3000.0 } } ``` -------------------------------- ### Authentication and Headers Source: https://github.com/pinnacleapi/pinnacleapi-documentation/blob/master/README.md Details on how to authenticate requests and set required headers for the Pinnacle API. ```APIDOC ## Authentication ### Description The API uses HTTP Basic authentication. All requests must be made over HTTPS. ### Headers - **Authorization**: Basic - **Accept**: application/json - **Content-Type**: application/json - **User-Agent**: Required for compression support ### Example Authorization: Basic U03MyOT23YbzMDc6d3c3O1DQ1 ``` -------------------------------- ### GET /v1/odds/special Source: https://context7.com/pinnacleapi/pinnacleapi-documentation/llms.txt Retrieves odds for special markets such as props and futures. ```APIDOC ## GET /v1/odds/special ### Description Retrieves odds for special markets. ### Method GET ### Endpoint https://api.pinnacle.com/v1/odds/special ### Parameters #### Query Parameters - **sportId** (integer) - Required - The ID of the sport. - **leagueIds** (string) - Optional - Comma separated list of league IDs. ### Request Example curl -X GET "https://api.pinnacle.com/v1/odds/special?sportId=29&leagueIds=2331" -H "Authorization: Basic U03MyOT23YbzMDc6d3c3O1DQ1" ### Response #### Success Response (200) - **sportId** (integer) - The sport ID. - **leagues** (array) - List of leagues containing specials. #### Response Example { "sportId": 29, "leagues": [ { "id": 2331, "specials": [ { "id": 1065232780, "maxBet": 500.0 } ] } ] } ``` -------------------------------- ### Retrieve Prematch Fixtures Data Structure Source: https://github.com/pinnacleapi/pinnacleapi-documentation/blob/master/APIChangelog.md This JSON snippet illustrates the structure of prematch fixture objects returned by the API. It includes event identifiers, start times, participant names, and status flags for various betting markets. ```json [ { "id": 1504081918, "starts": "2022-02-28T19:45:00Z", "home": "Ana Konjuh", "away": "Katie Boulter", "rotNum": "8909", "liveStatus": 0, "status": "O", "parlayRestriction": 2, "altTeaser": false, "resultingUnit": "Regular", "version": 400671698 }, { "id": 1504082301, "starts": "2022-02-28T19:45:00Z", "home": "Ana Konjuh (-1.5 Sets)", "away": "Katie Boulter (+1.5 Sets)", "rotNum": "8909", "liveStatus": 0, "status": "O", "parlayRestriction": 2, "parentId": 1504081918, "altTeaser": false, "resultingUnit": "Sets", "version": 400671702 } ] ``` -------------------------------- ### GET /v3/bets Source: https://github.com/pinnacleapi/pinnacleapi-documentation/blob/master/APIChangelog.md Retrieves information about placed bets including status and event details. ```APIDOC ## GET /v3/bets ### Description Retrieves a list of placed bets. Includes support for Asian handicap half won/lost settlement via betStatus2 and legBetStatus2. ### Method GET ### Endpoint /v3/bets ### Parameters #### Query Parameters - **betlist** (string) - Optional - Filter by specific bet IDs. ### Request Example GET /v3/bets?betlist=123456789 ### Response #### Success Response (200) - **bets** (array) - List of bet objects. - **betStatus2** (string) - Status for Asian handicap settlement. - **eventStartTime** (string) - Start time of the event. #### Response Example { "bets": [ { "betId": 123456789, "betStatus2": "HALF_WON", "eventStartTime": "2022-08-16T12:00:00Z" } ] } ``` -------------------------------- ### Retrieve Available Sports List Source: https://context7.com/pinnacleapi/pinnacleapi-documentation/llms.txt Fetches the list of all sports supported by the API. This endpoint should be called sparingly, at most once every 60 minutes, as the data is relatively static. ```bash curl -X GET "https://api.pinnacle.com/v1/sports" \ -H "Authorization: Basic U03MyOT23YbzMDc6d3c3O1DQ1" \ -H "Accept: application/json" ```