Feedback for the API should be directed to customerservice@pinnacle.com, however, we do not offer technical support or instructions beyond the available manual

Pinnacle API Specification v1.0
(updated: 2017/6/27)

Last Updated

27/06/2017

Version Control

DateChange
2013/08/23 Initial release
2013/11/04 1. Added betterLineWasAccepted parameter to Place Bet response

2. Added following parameter to Get Bets response
· pitcher1
· pitcher2
· pitcher1MustStart
· pitcher2MustStart

3. Added LISTED_PITCHERS_SELECTION_ERROR to PLACEBET_ERROR_CODE enum
2013/11/14 Added the following properties to the Get Bets response:
· team1
· team2
2013/12/09 Corrected wording: · In Place Bet Response, updated Description column for errCode parameter
· Getting Started, Step 2 - Get Lines, Note
2014/01/27 Added period number description to Place Bet request, Get Feed response and Get Line request
Added Get Feed operation example in PHP

2014/02/10 Added to Overview “Please note that in order to access Pinnacle API the account must be funded”
2014/11/05
  • Added new properties to Get Bets response:

isLive

periodNumber

team1Score

team1Score

ftTeam1Score

ftTeam2Score

pTeam1Score

pTeam1Score

  • Added new property lStatus to Get Feed response
  • Added Java example for Get Feed operation
2014/12/29
  • Added Get Inrunning operation
  • Added Translation operation
2015/05/11
  • Added Get Odds operation
  • Added Get Fixtures operation
  • Added parlay betting functionality
2015/08/31 Added R library package in Code Examples
2015/11/19
  • Added teaser betting functionality
  • Added Get Settled Fixtures operation
  • Added CANCELLED option to BETLIST_TYPE enum in Get Bets operation.
2015/12/21 Get Feed operation is removed from the manual, it will be decommissioned mid Feb 2016.
2016/01/12 Removed Greek language from the Get Translations operation.
2016/01/21 Updated /v2/ operations for /Currencies, /Sports and /Leagues requests
2016/06/09 Added Special Fixtures, Special Odds, Special Line and Special Bet operations
2016/08/18 Updated DataType for certain Id fields
2016/08/25 Added release notes section with release notes for API v7.5
2016/09/20 Updated release notes section with release notes for API v7.6
2016/11/21 Updated release notes section with release notes for API v7.7
2016/11/25
  • Added SPECIAL_BET_TYPE enum for 'Get Special Fixtures'
  • Added BETLIST_BET_TYPE enum for 'Get Bets'
  • Updated 'Get Settled Special Fixtures' to use SETTLEMENT_STATUS enum instead of SETTLED_STATUS(non-existing under ENUMS)
2016/12/19
  • Updated release notes section with release notes for API v7.8
  • Removed unsupported operations and related text/examples.
2016/12/20 Added details for 'v1/cancellationreasons' operation.
2017/3/12 api.pinnaclesports.com will be decommissioned shortly, please use api.pinnacle.com.
2017/6/26 isMaxStakeBet - new property in the Place Bet request
updateSequence - new property in the Get Bets response for all bet types.
New properties in the Get Bets response for special bet type:
  • specialName
  • units
  • team1
  • team2
Added a note to Get Bets operation for settled bet list on how to use fromDate/toDate.

Overview

Pinnacle API is a RESTful service for straight, special, paralys and teasers betting on all sports. 

Please note that in order to access Pinnacle API you must have a funded account.

Data Formats

Pinnacle API supports only JSON format.

HTTP Request must have:

Accept: application/json

POST HTTP Request must have JSON body content and:

Content-Type: application/json

Compression

API supports HTTP compression. We strongly recommend using compression as it would give the best performances.

Please make sure you set the User Agent http header or compression might not work.

Date time

All dates and times are in UTC time zone, ISO 8601 format

Deduplication

When a client issues a network request, it is always possible for the request to timeout or return an error status code indicating that bet may not have been accepted. This opens up the possibility of the same request being sent more than once, which could create duplicate bets. Deduplication is a technique for avoiding creating these duplicates when retrying a create request.  We do the deduplication automatically for you.  If the bet is accepted, we store the uniqueRequestId in the system and we keep it for 30 min. If you try again to place a bet with the same uniqueRequestId, within that time range,  you will get appropriate error.

All place bet requests support deduplication.

Authentication

API use HTTP Basic access authentication . Always use HTTPS to access the API. You need to send HTTP Request header like this:

Authorization: Basic <Base64 value of UTF-8 encoded “username:password”>

For example:
Authorization: Basic U03MyOT23YbzMDc6d3c3O1DQ1

Getting Started

Step 1 – Sign Up

To get started you would need to create an account.

Please note that in order to access Pinnacle API the account must be funded.

Step 2 - Get a List of Offered Sports and Leagues

You would need to get the list of sports from Get Sports operation. If you are interested in particular leagues you can get all sport leagues by calling Get Leagues operation.

Step 3 - Place Bet

To place a bet please check sections How to place a straight bet? and How to place a parlay bet?

Step 4 - Get Bets

To check the status of the placed bet you need to call Get Bets operation. The recommended way is to use bet id.
For bets on live events that are in PENDING_ACCEPTANCE state, you can call Get Bets every 5 sec to get the new status of the bet, to see if it’s accepted or rejected.

How to Place a Straight Bet?

Step 1 – Call Get Fixtures operation

This will return the list of events that are currently offered. To get updates use delta requests (with since parameter)

Step 2 – Call Get Odds operation

This will return the list of odds that are currently offered. To get updates use delta requests (with since parameter)

Step 3 - Get Line (optional)

Call Get Line operation if you need exact limits or if you are interested in a specific line. Please note that the limits in the Get Odds response are general limits.

Step 4 - Place Bet

To place a bet you need to call Place Bet operation.



Table shows how to do mapping of Get Odds operation response to Place Bet and Get Line request.

ParameterGet Odds response parameter
sportId sportId
leagueId League Type -> id
eventId Event Type -> id
periodNumber Period Type -> number
team

Depends on selected odds from:

· Spread Type
· Moneyline Type
· Team Total Points

check the value in the corresponding Get Leagues Response -> League Type -> homeTeamType and set the appropriate value.

Example 1:

Given:
    homeTeamType="Team1"
When:
    Selected odds is Spread Type -> away
Then:
    team=Team2

Example 2:

When:
    Selected odds is Moneyline Type -> draw
Then:
    team=Draw

Example 3:

Given:
    homeTeamType="Team2"
When:
    Selected odds is Team Total Points Type -> away
Then:
    team=Team1

handicap Spread Type -> hdp
Total Points Type -> points
Team Total Points Type -> Total Points Type -> points
lineId Period Type -> lineId
altLineId Spread Type ->altLineId
Total Points Type -> altLineId

If you call Get Line operation, use the lineId (altLineId) from the response.

A period in an event is open for betting if:

1. Get Fixtures Response -> Event Type -> status has a value I or O
2. Event period has odds in Get Odds Response
3. Get Odds Response -> Period Type -> cutoff is in the future.

Please note that for live events, odds change quite frequently as well as the event status, from O/I to H and vice versa. Due to these frequent changes, it’s possible that you will be getting status NOT_EXISTS in the Get Line response more often than for the dead ball events.

How to Place a Parlay Bet?

Step 1 – Call Get Fixtures operation
This will return the list of events that are currently offered. To get updates use delta requests (with since parameter)
 
Step 2 – Call Get Odds operation
This will return the list of odds that are currently offered. To get updates use delta requests (with since parameter)
 
Step 3 – Call Get Parlay Lines operation
For each event and bet type you want to bet on, construct a Leg object for Get Parlay Lines call and submit your request using

POST /line/parlay

If response contains Invalid Legs – remove them and resubmit the request
If response have status = ‘VALID’ – place parlay bet request can be created
 
Step 4 – Call Place Parlay Bet
Construct a list of legs using lineId values from Get Parlay Lines response and specify roundRobbinOptions out of those retuned in Get Parlay Lines response.

How to Place a Teaser Bet?

Step 1 – call Get Teaser Groups operation
This will return the list of teasers by group containing all the details for each teaser. For example; the minimum/maximum number of legs, payout combinations for the chosen teaser and leagues for each teaser.

Step 2 – call Get Teaser Odds operation
This will return the list of adjusted points that are currently offered for the given teaser.
 
Step 3 – Optionally; call Get Teaser Lines operation
Prior to submitting a teaser bet you can call this endpoint to validate your proposed bet, calculate the effective minimum/maximum win/risk bet limits and as well as get the price you will receive for the bet without actaully placing a bet.

Step 4 – call Place Teaser Bet operation
Using the information obtained from the previous steps; build and place your bet.


How to Place a Special Bet?

Step 1 – call Get Special Fixtures operation
This will return the list of specials that are currently offered. To get updates use delta requests (with since parameter)

Step 2 – call Get Special Odds operation
This will return the list of special odds that are currently offered. To get updates use delta requests (with since parameter)
 
Step 3 – Optionally; call Get Special Lines operation
Prior to submitting a special bet you can call this endpoint to validate your proposed bet, calculate the effective minimum/maximum win/risk bet limits and as well as get the price you will receive for the bet without actaully placing a bet.

Step 4 – call Place Special Bet operation
Using the information obtained from the previous steps; build and place your bet.

FAQs

Please check our fair use policy

Please ensure that any links back to www.pinnacle.com are tagged with your tracking link. Your tracking links are available from your affiliate account accessed at http://affiliates.pinnacle.com

A correct tracking link will have the format:

http://affiliates.pinnacle.com/processing/clickthrgh.asp?btag=a_numbersb_numbers

All feed command requests that have the same parameters (e.g. same client ID/API key/sport ID) are cached for one minute.

Yes. To link directly to our odds pages please get in touch via customerservice@pinnacle.com

Get Sports and Get Leagues operations have hasOfferings property that indicates availability of the markets.

We use exchange rates provided by oanda.com which we update every 24 hours. Please note that for non-USD currencies, we round them to the largest integer less than or equal to the specified decimal number resulting from currency conversion. For example, a maximum bet amount of £345.23 would be rounded down to £345.

All times displayed in the feed are in GMT.

Please use Get Settled Fixtures to find out if the event's period was settled or the event was deleted.

             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.

   Delta response has only changed periods, with all the markets that are currently offered. For example if we offer period 0 and period 1 odds on an event and there was a change in one of the markets in period 1 – the delta call will have only period 1 with all the markets that we currently offer, not just the changed markets, and the period 0 will not be in the delta response.

Example:

1) Snapshot has period 1 and period 0 , and both off them have moneyline and spreads odds.
2) Delta call returns just period 1 with the same moneyline and totals

=> this mean that the period 0 did not have any changes and on the period 1 the spread is not offered anymore while the totals are offered now.

Affiliates

How do I get access to the API as an affiliate?

In order to access the API as an affiliate, you are required to send 5 new funded sign ups over the previous 3 months. If you are unable to refer 5 new funded sign ups over the previous 3 month period access to the API may be rescinded.

Fair Use

This API is protected by copyright laws and  is provided free of charge to our players, partners and affiliates only.

The use of this free resource is subject to our "Fair Use Policy" which is set out below.

When you utilise the API, you are agreeing to this policy. Any breaches of this policy, whether intentional or not, may result in a temporary or permanent suspension of your access without notice at our sole discretion.

 

Fair usage

The API is provided to players to facilitate wagering and may not be used for data gathering, scrapping or any other purpose. The API usage must be proportionate to wagering activities as determined on a case by case basis by Pinnacle.

Unless explicitly agreed in writing by Pinnacle, the commercial usage of the API will lead to the permanent suspension of your access.

You will not attempt or encourage others to:

Sell, rent, lease, sublicense, redistribute, or syndicate the API to any third party without prior written approval from Pinnacle.

The following limitations must be observed per sport:

 

Best practice

Please use a delta /fixtures and /odds calls (with the since parameter) calls instead of a snapshot /fixtures and /odds calls (without since parameter).

Disclaimer

Pinnacle is not liable for use of the API for any purpose, the API is provided on an “as is” and “as available” basis, without warranties of any kind, either express or implied, including, without limitation, implied warranties of merchantability, fitness for a particular purpose or non-infringement.

Code Examples



For users of R, please use the pinnacle.API package available on CRAN. (install.packages(“pinnacle.API”)).
The source code can be found here.

API Release Notes

Date Version
03-May-2017 7.9
13-Dec-2016 7.8
10-Nov-2016 7.7
30-Aug-2016 7.6
21-Jul-2016 7.5


Version 7.9

Sr. No. Summary
1

IMPROVEMENTPerformance optimizations when querying lines

2 FIX: Parlay odds returning incorrect values
3 FEATURENew Contest Limits calculation


Version 7.8

Sr. No. Summary
1

FEATURE: NEW OPERATION ['/v1/cancellationReasons'] - Get cancellation reasons API call.

2 FEATURE: 'cancellationReason' field added to response for 'v1/bets', 'v1/fixures/settled' and 'v1/fixtures/special/settled' operations.


Version 7.7

Sr. No. Summary
1 FIX: Appropriate HTTP STATUS CODE on error.


Endpoint Scenario Previous Response (HTTP_STATUS) New response (HTTP_STATUS)
v2/leagues Request Invalid  [Error Msg] (200) BAD_REQUEST (400)

v1/currencies

v1/leagues

v1/sports

v2/leagues 

v2/sports

Server encountered error during processing Internal server error (200) INTERNAL_SERVER_ERROR (500)

v1/bets/parlay

v1/fixtures

v1/line/parlay

v1/line/teaser

v1/odds

v1/odds/parlay

v1/odds/teaser

v1/periods

v1/fixtures/special

v1/fixtures/special/settled

Accept header set to application/xml INVALID_REQUEST_DATA (400) ACCEPT_TYPE_NOT_SUPPORTED (406)
2 IMPROVEMENT: Invalid/missing base text for 'v1/translations' now return appropriate error message.
3 FIX: Place Parlay Bet operation now returns 'LineNotAvailable' instead of 'OfflineEvent' message for no longer offered line.
4 FIX: For '/v1/odds/parlay?oddsFormat=Decimal', API now returns odds in requested format for 'Offline' events. It was earlier returning odds in American format for offline games.
5 IMPROVEMENT: For all 500 error responses, where format is json, 'ref' field is returned which contains unique GUID. When contacting Pinnacle support, please include value for this ref field for quick response.
6 FIX: For '/v1/line' calls, handicap is now mandatory irrespective of the casing of the betType parameter value. This doesn't not apply for Moneyline.
7

FUTURE IMPROVEMENT (Planned for December 15th 2016)Output of betId for duplicate UniqueRequestId when placing all types of bets. BetId will be the Id for the previously Accepted bet. For straight and parlay pats the response structure will change as following:


Old Response: Http Status Code 400

           {
                "code": "DUPLICATED_REQUEST",
                "message": "Please use new uniqueRequestId."
           }

 
New Response: Http Status Code 200 
           {
                "status": "PROCESSED_WITH_ERROR",                 "errorCode": "DUPLICATED_REQUEST",
               "betId": 481392270,
                "uniqueRequestId": "dff9d834-87c4-46c7-8232-06a4dceff9dd"
           }
 

For API client developers: Please implement handling for both old and new formats so your code will handle the transition period correctly.



Version 7.6

Sr. No. Summary
1 BUG: API returns XML on /odds and /fixtures when ContentType header value is XML and Accept header is not specified
2 FEATURE: Add eventId filter to Get Odds and Get Fixtures  call
3 IMPROVEMENT: Get CANCELLED Bets performance improvement

Version 7.5

Sr. No. Summary
1 Change on the Get Odds behavior. Events and periods will appear in the response as per the matrix:

 

 Event with all periods in the pastEvent with at least one period in the future
Operation/API Version v7.5 v7.4 v7.5 v7.4
Get Odds Snapshot No Yes Yes Yes
Get Odds Delta Yes* Yes Yes* Yes

* GetOdds will return empty period if the cut-off time is in the past, similar to following:

{"periods": [{

    "lineId": 314110088,
    "number": 0,
    "cutoff": "2016-06-22T21:00:00Z"
}]}

2 HTTP status/Response codes adjusted
3 Added eventCount to Get Leagues and Get Sports response
4

Added new operation Get Periods , to return all sport periods

GET /v1/periods?sportid={sportid}

5 PlaceBet (straight) operation returns accepted price (only for ACCEPTED bets)
6 Added more currencies to the Get Currencies response

Operations

#GPeriodsGet Sports v2

Request

GET v2/sports


No request parameters

URL Example:

https://api.pinnacle.com/v2/sports

Response

Response is only in JSON.

ParameterTypeRequiredDescription
sports Array of Sport type Yes Sports container

Sport type

ParameterTypeRequiredDescription
id Int Yes Sport Id
name String Yes Sport name
hasOfferings Boolean Yes Whether the sport currently has events
leagueSpecialsCount Int Yes Indicates how many specials are in the given sport.
eventSpecialsCount Int Yes Indicates how many game specials are in the given sport.
eventCount Int Yes Indicates how many games are in the given sport.

Example of successful response

{
"sports": [
{
"id": 4,
"name": "Basketball",
"hasOfferings": true,
"leagueSpecialsCount": 1,
"eventSpecialsCount": 0,
"eventCount": 1
},
{
"id": 2,
"name": "Bandy",
"hasOfferings": false,
"leagueSpecialsCount": 0,
"eventSpecialsCount": 0,
"eventCount": 0
},
{
"id": 3,
"name": "Baseball",
"hasOfferings": true,
"leagueSpecialsCount": 0,
"eventSpecialsCount": 0,
"eventCount": 2
}
]
}

Example of response with an error

{
"status": "fail",
"error": {
"code": 99,
"message": "Internal server error"
},
"code": 99
}


Throws

GenericException type

Get Leagues v2

Request

GET v2/leagues?sportid={sportid}

ParameterTypeRequiredDescription
sportId Int Yes Sport id for which the leagues are requested

Example

To get all leagues for baseball:

https://api.pinnacle.com/v2/leagues?sportid=3

Response

Response is only in JSON.

ParameterTypeRequiredDescription
leagues Array of League type Yes Leagues container

League type:

ParameterTypeRequiredDescription
id Int Yes League Id
name String Yes League name
homeTeamType String Yes Specifies whether the home team is team1 or team2. You need this information to place a bet
hasOfferings Boolean Yes Whether the league currently has events
allowRoundRobins Boolean Yes Specifies whether you can place parlay round robins on events in this league
leagueSpecialsCount Int Yes Indicates how many specials are in the given league.
eventSpecialsCount Int Yes Indicates how many game special counts are in the given league.
eventCount Int Yes Indicates how many games are in the given league.

Example of successful response:

{
"leagues": [
{
"id": 267,
"name": "Europe - ABA League Adriatic All Star",
"homeTeamType": "Team1",
"hasOfferings": true,
"container": "",
"allowRoundRobins": true,
"leagueSpecialsCount": 0,
"eventSpecialsCount": 0,
"eventCount": 13
},
{
"id": 269,
"name": "America - U18 Championship",
"homeTeamType": "Team1",
"hasOfferings": true,
"container": "",
"allowRoundRobins": true,
"leagueSpecialsCount": 0,
"eventSpecialsCount": 0,
"eventCount": 21
}]
}

Example of response with an error

{
"code": "99",
"message": "Internal server error"
}


Throws

GenericException type

Get Fixtures

Returns all non-settled events.

Please note that it is possible that the event is in Get Fixtures response but not in Get Odds. This happens when the odds have not been set yet for the event.

Please note that it is possible to receive the same exact response when using "since" parameter. This is rare and can be caused by internal updates of event's properties.

Request

GET /v1/fixtures?sportId={sportid} &leagueIds=[{leagueId1},{leagueId2},…]&since={since}&IsLive={islive}

ParameterTypeRequiredDescription
sportId Int Yes The sport id for which to retrieve the fixutres
leagueIds Array No The leagueIds array may contain a list of comma separated league ids
since Long No This is used to receive incremental updates. Use the value of last from previous fixtures response

When since parameter is not provided, the fixtures are delayed up to 1 min to encourage the use of the parameter
islive BOOLEAN2 No To retrieve ONLY live events set the value to islive =1. Any other value will result in retrieval of events regardless of their Live status
eventIds Array No Filter by EventIds

URL Examples:

All soccer events:
https://api.pinnacle.com/v1/fixtures?sportid=29

Soccer events changes since last refresh:
https://api.pinnacle.com/v1/fixtures?sportid=29&since=26142386

All live Soccer events:
https://api.pinnacle.com/v1/fixtures?sportid=29&islive=1

Live Soccer events changes since last refresh:
https://api.pinnacle.com/v1/fixtures?sportid=29&islive=1& since=26142386

Selected soccer leagues:
https://api.pinnacle.com/v1/fixtures?sportid=29&leagueids=1728,1792,1817

Selected soccer leagues fixtures changes since last refresh:
https://api.pinnacle.com/v1/fixtures?sportid=29&leagueids=1728-1792-1817&since=1373383152874

Response

Response is only in JSON

ParameterTypeRequiredDescription
sportId Int Yes Same as requested sport Id
last Long Yes Use this value for the subsequent requests for since query parameter to get just the changes since previous response
league Array of League Type Yes Contains a list of Leagues

League Type:

ParameterTypeRequiredDescription
id Int Yes League ID
events Array of Event Type Yes Contains a list of events

Event Type:

ParameterTypeRequiredDescription
id Long Yes Event ID
starts DateTime Yes Start time of the event in UTC
home String Yes Home team name
away String Yes Away team name
rotNum String Yes Team1 rotation number
liveStatus LIVE_STATUS No Indicates event’s live status
status EVENT_STATUS Yes Status of the event
parlayRestriction PARLAY_RESTRICTION Yes Parlay status of the event
homePitcher String No Home team pitcher. Only for baseball.
awayPitcher String No Away team pitcher. Only for baseball.

Response Example:

GET /v1/fixtures?sportId=29&leagueIds=1833

{
"sportId": 29,
"last": 26142386,
"league": [
{
"id": 1833,
"events": [
{
"id": 383911973,
"starts": "2015-01-22T21:00:00Z",
"home": "America de Natal",
"away": "Barras",
"rotNum": "901",
"liveStatus": 0,
"status": "O",
"parlayRestriction": 0
},
{
"id": 383911974,
"starts": "2015-01-22T21:00:00Z",
"home": "Baraunas RN",
"away": "ASSU RN",
"rotNum": "904",
"liveStatus": 0,
"status": "O",
"parlayRestriction": 0
}
]
}
]
}

Throws

GenericException type

Get Settled Fixtures

Returns fixtures settled in the last 24 hours

Request

GET /v1/fixtures/settled?sportid={sportid}&leaguesIds=[{leagueId1},{leagueId2},…]&since={since}

ParameterTypeRequiredDescription
sportId Int Yes The sportid for which to retrieve the fixutres.
leagueIds Array No The leagueIds array may contain a list of comma separated league ids.
since Long No This is used to receive incremental updates. Use the value of last from previous fixtures response.

When since parameter is not provided, the fixtures are delayed up to 1 min to encourage the use of the parameter.

URL Examples:

All settled soccer events:

https://api.pinnacle.com/v1/fixtures/settled?sportid=29

All settled soccer events, for leagueIds 185632 and 10251:

https://api.pinnacle.com/v1/fixtures/settled?sportid=29&leagueIds=185632,10251

Response

Response is only in JSON

ParameterTypeRequiredDescription
sportId Int Yes Same as requested sport Id
last Long Yes Use this value for the subsequent requests for since query parameter to get just the changes since previous response
leagues Array of League Type Yes Contains a list of Leagues

League Type:

ParameterTypeRequiredDescription
id Int Yes League ID
events Array of Event Type Yes Contains a list of events

Event Type:

ParameterTypeRequiredDescription
id Long Yes Event ID
periods Array of Period Type Yes Contains a list of periods

Period Type:

ParameterTypeRequiredDescription
lineId Long Yes Line ID
number Int Yes

This represents the period of the match. For example, for soccer we have:

0 - Game
1 - 1st Half
2 - 2nd Half

For the full list of periods please check Get Periods operation.

settlementId Long Yes Unique id of the settlement. In case of a re-settlement, a new settlementId and settledAt will be generated.
settledAt DateTime Yes Date and time when the period was settled
status SETTLEMENT_STATUS Yes Period settlement status
team1Score Int Yes Team1 score
team2Score Int Yes Team2 score
cancellationReason Cancellation Reason Type No May be present ONLY for CANCELLED periods (status=3 or status=4)

Cancellation Reason Type:

ParameterTypeRequiredDescription
code string Yes Cancellation Reason Code. Please see Get Cancellation Reasons for details.
details Cancellation Specifics Type No Cancellation Specifics


Cancellation Specifics Type:

ParameterTypeRequiredDescription
correctTeam1Id string No
correctTeam2Id string No
correctListedPitcher1 string No
correctListedPitcher2 string No
correctSpread string No
correctTotalPoints string No
correctTeam1TotalPoints string No
correctTeam2TotalPoints string No
correctTeam1Score string No
correctTeam2Score string No
correctTeam1TennisSetsScore string No
correctTeam2TennisSetsScore string No

Response Examples

Response on Success

{
  "sportId": 29,
  "last": 75018,
  "leagues": [
    {
      "id": 185632,
      "events": [
        {
          "id": 519324221,
          "periods": [
            {
              "number": 1,
              "status": 1,
              "settlementId": 74952,
              "settledAt": "2015-11-11T00:18:50.94Z",
              "team1Score": 3,
              "team2Score": 2
            },
            {
              "number": 0,
              "status": 1,
              "settlementId": 74998,
              "settledAt": "2015-11-11T01:24:37.39Z",
              "team1Score": 8,
              "team2Score": 4
            }
          ]
        },
        {
          "id": 519323952,
          "periods": [
            {
              "number": 0,
              "status": 1,
              "settlementId": 75015,
              "settledAt": "2015-11-11T01:27:16.95Z",
              "team1Score": 7,
              "team2Score": 7
            },
            {
              "number": 1,
              "status": 3,
              "settlementId": 74964,
              "settledAt": "2015-11-11T00:21:44.107Z",
              "team1Score": 5,
              "team2Score": 3,
              "cancellationReason": {
                "code": "FBS_CW_227",
                "details": {
                  "correctTeam1Id": "Arizona Diamondbacks",
                  "correctTeam2Id": "Blue Jays Hits",
                  "correctListedPitcher1": "Smith",
                  "correctListedPitcher2": "Tony",
                  "correctSpread": "1.3",
                  "correctTotalPoints": "34.7",
                  "correctTeam1TotalPoints": "3.4",
                  "correctTeam2TotalPoints": "2.6",
                  "correctTeam1Score": "1",
                  "correctTeam2Score": "3",
                  "correctTeam1TennisSetsScore": "4",
                  "correctTeam2TennisSetsScore": "2"
                }
              }
            }
          ]
        }
      ]
    }
  ]
}

Response on Error

{
  "code": "FORBIDDEN",
"message": "Authorization failed, please supply a valid customer ID and password." }


Get Special Fixtures

Returns all non-settled specials (contests).

Please note that it is possible that the event is in Get Special Fixtures response but not in Get Special Odds. This happens when the odds have not been set yet for the event.

Please note that it is possible to receive the same exact response when using "since" parameter. This is rare and can be caused by internal updates of event's properties.

Request

GET /v1/fixtures/special?sportId={sportid}&leagueIds=[{leagueId1},{leagueId2},…]&since={since}

ParameterTypeRequiredDescription
sportId Int Yes The sport id for which to retrieve the special fixutres
leagueIds Array No The leagueIds array may contain a list of comma separated league ids
category String No Category of the special
eventId Long No Event id of the linked event
specialId Long No Specific special Id
since Long No This is used to receive incremental updates. Use the value of last from previous fixtures response
When since parameter is not provided, the fixtures are delayed up to 1 min to encourage the use of the parameter

URL Examples:

All soccer events:
https://api.pinnacle.com/v1/fixtures/special?sportid=29

Soccer events changes since last refresh:
https://api.pinnacle.com/v1/fixtures/special?sportid=29&since=26142386

All soccer specials:
https://api.pinnacle.com/v1/fixtures/special?sportid=29

A specific soccer special:
https://api.pinnacle.com/v1/fixtures/special?sportid=29&specialId=599762083

Soccer specials by category:
https://api.pinnacle.com/v1/fixtures/special?sportid=29&category=Group D

Selected soccer leagues:
https://api.pinnacle.com/v1/fixtures/special?sportid=29&leagueids=1728,1792,1817

Selected soccer leagues fixtures changes since last refresh:
https://api.pinnacle.com/v1/fixtures/special?sportid=29&leagueids=1728-1792-1817&since=1373383152874

Response

Response is only in JSON

ParameterTypeRequiredDescription
sportId Int Yes Same as requested sport Id
last Long Yes Use this value for the subsequent requests for since query parameter to get just the changes since previous response
leagues Array of Special League Type Yes Contains a list of Special Leagues

Special League Type:

ParameterTypeRequiredDescription
id Int Yes League ID
specials Array of Special Type Yes Contains a list of specials

Special Type:

ParameterTypeRequiredDescription
id Long Yes Special ID
betType SPECIAL_BET_TYPE Yes SPREAD
name String Yes Special name
date DateTime Yes Creation date and time of the special in UTC
cutoff DateTime Yes Start time of the special in UTC
category String Yes Category under which the special is recorded
units String No

Measurement in the context of the special. Applicable to Spread and Over/Under special bet types.

For hockey specials this could be "goals"

status BETTING_EVENT_STATUS Yes Status of the special
event EVENT No Optional event asscoaited with the special
contestants Array of Contestant Type Yes List of contestants

Event:

Parameter Type Required Description
id Int Yes

Event Id

periodNumber Int Yes The period of the match. For example: in soccer 0 = Game, 1 = 1st Half and 2 = 2nd Half

Contestant Type:

ParameterTypeRequiredDescription
id Long Yes Contestant ID
name String Yes Contestant name
rotNum Int Yes Rotation number

Response Example:

GET /v1/fixtures/special?sportId=4&leagueIds=487
{
  "sportId": 4,
  "last": 4162584,
  "leagues": [
    {
      "id": 487,
      "specials": [
        {
          "id": 480692765,
          "betType": "SPREAD",
          "name": "Kings to win 1st Half",
          "date": "2016-06-04T04:22:00Z",
          "cutoff": "2016-06-04T04:22:00Z",
          "category": "Basketball Category",
          "status": "I",
          "event": {
            "id": 480702638,
            "periodNumber": 1
          },
          "contestants": [
            {
              "id": 480692766,
              "name": "Yes",
              "rotNum": 7013
            },
            {
              "id": 480692767,
              "name": "No",
              "rotNum": 7014
            }
          ]
        }
      ]
    }
  ]
}

Throws

GenericException type

Get Settled Special Fixtures

Returns special fixtures settled in the last 24 hours

Request

GET /v1/fixtures/special/settled?sportid={sportid}&leaguesIds=[{leagueId1},{leagueId2},…]&since={since}

ParameterTypeRequiredDescription
sportId Int Yes The sportid for which to retrieve the fixutres.
leagueIds Array No The leagueIds array may contain a list of comma separated league ids.
since Long No This is used to receive incremental updates. Use the value of last from previous fixtures response.
When since parameter is not provided, the fixtures are delayed up to 1 min to encourage the use of the parameter.

URL Examples:

All settled soccer events:

https://api.pinnacle.com/v1/fixtures/special/settled?sportid=29

All settled soccer events, for leagueIds 185632 and 10251:

https://api.pinnacle.com/v1/fixtures/special/settled?sportid=29&leagueIds=185632,10251

Response

Response is only in JSON

ParameterTypeRequiredDescription
sportId Int Yes Same as requested sport Id
last Long Yes Use this value for the subsequent requests for since query parameter to get just the changes since previous response
leagues Array of League Type Yes Contains a list of Leagues

League Type:

ParameterTypeRequiredDescription
id Int Yes League ID
specials Array of Special Type Yes Contains a list of specials

Special Type:

ParameterTypeRequiredDescription
id Long Yes special Id
status SETTLEMENT_STATUS Yes Status of settled special fixture
settlementId Long Yes Id of the settlement
settledAt DateTime Yes Date and Time of the settlement in UTC
cancellationReason Cancellation Reason Type No May be present ONLY for CANCELLED specials (status=3 or status=4)

Cancellation Reason Type:

ParameterTypeRequiredDescription
code string Yes Cancellation Reason Code. Please see Get Cancellation Reasons for details.
details Cancellation Specifics Type No Cancellation Specifics


Cancellation Specifics Type:

ParameterTypeRequiredDescription
correctTeam1Id string No
correctTeam2Id string No
correctListedPitcher1 string No
correctListedPitcher2 string No
correctSpread string No
correctTotalPoints string No
correctTeam1TotalPoints string No
correctTeam2TotalPoints string No
correctTeam1Score string No
correctTeam2Score string No
correctTeam1TennisSetsScore string No
correctTeam2TennisSetsScore string No


Response Examples

Response on Success

{
  "sportId": 4,
  "last": 10808817,
  "leagues": [
    {
      "id": 487,
      "specials": [
        {
          "id": 480703029,
          "status": 1,
          "settlementId": 10808797,
          "settledAt": "2016-06-02T19:05:39Z"
        },
        {
          "id": 480697750,
          "status": 3,
          "settlementId": 10808817,
          "settledAt": "2016-06-02T03:00:07Z",
          "cancellationReason": {
            "code": "FBS_CW_227",
            "details": {
              "correctTeam1Id": "Arizona Diamondbacks",
              "correctTeam2Id": "Blue Jays Hits",
              "correctListedPitcher1": "Smith",
              "correctListedPitcher2": "Tony",
              "correctSpread": "1.3",
              "correctTotalPoints": "34.7",
              "correctTeam1TotalPoints": "3.4",
              "correctTeam2TotalPoints": "2.6",
              "correctTeam1Score": "1",
              "correctTeam2Score": "3",
              "correctTeam1TennisSetsScore": "4",
              "correctTeam2TennisSetsScore": "2"
            }
          }
        },
        {
          "id": 480703032,
          "status": 2,
          "settlementId": 10808770,
          "settledAt": "2016-06-02T19:09:28Z"
        },
        {
          "id": 480699683,
          "status": 3,
          "settlementId": 10808796,
          "settledAt": "2016-06-02T13:00:11Z",
          "cancellationReason": {
            "code": "FBS_CW_227",
            "details": {
              "correctTeam1Id": "Arizona Diamondbacks",
              "correctTeam2Id": "Blue Jays Hits",
              "correctListedPitcher1": "Smith",
              "correctListedPitcher2": "Tony",
              "correctSpread": "1.3",
              "correctTotalPoints": "34.7",
              "correctTeam1TotalPoints": "3.4",
              "correctTeam2TotalPoints": "2.6",
              "correctTeam1Score": "1",
              "correctTeam2Score": "3",
              "correctTeam1TennisSetsScore": "4",
              "correctTeam2TennisSetsScore": "2"
            }
          }
        }
      ]
    }
  ]
}

Response on Error

{

  "code": "FORBIDDEN",
"message": "Authorization failed, please supply a valid customer ID and password." }

Get Teaser Groups

Returns all teaser groups.

Request

GET /v1/teaser/groups?oddsFormat={ODDS_FORMAT}

ParameterTypeRequiredDescription
oddsFormat ODDS_FORMAT Yes Format the odds are returned in.

Request Example:

Get teaser groups with odds in American format
https://api.pinnacle.com/v1/teaser/groups?oddsFormat=AMERICAN

Response

json format only

ParameterTypeRequiredDescription
code TEASER_REQUEST_ERROR_CODE On Error Code identifying an error that occurred.
message String On Error Human friendly error message.
teaserGroups Array of TeaserGroup No A collection of TeaserGroups containing available teasers.

TeaserGroup:

ParameterTypeRequiredDescription
id Long Yes Unique identifier.
name String Yes Human friendly name.
teasers Array of Teaser Yes A collection of Teaser.

Teaser:

ParameterTypeRequiredDescription
id Long Yes Unique identifier.
description String Yes Human friendly description.
sportId Int Yes Unique identifier.
Sport details can be retrieved from a call to Get Sports endpoint.
minLegs Int Yes Minimum number of legs that must be selected.
maxLegs Int Yes Maximum number of legs that can be selected.
sameEventOnly BOOLEAN Yes If true then all legs must be from the same event, otherwise legs can be from different events.
payouts Array of Payout Yes A collection of Payout indicating all possible payout combinations.
league Array of League Yes A collection of Leagues available to the teaser.

Payout:

ParameterTypeRequiredDescription
numberOfLegs Int Yes Number of legs that must be bet and won on to get the associated price.
price Decimal Yes Price of the bet given the specified number of legs.

League:

ParameterTypeRequiredDescription
id Int Yes Unique identifier.
League details can be retrieved from a call to Get Leagues endpoint.
spread Spread Yes The number of points the spread line will be teased by.
total Total No The number of points the total line will be teased by.

Spread:

ParameterTypeRequiredDescription
points Decimal Yes Number of points the main spread line will be teased for the given league.

Total:

ParameterTypeRequiredDescription
points Decimal Yes Number of points the main total line will be teased for the given league.

Response Examples:

Response on Success

{
  "teaserGroups": [
    {
      "id": 1,
      "name": "College 2 - 6 Team",
      "teasers": [
        {
          "id": 17,
          "description": "College Football 2 to 6 Team 6 Point Teaser",
          "sportId": 15,
          "minLegs": 2,
          "maxLegs": 6,
          "sameEventOnly": false,
          "payouts": [
            {
              "numberOfLegs": 2,
              "price": 100
            },
            {
              "numberOfLegs": 3,
              "price": 160
            },
            {
              "numberOfLegs": 4,
              "price": 260
            },
            {
              "numberOfLegs": 5,
              "price": 450
            },
            {
              "numberOfLegs": 6,
              "price": 700
            }
          ],
          "leagues": [
            {
              "id": 880,
              "spread": {
                "points": 6
              },
              "total": {
                "points": 6
              }
            }
          ]
        },
        {
          "id": 18,
          "description": "College Football 2 to 6 Team 6½ Point Teaser",
          "sportId": 15,
          "minLegs": 2,
          "maxLegs": 6,
          "sameEventOnly": false,
          "payouts": [
            {
              "numberOfLegs": 2,
              "price": -110
            },
            {
              "numberOfLegs": 3,
              "price": 160
            },
            {
              "numberOfLegs": 4,
              "price": 250
            },
            {
              "numberOfLegs": 5,
              "price": 400
            },
            {
              "numberOfLegs": 6,
              "price": 600
            }
          ],
          "leagues": [
            {
              "id": 880,
              "spread": {
                "points": 6.5
              },
              "total": {
                "points": 6.5
              }
            }
          ]
        },
        {
          "id": 19,
          "description": "College Football 2 to 6 Team 7 Point Teaser",
          "sportId": 15,
          "minLegs": 2,
          "maxLegs": 6,
          "sameEventOnly": false,
          "payouts": [
            {
              "numberOfLegs": 2,
              "price": -120
            },
            {
              "numberOfLegs": 3,
              "price": 150
            },
            {
              "numberOfLegs": 4,
              "price": 200
            },
            {
              "numberOfLegs": 5,
              "price": 350
            },
            {
              "numberOfLegs": 6,
              "price": 500
            }
          ],
          "leagues": [
            {
              "id": 880,
              "spread": {
                "points": 7
              },
              "total": {
                "points": 7
              }
            }
          ]
        }
      ]
    },
    {
      "id": 9,
      "name": "NBA, College and WNBA 2 - 6 Team",
      "teasers": [
        {
          "id": 1,
          "description": "Basketball 4, 4.5, 6.5  Point Teaser",
          "sportId": 4,
          "minLegs": 2,
          "maxLegs": 6,
          "sameEventOnly": false,
          "payouts": [
            {
              "numberOfLegs": 2,
              "price": -116
            },
            {
              "numberOfLegs": 3,
              "price": 180
            },
            {
              "numberOfLegs": 4,
              "price": 300
            },
            {
              "numberOfLegs": 5,
              "price": 450
            },
            {
              "numberOfLegs": 6,
              "price": 700
            }
          ],
          "leagues": [
            {
              "id": 493,
              "spread": {
                "points": 4
              },
              "total": {
                "points": 4
              }
            },
            {
              "id": 578,
              "spread": {
                "points": 4
              },
              "total": {
                "points": 4
              }
            },
            {
              "id": 487,
              "spread": {
                "points": 4.5
              },
              "total": {
                "points": 6.5
              }
            }
          ]
        },
        {
          "id": 2,
          "description": "Basketball 4½, 5, 7 Point Teaser",
          "sportId": 4,
          "minLegs": 2,
          "maxLegs": 6,
          "sameEventOnly": false,
          "payouts": [
            {
              "numberOfLegs": 2,
              "price": -110
            },
            {
              "numberOfLegs": 3,
              "price": 160
            },
            {
              "numberOfLegs": 4,
              "price": 250
            },
            {
              "numberOfLegs": 5,
              "price": 400
            },
            {
              "numberOfLegs": 6,
              "price": 600
            }
          ],
          "leagues": [
            {
              "id": 493,
              "spread": {
                "points": 4.5
              },
              "total": {
                "points": 4.5
              }
            },
            {
              "id": 578,
              "spread": {
                "points": 4.5
              },
              "total": {
                "points": 4.5
              }
            },
            {
              "id": 487,
              "spread": {
                "points": 5
              },
              "total": {
                "points": 7
              }
            }
          ]
        },
        {
          "id": 3,
          "description": "Basketball 5, 5½ 7 Point Teaser",
          "sportId": 4,
          "minLegs": 2,
          "maxLegs": 6,
          "sameEventOnly": false,
          "payouts": [
            {
              "numberOfLegs": 2,
              "price": -120
            },
            {
              "numberOfLegs": 3,
              "price": 150
            },
            {
              "numberOfLegs": 4,
              "price": 200
            },
            {
              "numberOfLegs": 5,
              "price": 350
            },
            {
              "numberOfLegs": 6,
              "price": 500
            }
          ],
          "leagues": [
            {
              "id": 493,
              "spread": {
                "points": 5
              },
              "total": {
                "points": 5
              }
            },
            {
              "id": 578,
              "spread": {
                "points": 5
              },
              "total": {
                "points": 5
              }
            },
            {
              "id": 487,
              "spread": {
                "points": 5.5
              },
              "total": {
                "points": 7.5
              }
            }
          ]
        }
      ]
    }
  ]
}

Response on Error

{
  "code": "INVALID_REQUEST_DATA",
  "message": "Missing oddsFormat. The oddsFormat must be non null and not an empty string"
}

Get Odds

Returns straight and parlay odds for all non-settled events.

Please note that it is possible that the event is in Get Fixtures response but not in Get Odds. This is happens when the odds have not been set yet for the event.

Request

Straight Odds:
GET /v1/odds?sportId={sportid} &leagueIds=[{leagueId1},{leagueId2},…]&since={since}&isLive={islive}}&oddsFormat={oddsFormat}

Parlay Odds:
GET /v1/odds/parlay?sportId={sportid} &leagueIds=[{leagueId1},{leagueId2},…]&since={since}&isLive={islive}&oddsFormat={oddsFormat}

ParameterTypeRequiredDescription
sportId Int Yes The sportid for which to retrieve the odds.
leagueIds Array No The leagueIds array may contain a list of comma separated league ids.
since Long No This is used to receive incremental updates. Use the value of last from previous odds response.
When since parameter is not provided, the odds are delayed up to 1 min to encourage the use of the parameter.
Please note that when using since parameter you will get in the response ONLY changed periods. If a period didn’t have any changes it will not be in the response.
islive BOOLEAN2 No To retrieve ONLY live odds set the value to islive =1. Otherwise response will have all odds.
oddsFormat ODDS_FORMAT No Format in which we return the odds. Default is American.
eventIds Array No Filter by EventIds

URL Examples

All soccer odds:
https://api.pinnacle.com/v1/odds?sportid=29

All soccer parlay odds:
https://api.pinnacle.com/v1/odds/parlay?sportid=29

Soccer odds changes since last refresh:
https://api.pinnacle.com/v1/odds?sportid=29&since=26142386

All live Soccer odds:
https://api.pinnacle.com/v1/odds?sportid=29&islive=1

Live Soccer odds changes since last refresh:
https://api.pinnacle.com/v1/odds?sportid=29&islive=1& since=26142386

Selected soccer leagues odds:
https://api.pinnacle.com/v1/odds?sportid=29&leagueids=1728,1792,1817

Selected soccer leagues odds changes since last refresh:
https://api.pinnacle.com/v1/odds?sportid=29&leagueids=1728,1792,1817&since=1373383

Response

Response is only in JSON

ParameterTypeRequiredDescription
sportId Int Yes Same as requested sport Id
last Long Yes Use this value for the subsequent requests for since query parameter to get just the changes since previous response
leagues Array of League Type Yes Contains a list of Leagues

League Type:

ParameterTypeRequiredDescription
id Int Yes League ID
events Array of Event Type Yes Contains a list of events

Event Type:

ParameterTypeRequiredDescription
id Long Yes Event ID
periods Array of Period Type Yes Contains a list of periods
awayScore Decimal No Away team score. Only for live soccer events.
homeScore Decimal No Home team score. Only for live soccer events.
awayRedCards Int No Away team red cards. Only for live soccer events.
homeRedCards Int No Home team red cards. Only for live soccer events.

Period Type:

ParameterTypeRequiredDescription
lineId Long Yes Line ID
number Int Yes

This represents the period of the match. For example, for soccer we have:

0 - Game
1 - 1st Half
2 - 2nd Half

For the full list of periods please check Get Periods operation.

cutoff DateTime Yes Period’s wagering cut-off date
spreads Array of Spread Type No Container for spread odds
totals Array of Total Points type No Container for total odds
moneyLine Moneyline type No Container for moneyLine odds
teamTotal Team Total Points type No Container for team total points
maxSpread Decimal No Maximum spread bet. Only in straight odds response.
maxTotal Decimal No Maximum total points bet. Only in straight odds response.
maxMoneyLine Decimal No Maximum moneyline bet. Only in straight odds response.
maxTeamTotal Decimal No Maximum team total points bet. Only in straight odds response.

Spread Type:

ParameterTypeRequiredDescription
altLineId Long No This is present only if it’s alternative line.
hdp Decimal Yes Home team handicap
away Decimal Yes Away team price
home Decimal Yes Home team price

MoneLine Type:

ParameterTypeRequiredDescription
away Decimal Yes Away team price
home Decimal Yes Home team price
draw Decimal No Draw price. This is present only for events we offer price for draw.

Total Points Type:

ParameterTypeRequiredDescription
altLineId Long No This is present only if it’s alternative line
points Decimal Yes Total points
over Decimal Yes Over price
under Decimal Yes Under price

Team Total Points Type:

ParameterTypeRequiredDescription
away Total Points Type No Away team total points
home Total Points Type No Home team total points

JSON Example:

GET /v1/odds?sportId=29&leagueIds=1833

{
"sportId":29,
"last":138030959,
"leagues":[
{
"id":1833,
"events":[
{
"id":383911982,
"awayScore":0,
"homeScore":1,
"awayRedCards":0,
"homeRedCards":1,
"periods":[
{
"lineId":138030967,
"number":0,
"cutoff":"2015-01-24T00:12:00Z"
},
{
"lineId":138030968,
"number":1,
"cutoff":"0001-01-01T00:00:00Z"
},
{
"lineId":138030965,
"number":2,
"cutoff":"2015-01-24T00:12:00Z",
"maxSpread":12,
"spreads":[
{
"hdp":-1,
"home":-110,
"away":-110
}
]
},
{
"id":383911976,
"periods":[
{
"lineId":138030946,
"number":0,
"cutoff":"2015-01-22T13:00:00Z",
"maxSpread":2000,
"maxMoneyline":500,
"maxTotal":2000,
"spreads":[
{
"hdp":0,
"home":-131,
"away":113
},
{
"altLineId":524735761,
"hdp":-0.5,
"home":152,
"away":-180
},
{
"altLineId":524735763,
"hdp":-0.25,
"home":116,
"away":-131
},
{
"altLineId":524735765,
"hdp":-0.25,
"home":-188,
"away":158
},
{
"altLineId":524735767,
"hdp":-0.5,
"home":-253,
"away":202
}
],
"moneyline":{
"home":141,
"away":197,
"draw":251
}
},
{
"lineId":138030949,
"number":1,
"cutoff":"2015-01-22T13:00:00Z",
"maxSpread":1000,
"maxTotal":1000,
"spreads":[
{
"hdp":0,
"home":-104,
"away":-109
}
],
"totals":[
{
"points":0.75,
"over":-129,
"under":110
}
]
}
]
},
{
"id":383911977,
"periods":[
{
"lineId":138030942,
"number":0,
"cutoff":"2015-01-22T13:00:00Z",
"maxSpread":2000,
"maxMoneyline":500,
"maxTotal":2000,
"moneyline":{
"home":100,
"away":289,
"draw":250
},
"totals":[
{
"points":2.5,
"over":100,
"under":-115
},
{
"altLineId":524735730,
"points":2,
"over":-209,
"under":167
},
{
"altLineId":524735732,
"points":2.25,
"over":-134,
"under":115
},
{
"altLineId":524735734,
"points":2.75,
"over":128,
"under":-151
},
{
"altLineId":524735736,
"points":3,
"over":175,
"under":-222
}
]
},
{
"lineId":138030947,
"number":1,
"cutoff":"2015-01-22T13:00:00Z",
"maxSpread":1000,
"maxTotal":1000,
"spreads":[
{
"hdp":-1,
"home":-115,
"away":100
}
],
"totals":[
{
"points":2.5,
"over":-109,
"under":-104
}
]
}
]
}
]
}
]
}
]
}

Throws

GenericException type

Get Teaser Odds

Returns odds for specified teaser.

Request

GET /v1/odds/teaser?teaserId={teaserId}

ParameterTypeRequiredDescription
teaserId Long Yes Unique identifier.
Teaser details can be retrieved from a call to Get Teaser Groups endpoint.

Request Example:

Get teaser odds for teaser with id 1
https://api.pinnacle.com/v1/odds/teaser?teaserId=1

Response

json format only

ParameterTypeRequiredDescription
code TEASER_REQUEST_CODE On Error Code identifying an error that occurred.
message String On Error Human friendly error message.
teaserId Long Yes Unique identifier.
Teaser details can be retrieved from a call to Get Teaser Groups endpoint.
sportId Int Yes Unique identifier.
Sport details can be retrieved from a call to Get Sports endpoint.
leagues Array of League Yes A collection of League.

League:

ParameterTypeRequiredDescription
id Int Yes Unique identifier.
League details can be retrieved from a call to Get Leagues endpoint.
events Array of Event Yes A collection of Event.

Event:

ParameterTypeRequiredDescription
id Long Yes Unique identifier.
periods Array of Period Yes A collection of Period indicating the period numbers available for betting.

Period:

ParameterTypeRequiredDescription
number PeriodNumber Yes Period of the match that is being bet on.
Refer to Period Number lookup table.
lineId Long Yes Unique identifier.
spread Spread Yes Teased spread line.
total Total Yes Teased total line.

Spread:

ParameterTypeRequiredDescription
maxBet Decimal Yes Maximum bet amount.
homeHdp Decimal Yes Home team handicap.
Refer to Get Fixtures endpoint to determine home and away teams.
awayHdp Decimal Yes Away team handicap.
Refer to Get Fixtures endpoint to determine home and away teams.

Total:

ParameterTypeRequiredDescription
maxBet Decimal Yes Maximum bet amount.
overPoints Decimal Yes Over points.
underPoints Decimal Yes Under points.

Response Examples:

Response on Success

{
  "teaserId": 50,
  "sportId": 4,
  "leagues": [
    {
      "id": 487,
      "events": [
        {
          "id": 480171684,
          "periods": [
            {
              "number": 0,
              "lineId": 210642139,
              "spread": {
                "maxBet": 92.5,
                "homeHdp": 2.5,
                "awayHdp": 11.5
              },
              "total": {
                "maxBet": 92.5,
                "overPoints": 188,
                "underPoints": 206
              }
            }
          ]
        },
        {
          "id": 480171685,
          "periods": [
            {
              "number": 0,
              "lineId": 210641941,
              "spread": {
                "maxBet": 92.5,
                "homeHdp": -4.5,
                "awayHdp": 18.5
              },
              "total": {
                "maxBet": 92.5,
                "overPoints": 194.5,
                "underPoints": 212.5
              }
            }
          ]
        },
        {
          "id": 480171682,
          "periods": [
            {
              "number": 0,
              "lineId": 210642010,
              "spread": {
                "maxBet": 92.5,
                "homeHdp": 3.5,
                "awayHdp": 10.5
              },
              "total": {
                "maxBet": 92.5,
                "overPoints": 187,
                "underPoints": 205
              }
            }
          ]
        },
        {
          "id": 480171683,
          "periods": [
            {
              "number": 0,
              "lineId": 210641818,
              "spread": {
                "maxBet": 92.5,
                "homeHdp": 5.5,
                "awayHdp": 8.5
              },
              "total": {
                "maxBet": 92.5,
                "overPoints": 195,
                "underPoints": 213
              }
            }
          ]
        },
        {
          "id": 480171681,
          "periods": [
            {
              "number": 0,
              "lineId": 210642097,
              "spread": {
                "maxBet": 92.5,
                "homeHdp": 12.5,
                "awayHdp": 1.5
              },
              "total": {
                "maxBet": 92.5,
                "overPoints": 185.5,
                "underPoints": 203.5
              }
            }
          ]
        }
      ]
    }
  ]
}

Response on Error

{
  "code": "INVALID_REQUEST_DATA",
  "message": "TeaserId not provided"
}

Get Special Odds

Returns special odds for all non-settled events.

Please note that it is possible that the event is in Get Special Fixtures response but not in Get Special Odds. This happens when the odds have not been set for the event.

Request

GET /v1/odds/special?sportId={sportid} &leagueIds=[{leagueId1},{leagueId2},…]&since={since}&isLive={islive}}&oddsFormat={oddsFormat}

ParameterTypeRequiredDescription
sportId Int Yes The sportid for which to retrieve the odds.
leagueIds Array No The leagueIds array may contain a list of comma separated league ids.
since Long No This is used to receive incremental updates. Use the value of last from previous odds response.
When since parameter is not provided, the odds are delayed up to 1 min to encourage the use of the parameter.
Please note that when using since parameter you will get in the response ONLY changed periods. If a period didn’t have any changes it will not be in the response.
specialId Long No Specific special id
oddsFormat ODDS_FORMAT No Format in which we return the odds. Default is American.

URL Examples

All soccer special odds:
https://api.pinnacle.com/v1/odds/special?sportid=29

Soccer special odds changes since last refresh:
https://api.pinnacle.com/v1/odds/special?sportid=29&since=26142386

Special odds for selected soccer leagues:
https://api.pinnacle.com/v1/odds/special?sportid=29&leagueids=1728,1792,1817

Special odds for selected soccer leagues since last refresh:
https://api.pinnacle.com/v1/odds/special?sportid=29&leagueids=1728,1792,1817&since=1373383

Response

Response is only in JSON

ParameterTypeRequiredDescription
sportId Int Yes Same as requested sport Id
last Long Yes Use this value for the subsequent requests for since query parameter to get just the changes since previous response
leagues Array of League Type Yes Contains a list of Leagues

League Type:

ParameterTypeRequiredDescription
id Int Yes League ID
specials Array of Special Type Yes Contains a list of specials

Special Type:

ParameterTypeRequiredDescription
id Long Yes Event ID
maxBet Decimal Yes Max bet set for the special
contestantLines Array of Contestant Lines Type Yes Contais a list of contestant lines

Contestant Lines Type:

ParameterTypeRequiredDescription
id Long Yes Contestant id
lineId Long Yes

Line Id

price Decimal Yes Contestant price
handicap Decimal Yes Handicap value for the given contestant


JSON Example:

GET /v1/odds/special?sportId=4&leagueIds=487

{
  "sportId": 4,
  "last": 33997709,
  "leagues": [
    {
      "id": 487,
      "specials": [
        {
          "id": 480692765,
          "maxRisk": 4519.93,
          "contestantLines": []
        },
        {
          "id": 480692762,
          "maxRisk": 4519.93,
          "contestantLines": [
            {
              "id": 480692764,
              "lineId": 33997608,
              "price": -420,
              "handicap": null
            },
            {
              "id": 480692763,
              "lineId": 33997607,
              "price": 300,
              "handicap": null
            }
        }
      ]
    }
  ]
}

Throws

GenericException type

Get Currencies v2

Request

GET v2/currencies

No parameters.

URL Example

https://api.pinnacle.com/v2/currencies

Response

Response is only in JSON.

ParameterTypeRequiredDescription
currencies Array of Currency type Yes Currencies container

Currency Type:

ParameterTypeRequiredDescription
code String Yes Currency code
name String Yes Currency name
rate Decimal Yes Exchange rate to USD

Example of successful response

{
"currencies": [
{
"code": "AUD",
"name": "Australia Dollars",
"rate": 1.4546
},
{
"code": "CAD",
"name": "Canada Dollars",
"rate": 1.4605
},
{
"code": "CNY",
"name": "China Yuan Renmimbi",
"rate": 6.5793
},
{
"code": "CSK",
"name": "Czech Republic Koruna",
"rate": 24.7611
}]
}

Example of response with an error

n/a

Get Client Balance

Returns current client balance.

GET /v1/client/balance

Request

No request parameters

URL Example
https://api.pinnacle.com/v1/client/balance

Response

Table 1 - Get Client Balance Response

ParameterTypeRequiredDescription
availableBalance Decimal Yes Amount available for betting
outstandingTransactions Decimal Yes Sum of not yet settled bet amounts
givenCredit Decimal Yes Client’s credit
currency String Yes Client’s currency code
Example of successful response

{
"availableBalance":49354.37,
"outstandingTransactions":533.84,
"givenCredit":50000.0,
"currency":"CAD"

}

Throws

GenericException type

Get Line

Returns latest line.

Request

GET /v1/line?sportId={sportId}&leagueId={leagueId}&eventId={eventId}&periodNumber={periodNumber}&betType={betType}&team={team}&side={side}&handicap={handicap}

Table 4 - Get Line Request

ParameterTypeRequiredDescription
sportId Int Yes
leagueId Int Yes
eventId Long Yes
periodNumber Int Yes

This represents the period of the match. For example, for soccer we have:

0 - Game

1 - 1st Half

2 - 2nd Half

betType BET_TYPE Yes
team TEAM_TYPE No Chosen team type. This is needed only for SPREAD, MONEYLINE and TEAM_TOTAL_POINTS bet types
side SIDE_TYPE No Chosen side. This is needed only for TOTAL_POINTS and TEAM_TOTAL_POINTS bet type
handicap Decimal No This is needed for SPREAD, TOTAL_POINTS and TEAM_TOTAL_POINTS bet type
oddsFormat ODDS_FORMAT Yes

URL Example

https://api.pinnacle.com/v1/line?sportId=29&leagueId=1728&eventId=308195882&betType=SPREAD&oddsFormat=DECIMAL&periodNumber=0&team=TEAM1&handicap=-1

Response


Table 5 - Get Line Response

ParameterTypeRequiredDescription
status GETLINE_RESPONSE_STATUS Yes If the value is NOT_EXISTS, than this will be the only parameter in the response. All other params would be empty.
price Decimal No Latest price
lineId Long No Line identification needed to place a bet
altLineId Long No This would be needed to place the bet if the handicap is on alternate line, otherwise it will not be in the response.
team1Score Int No Team 1 score. Applicable to soccer only
team2Score Int No Team 2 score. Applicable to soccer only
team1RedCards Int No Team 1 red cards. Applicable to soccer only.
team2RedCards Int No Team 2 red cards. Applicable to soccer only.
maxRiskStake Decimal No Maximum bettable risk amount
minRiskStake Decimal No Minimum bettable risk amount
maxWinStake Decimal No Maximum bettable win amount
minWinStake Decimal No Minimum bettable win amount
effectiveAsOf Date Time No Line is effective as of this date and time

JSON Example

{
"status":"SUCCESS",
"price":1.952,
"lineId":100282782,
"altLineId":null,
"team1Score":null,
"team2Score":null,
"team1RedCards":null,
"team2RedCards":null,
"maxRiskStake":4061.76,
"minRiskStake":50.77,
"maxWinStake":3866.80,
"minWinStake":48.34,
"effectiveAsOf":"2013-06-18T14:02:26.6508"
}

Throws

GenericException type

Get Parlay Line

Returns parlay lines and calculate odds. Supports JSON format only.

Request

POST /v1/line/parlay

ParameterTypeRequiredDescription
oddsFormat ODDS_FORMAT Yes Odds in the response will be in this format
legs Array of Leg request object Yes This is a collection of legs (the format of the object is described below)

Leg request object parameters:

ParameterTypeRequiredDescription
uniqueLegId GUID Yes This unique id of the leg. It used to identify and match leg in the response
eventId Long Yes id of the event
legBetType LEG_BET_TYPE Yes Only SPREAD, MONEYLINE and TOTAL_POINTS are supported
team TEAM_TYPE No Chosen team type. This is needed only for SPREAD and MONEYLINE bet types
side SIDE_TYPE No Chosen side. This is needed only for TOTAL_POINTS bet type
periodNumber Int Yes This represents the period of the match. For example, for soccer we have:
0 - Game
1 - 1st Half
2 - 2nd Half
handicap Decimal No This is needed for SPREAD and TOTAL_POINTS bet type

JSON Example

{
oddsFormat: "Decimal",
legs:[
{
uniqueLegId: "9CED620A-0E78-4FA4-A314-BDB1FF34E25A",
eventId: "383910968",
periodNumber: "0",
legBetType: "SPREAD",
team: "TEAM1",
handicap: 0.75
},
{
uniqueLegId: "F3E3528C658642F28001FFF3B3DA63AD",
eventId: "383910969",
periodNumber: "0",
legBetType: "MONEYLINE",
team: "TEAM1"
},
{
uniqueLegId: "F3E3528C658642F28001FFF3B3DA63AA",
eventId: "383910970",
periodNumber: "0",
legBetType: "TOTAL_POINTS",
team: "TEAM1",
side: "OVER",
handicap: 2.75
}
]
}

Response

ParameterTypeRequiredDescription
status PARLAY_LINES_STATUS Yes
error PLACE_PARLAY_BET_ERROR_CODE No If Status is PROCESSED_WITH_ERROR , error will be in the response
maxRiskStake Decimal No Maximum allowed stake amount
minRiskStake Decimal No Minimum allowed stake amount
roundRobinOptionWithOdds Array of RoundRobinOdds object No Provides array with all acceptable Round Robin options with parlay odds for that option
legs Array of Leg response object No The collection of legs (the format of the object is described below)

Leg response object parameters

ParameterTypeRequiredDescription
status PLACE_PARLAY_LEG_RESPONSE_STATUS Yes
errorCode PLACE_PARLAY_LEG_ERROR_CODE No If Status is PROCESSED_WITH_ERROR, errorCode will be in the response
legId GUID Yes Echo of the legId from the request
correlatedLegs Array of GUIDs No If errorCode is CORRELATED will contain legIds of all correlated legs
lineId Long No Line identification that bet will be placed on
altLineId Long No If Leg will be placed on Alternate Line the Id of that line will be returned
price Decimal No Current price of the line

RoundRobinOdds object parameters

ParameterTypeRequiredDescription
RoundRobinOption ROUND_ROBIN_OPTIONS Yes Round Robin option
Odds Decimal Yes Odds for Round Robin option in requested Odds format
UnroundedDecimalOdds Decimal Yes Unrounded parlay odds in decimal format to be used for calculations only

JSON Example - acceptable parlay bet

{
"status": "VALID",
"maxRiskStake": 16949.74,
"minRiskStake": 451.99,
"roundRobinOptionWithOdds": [
{
"roundRobinOption": "Parlay",
"odds": 2.67,
"unroundedDecimalOdds": 2.675242311834390331458657413
}
],
"legs": [
{
"status": "VALID",
"legId": "8e494cb3-3aa2-4585-beb9-ff5915f2dc89",
"lineId": 214291553,
"price": 1.546
},
{
"status": "VALID",
"legId": "8bcac0ca-3c55-4ec0-8800-3e3ac772a2c7",
"lineId": 214291518,
"price": 1.729
}
]
}

JSON Example - Parlay Lines with error

{
"status": "PROCESSED_WITH_ERROR",
"error": "INVALID_LEGS",
"legs": [
{
"status": "PROCESSED_WITH_ERROR",
"errorCode": "EVENT_NO_LONGER_AVAILABLE_FOR_BETTING ",
"legId": "9ced620a-0e78-4fa4-a314-bdb1ff34e25a",
"lineId": 138030194
},
{
"status": "VALID",
"legId": "f3e3528c-6586-42f2-8001-fff3b3da63ad",
"lineId": 138030143,
"price": 2.17
},
{
"status": "VALID",
"legId": "f3e3528c-6586-42f2-8001-fff3b3da63aa",
"lineId": 138030154,
"price": 1.787
}
]
}

Throws

GenericException type

Get Teaser Lines

Validates a teaser bet prior to submission. Returns bet limit and price on success.

Request

POST /v1/line/teaser

json format only

ParameterTypeRequiredDescription
teaserId Long Yes Unique identifier.
Teaser details can be retrieved from a call to Get Teaser Groups endpoint.
oddsFormat ODDS_FORMAT Yes Format the odds are returned in.
legs Array of Leg Yes Collection of Leg.

Leg:

ParameterTypeRequiredDescription
legId GUID Yes Client genereated GUID for uniquely identifying the leg.
eventId Long Yes Unique identifier.
betType BET_TYPE Yes Type of bet.
Currently, only BET_TYPE.SPREAD and BET_TYPE.TOTAL_POINTS are supported.
side SIDE_TYPE For BET_TYPE.TOTAL_POINTS Side of a total line being bet on.
team TEAM_TYPE For BET_TYPE.SPREAD Team being bet on for a spread line.
Currenlty, only TEAM_TYPE.Team1 and TEAM_TYPE.Team2 are supported.
periodNumber Int Yes Period of the match that is being bet on.
Refer to Period Number lookup table.
handicap Decimal Yes Number of points.

Request Example:

{
    "teaserId": 1,
    "oddsFormat": "AMERICAN",
    "legs": [
        {
            "legId": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
            "eventId": 480168370,
            "betType": "SPREAD",
            "team": "Team2",
            "periodNumber": 0,
            "handicap": 1
        },
        {
            "legId": "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb",
            "eventId": 480168370,
            "betType": "TOTAL_POINTS",
            "side": "UNDER",
            "periodNumber": 0,
            "handicap": 202.5
        }   
    ]
}

Response

json format only

ParameterTypeRequiredDescription
code TEASER_REQUEST_CODE On Error Code identifying an error that occurred.
message String On Error Human friendly error message.
status TEASER_LINES_STATUS When code is not present Indicates whether the teaser is valid or not.
errorCode TEASER_LINES_ERROR_CODE When status == TEASER_LINES_STATUS.PROCESSED_WITH_ERROR Not present if status != TEASER_LINES_STATUS.PROCESSED_WITH_ERROR.
price Decimal When status == TEASER_LINES_STATUS.VALID Price for the bet.
minRiskStake Decimal When status == TEASER_LINES_STATUS.VALID Minimum bet amount for WIN_RISK_TYPE.RISK.
maxRiskStake Decimal When status == TEASER_LINES_STATUS.VALID Maximum bet amount for WIN_RISK_TYPE.RISK.
minWinStake Decimal When status == TEASER_LINES_STATUS.VALID Minimum bet amount for WIN_RISK_TYPE.WIN.
maxWinStake Decimal When status == TEASER_LINES_STATUS.VALID Maximum bet amount for WIN_RISK_TYPE.WIN.
legs Array of Leg Yes Collection of Leg.

Leg:

ParameterTypeRequiredDescription
status TEASER_LINES_STATUS Yes Indicates whether the teaser is valid or not.
errorCode TEASER_LINES_LEG_ERROR_CODE When status = TEASER_LINES_STATUS. PROCESSED_WITH_ERROR Not present if status != TEASER_LINES_STATUS. PROCESSED_WITH_ERROR.
legId GUID Yes Client genereated GUID that was provided in request.
lineId Long When status == TEASER_LINES_STATUS.VALID Unique identifier.

Response Examples:

Response on Success

{
  "status": "VALID",
  "price": 200,
  "minRiskStake": 1,
  "maxRiskStake": 69.38,
  "minWinStake": 1,
  "maxWinStake": 138.76,
  "legs": [
    {
      "status": "VALID",
      "legId": "45d15516-a6a9-ea06-606d-7d383897bd55",
      "lineId": 210649652
    },
    {
      "status": "VALID",
      "legId": "a817b7f8-0ace-2b21-9127-149f7e410b9a",
      "lineId": 210649648
    },
    {
      "status": "VALID",
      "legId": "3ae8c2e1-52e2-9eb9-e04b-0de48dad3228",
      "lineId": 210649647
    },
    {
      "status": "VALID",
      "legId": "a42a13d8-c3fa-96e1-9098-dad29a033b7d",
      "lineId": 210647049
    },
    {
      "status": "VALID",
      "legId": "e8158763-7e63-85c9-9523-cbd8cfd75076",
      "lineId": 210649653
    }
  ]
}

Response on Error

{
  "status": "PROCESSED_WITH_ERROR",
  "errorCode": "INVALID_LEGS",
  "legs": [
    {
      "status": "PROCESSED_WITH_ERROR",
      "errorCode": "EVENT_NOT_FOUND",
      "legId": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
    },
    {
      "status": "PROCESSED_WITH_ERROR",
      "errorCode": "EVENT_NOT_FOUND",
      "legId": "bbbbbbbb-bbbb-bbbb-bbbb-bbbbbbbbbbbb"
    }
  ]
}

Get Special Lines

Returns latest special line.

Request

GET /v1/line/special?specialId={specialId}&contestantId={contestantId}&oddsFormat={oddsFormat}

Get Special Line Request parameters

ParameterTypeRequiredDescription
specialId Long Yes Id of the special
contestantId Long Yes Id of the contestant
oddsFormat ODDS_FORMAT Yes Odds format

URL Example

https://api.pinnacle.com/v1/line/special?oddsFormat=american&specialId=598758142&contestantId=598758144

Response

ParameterTypeRequiredDescription
status GETLINE_RESPONSE_STATUS Yes If the value is NOT_EXISTS, than this will be the only parameter in the response. All other params would be empty.
specialId Long Yes Echo of the requested special id
contestantId Long Yes Echo of the requested contestant id
maxRiskStake Decimal Yes Maximum bettable risk amount
minRiskStake Decimal Yes Minimum bettable risk amount
maxWinStake Decimal Yes Maximum bettable win amount
minWinStake Decimal Yes Minimum bettable win amount
lineId Long Yes Line identification needed to place a bet
price Decimal Yes Latest price
handicap Decimal No Handicap, if present

JSON Example (without handicap)

{
  "status": "SUCCESS",
  "specialId": 598758142,
  "contestantId": 598758144,
  "minRiskStake": 1167.33,
  "maxRiskStake": 4669.31,
  "minWinStake": 145.92,
  "maxWinStake": 583.66,
  "lineId": 41200528,
  "price": -800
}

Throws

GenericException type

Place Bet

Place bet in the system.

POST /v1/bets/place

Request

Table 2 - Place Bet Request

ParameterTypeRequiredDescription
uniqueRequestId GUID Yes This unique id of the place bet requests. This is to support idempotent requests
acceptBetterLine BOOLEAN Yes Whether or not to accept a bet when there is a line change in favor of the client
customerReference String No Reference to a customer in third party system.
oddsFormat ODDS_FORMAT Yes Bet is processed with this odds format.
stake Decimal Yes Wagered amount in Client’s currency
winRiskStake WIN_RISK_TYPE Yes Whether the stake amount is risk or win amount
sportId Int Yes
eventId Long Yes
periodNumber Int Yes

This represents the period of the match. For example, for soccer we have:

0 - Game
1 - 1st Half
2 - 2nd Half

betType BET_TYPE Yes
team TEAM_TYPE No Chosen team type. This is needed only for SPREAD, MONEYLINE and TEAM_TOTAL_POINTS bet types
side SIDE_TYPE No Chosen side. This is needed only for TOTAL_POINTS and TEAM_TOTAL_POINTS bet type
lineId Long Yes Line identification
altLineId Long No Alternate line identification
pitcher1MustStart BOOLEAN No Baseball only. Refers to the pitcher for TEAM_TYPE.Team1. This applicable only for MONEYLINE bet type, for all other bet types this has to be TRUE
pitcher2MustStart BOOLEAN No Baseball only. Refers to the pitcher for TEAM_TYPE. Team2. This applicable only for MONEYLINE bet type, for all other bet types this has to be TRUE
isMaxStakeBet BOOLEAN No If set to true bet wil be placed on the maximum possible stake. Provided stake amount will be ignored. 

JSON Example:

{
"uniqueRequestId":"3ca3e7a7-12e1-4907-8b84-00f02e814b1d",
"acceptBetterLine":"TRUE",
"stake":150,
"winRiskStake":"WIN",
"lineId":103648474,
"sportId":29,
"eventId":307962592,
"periodNumber":0,
"betType":"MONEYLINE",
"team":"DRAW",
"oddsFormat":"AMERICAN"
}

Response

ParameterTypeRequiredDescription
status PLACEBET_RESPONSE_STATUS Yes
errorCode PLACEBET_ERROR_CODE No If Status is PROCESSED_WITH_ERROR, errorCode will be in the response.
betId Long No The bet ID of the new bet. May be empty on failure.
uniqueRequestId GUID Yes Echo of the uniqueRequestId from the request.
betterLineWasAccepted BOOLEAN Yes

Whether or not the bet was accepted on the line that changed in favour of client.

This can be true only if acceptBetterLine in the Place Bet request is set to TRUE.

price Decimal No

For accepted bets, this will have the price at which the wager is accepted

JSON Example - Accepted bet

{
"status":"ACCEPTED",
"errorCode":null,
"betId":309891823,
"uniqueRequestId":"3ca3e7a7-12e1-4907-8b84-00f02e814b1d",
"betterLineWasAccepted":true,
"price":34.28
}

JSON Example - Bet processed with error

{
"status":"PROCESSEDWITHERROR",
"errorCode":"LINE_CHANGED",
"betId":null,
"uniqueRequestId":"3ca3e7a7-12e1-4907-8b84-00f02e814b1d"
}

Throws

GenericException type

Place Parlay Bet

Place parlay bet in the system. Supports JSON format only.

POST /v1/bets/parlay

Request

ParameterTypeRequiredDescription
uniqueRequestId GUID Yes This unique id of the place bet requests. This is to support idempotent requests
acceptBetterLine BOOLEAN Yes Whether or not to accept a bet when there is a line change in favor of the client
oddsFormat ODDS_FORMAT Yes Bet is processed with this odds format
riskAmount Decimal Yes Wagered amount in Client’s currency. It is always risk amount when placing Parlay bets
NOTE: If round robin options is used this amount will apply for all parlays so actual amount wagered will be riskAmount X number of Parlays
roundRobinOptions ARRAY of ROUND_ROBIN_OPTIONS Yes
legs ARRAY of Leg request object Yes Collection of parlay legs (format described below)

Leg request object parameters

ParameterTypeRequiredDescription
uniqueLegId GUID Yes Unique id of the leg. It's used to identify and match legs in the response
legBetType LEG_BET_TYPE Yes Only SPREAD, MONEYLINE and TOTAL_POINTS are supported
lineId Long Yes Line identification
altLineId Long No Alternate line identification
eventId Long Yes Event ID for the given leg
sportId Int Yes Sport ID for the given leg
team TEAM_TYPE No Chosen team type. This is needed only for SPREAD and MONEYLINE bet types
side SIDE_TYPE No Chosen side. This is needed only for TOTAL_POINTS bet type
periodNumber Int Yes This represents the period of the match. For example, for soccer we have:
0 - Game
1 - 1st Half
2 - 2nd Half
pitcher1MustStart BOOLEAN No Baseball only. Refers to the pitcher for TEAM_TYPE.Team1. This applicable only for MONEYLINE bet type, for all other bet types this has to be TRUE
pitcher2MustStart BOOLEAN No Baseball only. Refers to the pitcher for TEAM_TYPE. Team2. This applicable only for MONEYLINE bet type, for all other bet types this has to be TRUE

JSON Example

{
"uniqueRequestId": "059AA152-DB79-4226-B003-42531EC7C006",
"acceptBetterLine": "TRUE",
"oddsFormat": "DECIMAL",
"riskAmount": 10,
"roundRobinOptions": ["PARLAY"],
"legs":
[
{
"uniqueLegId": "719B13BC-0237-45AB-B997-4AB8C9C810C5",
"lineId": 138029470,
"sportId": 29,
"eventId": 383910968,
"periodNumber": 0,
"legBetType": "SPREAD",
"team": "TEAM1"
},
{
"uniqueLegId": "5A273CAC-A84A-4BE4-BD68-09AD92C828DF",
"lineId": 138029469,
"sportId": 29,
"eventId": 383910969,
"periodNumber": 0,
"legBetType": "MONEYLINE",
"team": "TEAM1"
},
{
"uniqueLegId": "5A273CAC-A84A-4BE4-BD68-09AD92C828aF",
"lineId": 138029471,
"sportId": 29,
"eventId": 383910970,
"periodNumber": 0,
"legBetType": "TOTAL_POINTS",
"side": "OVER"
}
]
}

Response

ParameterTypeRequiredDescription
status PLACE_PARLAY_BET_RESPONSE_STATUS Yes
errorCode PLACE_PARLAY_BET_ERROR_CODE No If Status is PROCESSED_WITH_ERROR , errorCode will be in the response
betId Long No The bet ID of the new bet. May be empty on failure
uniqueRequestId GUID Yes Echo of the uniqueRequestId from the request
roundRobinOptionWithOdds ARRAY of ROUND_ROBIN_OPTIONS No Provides array with all acceptable Round Robin options with parlay odds for that option
validLegs ARRAY of Leg response object No Collection of valid legs (format described below). Can be empty if no valid legs found
invalidLegs ARRAY of Leg response object No The collection of legs that resulted in error (format described below). Can be empty if no invalid legs found

Leg response object parameters

ParameterTypeRequiredDescription
status PLACE_PARLAY_LEG_RESPONSE_STATUS Yes
errorCode PLACE_PARLAY_LEG_ERROR_CODE No If Status is PROCESSED_WITH_ERROR , errorCode will be in the response
legId GUID Yes Echo of the legId from the request
correlatedLegs ARRAY of GUIDs No If errorCode is CORRELATED will contain legIds of all correlated legs
lineId Long No Line identification that bet was placed on
altLineId Long No If Bet was placed on Alternate Line the Id of that line will be returned
price Decimal No Price that the bet was placed on

JSON Example - Accept parlay bet

{
"status": "ACCEPTED",
"betId": 383911811,
"uniqueRequestId": "159AA152-DB79-4226-B103-42531EC7C017",
"maxRiskStake": 250,
"minRiskStake": 1,
"roundRobinOptionWithOdds": [
{
"RoundRobinOption": "Parlay",
"Odds": 7.71
},
{
"RoundRobinOption": "TwoLegRoundRobin",
"Odds": 11.73
}
],
"validLegs": [
{
"status": "VALID",
"legId": "719b13bc-0237-45ab-b997-4ab8c9c810c5",
"lineId": 138030225,
"price": 1.99
},
{
"status": "VALID",
"legId": "5a273cac-a84a-4be4-bd68-09ad92c828df",
"lineId": 138030543,
"price": 2.17
},
{
"status": "VALID",
"legId": "5a273cac-a84a-4be4-bd68-09ad92c828af",
"lineId": 138030214,
"price": 1.787
}
]
}

JSON Example - Parlay Bet processed wtih error

{
"status": "PROCESSED_WITH_ERROR",
"errorCode": "INVALID_LEGS",
"uniqueRequestId": "159AA152-DB79-4226-B102-52531EC7C019",
"maxRiskStake": 250,
"minRiskStake": 1,
"roundRobinOptionWithOdds": [
{
"RoundRobinOption": "Parlay",
"Odds": 7.71
},
{
"RoundRobinOption": "TwoLegRoundRobin",
"Odds": 11.73
}
],
"validLegs": [
{
"status": "VALID",
"legId": "719b13bc-0237-45ab-b997-4ab8c9c810c5",
"lineId": 138030225,
"price": 1.99
},
{
"status": "VALID",
"legId": "5a273cac-a84a-4be4-bd68-09ad92c828af",
"lineId": 138030214,
"price": 1.787
}
],
"invalidLegs": [
{
"status": "PROCESSED_WITH_ERROR",
"errorCode": "OFFLINE_EVENT",
"legId": "5a273cac-a84a-4be4-bd68-09ad92c828df",
"lineId": 138030543,
"price": 2.17
}
]
}

Throws

GenericException type

Place Teaser Bet

Place bet in the system.

Request

POST /v1/bets/teaser

json format only

ParameterTypeRequiredDescription
uniqueRequestId GUID Yes Client genereated GUID for uniquely identifying the bet.
teaserId Long Yes Unique identifier.
Teaser details can be retrieved from a call to Get Teaser Groups endpoint.
oddsFormat ODD_FORMAT Yes Format the odds are returned in.
winRiskStake WIN_RISK_TYPE Yes Whether the stake amount is risk or win amount.
stake Decimal Yes Amount of the wager in the client's currency.
legs Array of Leg Yes Collection of Leg.

Leg:

ParameterTypeRequiredDescription
legId GUID Yes Client genereated GUID for uniquely identifying the leg.
betType BET_TYPE Yes Type of bet.
Currently, only BET_TYPE.SPREAD and BET_TYPE.TOTAL_POINTS are supported.
lineId Long Yes Unique identifier.
eventId Long Yes Unique identifier.
handicap Decimal Yes Number of points.
side SIDE_TYPE For BET_TYPE.TOTAL_POINTS Side of a total line being bet on.
team TEAM_TYPE For BET_TYPE.SPREAD Team being bet on for a spread line.
Currenlty, only TEAM_TYPE.Team1 and TEAM_TYPE.Team2 are supported.

Request Example:

{
  "uniqueRequestId": "48175E97-02B7-4EA8-BCEF-9E557A80CE8F",
  "teaserId": 50,
  "stake": 1,
  "winRiskStake": "RISK",
  "oddsFormat": "AMERICAN",
  "legs": [
    {
      "legId": "24E999C0-9AA7-480E-F490-89B219C4D01A",
      "betType": "SPREAD",
      "eventId": 480174385,
      "lineId": 210663830,
      "handicap": -4.5,
      "team": "Team1"
    },
    {
      "legId": "8E42659C-782B-806E-6453-F0FF632BA0C7",
      "betType": "TOTAL_POINTS",
      "eventId": 480174384,
      "lineId": 210663823,
      "handicap": 2.6,
      "side": "UNDER"
    }
  ]
}

Response

json format only

ParameterTypeRequiredDescription
code PLACE_TEASER_BET_CODE On Error Code identifying an error that occurred
message String On Error Human friendly error message
status PLACE_TEASER_BET_STATUS When code is not present Indicates whether the bet is valid or not
errorCode PLACE_TEASER_BET_ERROR_CODE When status = PROCESSED_WITH_ERROR Not present if status != PROCESSED_WITH_ERROR
uniqueRequestId GUID Yes Client genereated GUID that was provided in request
betId Long When status = ACCEPTED Unique identifier
price Decimal When status = ACCEPTED Price for the bet
riskAmount Decimal When status = ACCEPTED Amount wagered
winAmount Decimal When status = ACCEPTED Potential winnings
invalidLegs Array of InvalidLeg No Collection of InvalidLeg
validLegs Array of ValidLeg Yes Collection of ValidLeg

InvalidLeg:

ParameterTypeRequiredDescription
status PLACE_TEASER_BET_LEG_STATUS Yes Status will always be PROCESSED_WITH_ERROR
errorCode PLACE_TEASER_BET_LEG_ERROR_CODE Yes
legId GUID Yes Client genereated GUID that was provided in request

ValidLeg:

ParameterTypeRequiredDescription
status PLACE_TEASER_BET_LEG_STATUS Yes Status will always be VALID
legId GUID Yes Client genereated GUID that was provided in request
lineId Long Yes Unique identifier
points Decimal Yes Number of points

Response on Success

{
  "status": "ACCEPTED",
  "uniqueRequestId": "48175e97-02b7-4ea8-bcef-9e557a80ce8f",
  "betId": 480174697,
  "price": -200,
  "riskAmount": 100,
  "winAmount": 50,
  "validLegs": [
    {
      "status": "VALID",
      "legId": "24e999c0-9aa7-480e-f490-89b219c4d01a",
      "lineId": 210663830,
      "points": 18.5
    },
    {
      "status": "VALID",
      "legId": "8e42659c-782b-806e-6453-f0ff632ba0c7",
      "lineId": 210663823,
      "points": 206
    }
  ]
}

Response on Error

{
  "status": "PROCESSED_WITH_ERROR",
  "errorCode": "INVALID_LEGS",
  "uniqueRequestId": "48175e97-02b7-4ea8-bcef-9e557a80ce8a",
  "invalidLegs": [
    {
      "status": "PROCESSED_WITH_ERROR",
      "errorCode": "POINTS_ARE_NOT_ADJUSTED",
      "legId": "24e999c0-9aa7-480e-f490-89b219c4d0aa"
    }
  ],
  "validLegs": [
    {
      "status": "VALID",
      "legId": "8e42659c-782b-806e-6453-f0ff632ba0c7",
      "lineId": 210663823,
      "points": 206
    }
  ]
}
{
  "code": "INVALID_REQUEST_DATA",
  "message": "Missing legId. The legId must be a valid Guid."
}

Place Special Bet

Place special bet in the system.

POST /v1/bets/special

Place Special Bet Request

ParameterTypeRequiredDescription
bets Array of Special Bet types Yes A list of special bets

Special Bet Type

ParameterTypeRequiredDescription
uniqueRequestId GUID Yes This unique id of the place bet requests. This is to support idempotent requests
acceptBetterLine BOOLEAN Yes Whether or not to accept a bet when there is a line change in favor of the client
oddsFormat ODDS_FORMAT Yes Bet is processed with this odds format.
stake Decimal Yes Wagered amount in Client’s currency
winRiskStake WIN_RISK_TYPE Yes Whether the stake amount is risk or win amount
lineId Long Yes Line id from /line/special response
specialId Long Yes Special id
contestantId Long Yes Contestant id

JSON Example:

{
    "bets": [
        {
            "uniqueRequestId":    "3ca3e7a7-1111-4907-8b84-00f02e814b8d",
            "acceptBetterLine":   "TRUE",
            "oddsFormat":         "AMERICAN",
            "winRiskStake":       "RISK",
            "stake":              406.79,
            "lineId":             33997608,
            "specialId":          480692762,
            "contestantId":       480692764,
        } 
    ]
}

Response

ParameterTypeRequiredDescription
bets Array of bet types Yes A list of bets

Bet type

ParameterTypeRequiredDescription
status PLACE_SPECIAL_BET_RESPONSE_STATUS Yes
errorCode PLACE_SPECIAL_BET_ERROR_CODE No If Status is PROCESSED_WITH_ERROR, errorCode will be in the response
betId Long No The bet ID of the new bet. May be empty on failure
uniqueRequestId GUID Yes Echo of the uniqueRequestId from the request
betterLineWasAccepted BOOLEAN No

Whether or not the bet was accepted on the line that changed in favour of client.

This can be true only if acceptBetterLine in the Place Bet request is set to TRUE

JSON Example - Accepted bet

{
  "bets": [
    {
      "status": "ACCEPTED",
      "betId": 480703859,
      "uniqueRequestId": "3ca3e7a7-1111-4907-8b84-00f02e814b8d",
      "betterLineWasAccepted": false
    }
  ]
}

JSON Example - Bet processed with error
{

  "bets": [
    {
      "status": "PROCESSED_WITH_ERROR",
      "errorCode": "LINE_CHANGED",
      "uniqueRequestId": "3ca3e7a8-1111-4907-8b84-00f02e614b8d"
    }
  ]
}

Throws

GenericException type

Get Bets

Returns running and settled bets in the last 30 days.

Request

GET /v1/bets?betlist={betlist}&fromDate={fromDate}&toDate={toDate}& betids=[1,2,3]

Table 6 - Get Bets Request

ParameterTypeRequiredDescription
betlist BETLIST_TYPE No Not needed when betids is submitted
betids Long[] No

Array of bet ids. When betids is submitted, no other parameter is necessary

Maximum is 100 ids

Works for all non settled bets and all bets settled in the last 30 days

fromDate Date Time No

Start date of the requested period. Required when betlist parameter is submitted

Difference between fromDate and toDdate can’t be more than 30 days

Expected format is ISO8601 - can be set to just date or date and time

Note: Querying settled bets (betlist =CANCELLED|SETTLED ) is by settlement date, time portion is ignored 

toDate Date Time No

End date of the requested period Required when betlist parameter is submitted

Expected format is ISO8601 - can be set to just date or date and time

toDate value is exclusive, meaning it cannot be equal to fromDate

Note: Querying settled bets (betlist =CANCELLED|SETTLED ) is by settlement date, time portion is ignored 

Please note:

If it's necessary to get bets for a single day, the toDate must be either set to fromDate + 1 (next day) or fromDate and toDate dates can be the same as long as time is provided to represent the 24-hour window.

URL Examples

Get running bets for the same date (with time):
https://api.pinnacle.com/v1/bets?betlist=RUNNING&fromDate=2015-12-29T00:00:00Z&toDate=2015-12-29T23:59:59Z

Get bets by bet Ids:
https://api.pinnacle.com/v1/bets?betids=299633842,299629993

Get settled bets by date range (without time):
https://api.pinnacle.com/v1/bets?betlist=settled&fromDate=2013-06-01&toDate=2013-06-05

Response
Response returns array of Straight Bet type, Parlay Bet types, Teaser Bet Types and Special Bet Types


Straight Bet type:

ParameterTypeRequiredDescription
betId Long Yes Bet identification
wagerNumber Int Yes

Wager identification. All bets placed thru the API will have value 1.

Website supports multiple bets (wagers) placement in the same bet slip. In that case the bet would have appropriate wager number.

placedAt Date Time Yes Date time when the bet was placed
win Decimal Yes Win amount
risk Decimal Yes Risk amount
winLoss Decimal No Win-Loss for settled bets
betStatus BET_STATUS Yes
betType BETLIST_BET_TYPE Yes
sportId Int Yes
leagueId Long Yes
eventId Long Yes
handicap Decimal No Handicap that the bet was placed on
price

Decimal

Yes Price that the bet was placed on
teamName String No Team name. If the bet was placed on moneyline draw side, the value will be Draw
side SIDE_TYPE No
oddsFormat ODDS_FORMAT Yes Bet odds format.
customerCommission Decimal No Client’s commission on the bet
pitcher1 String No Team1 pitcher name. Baseball only.
pitcher2 String No Team2 pitcher name. Baseball only.
pitcher1MustStart BOOLEAN No Whether the team1 pitcher must start in order for bet to take action. Baseball only
pitcher2MustStart BOOLEAN No Whether the team2 pitcher must start in order for bet to take action. Baseball only
team1 String Yes Team 1 name
team2 String Yes Team 2 name
isLive BOOLEAN No Whether the bet is on live event
periodNumber Int No Period number that the bet was placed on
team1Score Decimal No Team 1 score that the bet was placed on
team2Score Decimal No Team 2 score that the bet was placed on
ftTeam1Score Decimal No Full time team 1 score
ftTeam2Score Decimal No Full time team 2 score
pTeam1Score Decimal No End of period team 1 score. If the bet was placed on Game period (periodNumber =0) , this will be null
pTeam2Score Decimal No End of period team 2 score. If the bet was placed on Game period (periodNumber =0) , this will be null
cancellationReason Cancellation Reason Type No Cancellation Reason; may be present ONLY for CANCELLED bets
updateSequence Long Yes Each change on the bet status would increment this number.

Parlay Bet type:

ParameterTypeRequiredDescription
betId Long Yes Bet identification
wagerNumber Int Yes

Wager identification. When placing parlay with round robin option there will be multiple parlays with same BetId, but different wagerNumber, otherwise for single parlay bet it will be 1.

placedAt Date Time Yes Date time when the bet was placed
win Decimal Yes Win amount
risk Decimal Yes Risk amount
winLoss Decimal No Win-Loss for settled bets
betStatus BET_STATUS Yes
betType BETLIST_BET_TYPE Yes Always PARLAY
oddsFormat ODDS_FORMAT Yes Bet odds format
customerCommission Decimal No Client’s commission on the bet
Legs Array of Leg Type Yes List of legs
updateSequence Long Yes Each change on the bet status would increment this number.

Leg type:

ParameterTypeRequiredDescription
sportId Int Yes
leagueId Long Yes
eventId Long Yes
legBetType LEG_BET_TYPE Yes Can be SPREAD, MONEYLINE or TOTAL_POINTS
legBetStatus LEG_BET_STATUS Yes
handicap Decimal No Handicap that the bet was placed on
price

Decimal

Yes Price that the bet was placed on
teamName String No Team name. If the bet was placed on moneyline draw side, the value will be Draw
side SIDE_TYPE No
pitcher1 String No Team1 pitcher name. Baseball only
pitcher2 String No Team2 pitcher name. Baseball only
pitcher1MustStart BOOLEAN No Whether the team1 pitcher must start in order for bet to take action. Baseball only
pitcher2MustStart BOOLEAN No Whether the team2 pitcher must start in order for bet to take action. Baseball only
team1 String Yes Team 1 name
team2 String Yes Team 2 name
isLive BOOLEAN No Whether the bet is on live event
periodNumber Int No Period number that the bet was placed on
team1Score Decimal No Team 1 score that the bet was placed on
team2Score Decimal No Team 2 score that the bet was placed on
ftTeam1Score Decimal No Full time team 1 score
ftTeam2Score Decimal No Full time team 2 score
pTeam1Score Decimal No End of period team 1 score. If the bet was placed on Game period (periodNumber =0) , this will be null
pTeam2Score Decimal No End of period team 2 score. If the bet was placed on Game period (periodNumber =0) , this will be null

Teaser Bet type:

ParameterTypeRequiredDescription
betId Long Yes Bet identifier.
wagerNumber Int Yes Wager identification. All bets placed thru the API will have value 1.
Website supports multiple bets (wagers) placement in the same bet slip.
In that case the bet would have appropriate wager number.
placedAt Date Time Yes Date time when the bet was placed
betStatus BET_STATUS Yes
betType BETLIST_BET_TYPE Yes Always TEASER
win Decimal Yes
risk Decimal Yes
winLoss Decimal No
customerCommission Decimal No Customer’s commission on the bet
teaserName String Yes Name of the teaser.
isSameEventOnly BOOLEAN Yes true when all legs must be from the same event; otherwise false
minPicks Int Yes Minimum number of legs required for teaser
maxPicks Int Yes Maximum number of legs required for teaser
legs Array of Leg Yes A collection of Leg

Teaser Bet Leg type:

ParameterTypeRequiredDescription
legBetType LEG_BET_TYPE Yes
legBetStatus LEG_BET_STATUS Yes
eventId Long Yes
eventStartTime Date Time Yes
sportId Int Yes
leagueId Int Yes
handicap Decimal Yes Handicap that the bet was placed on.
teamName String For LEG_BET_TYPE.SPREAD
side SIDE_TYPE For LEG_BET_TYPE.TOTAL_POINTS
team1 String Yes Team 1 name.
team2 String Yes Team 2 name.
periodNumber Int Yes Period number that the bet was placed on.

Special Bet:

ParameterTypeRequiredDescription
betId Long Yes bet id
wagerNumber Int Yes

Wager identification. All bets placed thru the API will have value 1.

Website supports multiple bets (wagers) placement in the same bet slip. In that case the bet would have appropriate wager number.

placedAt Date Time Yes Date time when the bet was placed
betStatus BET_STATUS Yes Bet status
betType BETLIST_BET_TYPE Yes Always SPECIAL
win Decimal Yes Win amount
risk Decimal Yes Risk amount
winLoss Decimal Yes Win-Loss for settled bets. If comes back as null it means that the bet is not yet settled
oddsFormat ODDS_FORMAT Yes Bet odds format
customerCommission Decimal No Client’s commission on the bet
specialId Long Yes id of the special
contestantId Long Yes id of the contestant
contestantName String Yes name of the contestant
price Decimal Yes Price that the bet was placed on
handicap Decimal No Handicap that the bet was placed on
sportId Int Yes Sport id
leagueId Long Yes League id
eventId Long No Event id
periodNumber
Int No period number
cancellationReason Cancellation Reason Type No Cancellation Reason; may be present ONLY for CANCELLED bets
specialName String Yes The name of the special event
units String No For special that has associated units.
team1 String No team1 name of the associated  fixture event. Populated only if the special is on a fixture event.
team2 String No team2 name of the associated  fixture event. Populated only if  the special is on a fixture event. 
updateSequence Long Yes Each change on the bet status would increment  this number.

Manual Bet type:

ParameterTypeRequiredDescription
betId Long Yes Bet identification
wagerNumber Int Yes

Wager identification. All bets placed thru the API will have value 1.

Website supports multiple bets (wagers) placement in the same bet slip. In that case the bet would have appropriate wager number.

placedAt Date Time Yes Date time when the bet was placed
betStatus BET_STATUS Yes Bet status
betType BETLIST_BET_TYPE Yes Always Manual
win Decimal Yes Win amount
risk Decimal Yes Risk amount
winLoss Decimal No Win-Loss for settled bets
oddsFormat ODDS_FORMAT Yes Bet odds format
customerCommission Decimal No Client’s commission on the bet
cancellationReason CancellationReason Yes Cancellation Reason
updateSequence Long Yes Unique Sequence Update Number
description String Yes Manual bet description
referenceBetId Long No ReferenceTicketNumber.
updateSequence Long Yes Each change on the bet status would increment  this number.



Cancellation Reason Type:

ParameterTypeRequiredDescription
code string Yes Cancellation Reason Code. Please see Get Cancellation Reasons for details.
details Cancellation Specifics Type No Cancellation Specifics


Cancellation Specifics Type:

ParameterTypeRequiredDescription
correctTeam1Id string No
correctTeam2Id string No
correctListedPitcher1 string No
correctListedPitcher2 string No
correctSpread string No
correctTotalPoints string No
correctTeam1TotalPoints string No
correctTeam2TotalPoints string No
correctTeam1Score string No
correctTeam2Score string No
correctTeam1TennisSetsScore string No
correctTeam2TennisSetsScore string No

JSON example for Special Bet response

{
  "betId": 481558060,
  "wagerNumber": 2,
  "placedAt": "2016-11-07T20:23:06",
  "betStatus": "CANCELLED",
  "betType": "SPECIAL",
  "win": 55.5,
  "risk": 25,
  "winLoss": null,
  "oddsFormat": "DECIMAL",
  "cancellationReason": {
    "code": "FBS_CW_233",
    "details": {
      "correctTeam1Id": "Arizona Diamondbacks",
      "correctTeam2Id": "Blue Jays Hits",
      "correctListedPitcher1": "Smith",
      "correctListedPitcher2": "Tony",
      "correctSpread": "1.3",
      "correctTotalPoints": "34.7",
      "correctTeam1TotalPoints": "3.4",
      "correctTeam2TotalPoints": "2.6",
      "correctTeam1Score": "1",
      "correctTeam2Score": "3",
      "correctTeam1TennisSetsScore": "4",
      "correctTeam2TennisSetsScore": "2"
    }
  },
  "specialId": 481517184,
  "contestantId": 481517186,
  "contestantName": "Cont2",
  "price": 3.22,
  "sportId": 33,
  "leagueId": 2784
}

Throws

GenericException type


Get Inrunning

Returns all soccer events that have a live status associated with them and have a status that indicates the game is in progress.

Request

No request parameters

GET v1/inrunning

URL Example:

https://api.pinnacle.com/v1/inrunning

Response

Response is available in json.

Table - Get Inrunning Response

Parameter Type Required Description
sports Array of InRunningSport Yes Sports container

InRunningSport:

Parameter Type Required Description
id Int Yes Sport Id
leagues Array of InRunningLeague Yes

Leagues container

InRunningLeague:

Parameter Type Required Description
id Int Yes League Id
events Array of InRunningEvent Yes Events container

InRunningEvent :

ParameterTypeRequiredDescription
id Long Yes The event id
state INRUNNING_STATE Yes The state of the live event
elapsed Int Yes Minutes elapsed since start of the state . Please note that this will be 0 when the match is in half time

JSON example:

{
"sports":[
{
"id":29,
"leagues":[
{
"id":9886,
"events":[
{
"id":411654152,
"state":2,
"elapsed":0
}
]
},
{
"id":5578,
"events":[
{
"id":411657344,
"state":2,
"elapsed":0
}
]
}
]
}
]
}

Throws

GenericException type

Get Translations

Returns translations for supplied strings based on supplied cultures

Table -Supported cultures for Get Translations operation

LanguageCulture
English en-US
British en-GB
ChineseSI zh-CN
ChineseTR zh-TW
Finnish fi-FI
German de-DE
Hebrew he-IL
Italian it-IT
Norwegian nb-NO
Portuguese pt-BR
Russian ru-RU
Spanish es-ES
Swedish sv-SE
Thai th-TH
Polish pl-PL
French fr-FR
Japanese ja-JP
Korean ko-KR
Vietnamese vi-VN
Indonesian id-ID
Czech cs-CZ

Request

GET /v1/translations?cultureCodes=[culture1|culture2]&baseTexts=[baseText1|baseText2]
Each string in parameters must be URL encoded and separated with “|” character
Parameters are not case-sensitive

Table - Get Translations request parameteres

ParameterTypeRequiredDescription
cultureCodes String Yes Must be in "Language Culture Name" format
baseTexts String Yes Array of strings to be translated

URL Examples:

Translate single text string by a single culture (translate Football to German):
https://api.pinnacle.com/v1/translations?cultureCodes=de-DE&baseTexts=Football

Translate multiple text strings by a single culture (translate Football and Soccer to German):
https://api.pinnacle.com/v1/translations?cultureCodes=de-DE&baseTexts=Football|Soccer

Translate single text string by multiple cultures (translate Football to German and French):
https://api.pinnacle.com/v1/translations?cultureCodes=de-DE|fr-FR&baseTexts=Football

Translate multiple text strings by multiple cultures (translate Football and Soccer to German and French):
https://api.pinnacle.com/v1/translations?cultureCodes=de-DE|fr-FR&baseTexts=Football|Soccer

Response

Response is available in json.

Table - Get Translations Response

Parameter Type Required Description
translations Array of Translation Yes Collection of translations

Translation:

Parameter Type Required Description
text String Yes Original requested text to be translated
cultures Array of TranslationByCulture Yes

Collection of translations by culture

TranslationByCulture:

ParameterTypeRequiredDescription
id String Yes Culture based on which the text is translated
text String Yes Translated text

JSON example:

{
"translations": [
{
"text": "Soccer",
"cultures": [
{
"id": "de-de",
"text": "Fussball"
}
]
}
]
}

When a non-supported culture is received by the API, same base text will be returned for translated text

Example request:

https://api.pinnacle.com/v1/translations?cultureCodes=Non-supported-Culture&baseTexts=Soccer

When a translation for a given base text is not found, no translations will be provided for a given base text

Example request:

https://api.pinnacle.com/v1/translations?cultureCodes=De-De&baseTexts=IncorrectBaseText

Example request:

https://api.pinnacle.com/v1/translations?cultureCodes=De-De&baseTexts=IncorrectBaseText|Soccer

Throws

GenericException type


Get Periods

Returns periods for the sport.


Request

GET /v1/periods?sportid=sportid

Table - Get Periods request parameteres

ParameterTypeRequiredDescription
sportId String Yes

URL Examples:

https://api.pinnacle.com/v1/periods?sportid=29

Response

Response is available in json only.


Table - Get Periods Response

ParameterTypeRequiredDescription
number Int Yes
description String No

shortDescription String No
spreadDescription String No

moneylineDescription String No
totalDescription String No
team1TotalDescription String No

team2TotalDescription String No
spreadShortDescription String No

moneylineShortDescription String No
totalShortDescription String No
team1TotalShortDescription String No
team2TotalShortDescription String No

Example request:

https://api.pinnacle.com/v1/periods?sportId=29

Response:

{
  "periods": [
    {
"number": 0,
"description": "Match",
"shortDescription": "FT",
"spreadDescription": "Handicap",
"moneylineDescription": "1X2",
"totalDescription": "Total",
"team1TotalDescription": "Team 1 Goals",
"team2TotalDescription": "Team 2 Goals",
"spreadShortDescription": "HDP",
"moneylineShortDescription": "1X2",
"totalShortDescription": "O/U",
"team1TotalShortDescription": "Team 1 Goals",
"team2TotalShortDescription": "Team 2 Goals"
}
] }


Example request:

https://api.pinnacle.com/v1/periods?sportid=2234234

Response:

no content

Example request:

https://api.pinnacle.com/v1/periods?sportid=476870-809

Response:

{
"code": "INVALID_REQUEST_DATA",
"message": "Missing/Invalid SportId\r\nParameter name: SportId"
}

Throws

GenericException type

Get Cancellation Reasons

Returns all cancellation reasons.

Request

GET /v1/cancellationreasons

Response

Response is available in json only.

ParameterTypeRequiredDescription
cancellationReasons Array of Cancellation Reason Type Yes


Cancellation Reason Type

ParameterTypeRequiredDescription
code string Yes Cancellation Reason Code
description string Yes Cancellation Reason Description



Example request:

https://api.pinnacle.com/v1/cancellationreasons

Response:

{
  "cancellationReasons": [
    {
      "code": "FBS_CW_1",
      "description": "The wager was offered with an incorrect line"
    },
    {
      "code": "FBS_CW_100",
      "description": "The half was not completed."
    },
    {
      "code": "FBS_CW_101",
      "description": "Play was suspended and not resumed the same day."
    },
    {
      "code": "FBS_CW_102",
      "description": "The team did not play 82 games."
    },
    {
      "code": "FBS_CW_103",
      "description": "One or more of the players did not attempt at least one dunk."
    },
    {
      "code": "FBS_CW_104",
      "description": "One or more of the players did not attempt at least one three point shot."
    },
    {
      "code": "FBS_CW_105",
      "description": "The match was suspended and not completed on the same day."
    }
  ]
}

Throws

GenericException type

Get Betting Status

Returns current betting status. During maintenance windows betting could be disabled , you can call this operation to check the current betting status.  

 

Request

GET /v1/bets/betting-status 

Response

ParameterTypeRequiredDescription
status BETTING_STATUS Yes



Exceptions

GenericException type

Parameter

TypeRequiredDescription
code String Yes Error code
message String Yes Additional details of the error
refId String No Error Reference Id
HTTP Status CodecodeDescription
500 UNEXPECTED_ERROR Unexpected error
400 INVALID_REQUEST_DATA Invalid request parameters
400 DUPLICATED_REQUEST Request with the same uniqueRequestId was already processed
400 RESUBMIT_REQUEST You would need to resubmit the request. Please use new uniqueRequestId
401 INVALID_CREDENTIALS Authorization failed, invalid credentials
401 INVALID_AUTHORIZATION_HEADER HTTP Authorization header is missing
401 UNEXPECTED_ERROR Authorization error
403 HTTPS_REQUIRED This url must be called using HTTPS
403 ACCOUNT_INACTIVE Account is not active
403 NO_API_ACCESS Account not permitted to access the API
415 INVALID_HEADER Header is invalid

JSON example

 {
"code":"UNAUTHORIZED",
"message":"Invalid credentials"
}

ENUMS

BET_STATUS

ValueDescription
ACCEPTED Bet was accepted.
CANCELLED Bet is cancelled as per Pinnacle betting rules. This may happen only before the event was settled.
LOSE

The bet is settled as lose.

Parlay bets:
The parlay bet has at least one leg that with legBetStatus =LOSE and it’s really lose, not push-lose (see LEG_BET_STATUS). In this case winLoss = -risk

PENDING_ACCEPTANCE This status is reserved only for live bets. If a live bet is placed during danger zone or live delay is applied, it will be in PENDING_ACCEPTANCE , otherwise in ACCEPTED status. From this status bet can go to ACCEPTED or REJECTED status.
REFUNDED When an event is cancelled or when the bet is settled as push, the bet will have REFUNDED status.
REJECTED Bet was rejected. Bet can be rejected only if it was previously in PENDING_ACCEPTANCE status.
WON

The bet is settled as won.

Parlay bets:
In this case all legs must be either won, push-won, push-lose, or regular push (see LEG_BET_STATUS). In this case winLoss can be still be less than zero in case one of the legs was push-lose.
If all the legs have legBetStatus = Won, than the winLoss will be greater than zero.

BET_TYPE

ValueDescription
MONEYLINE
TEAM_TOTAL_POINTS
SPREAD
TOTAL_POINTS

BETLIST_TYPE

ValueDescription
SETTLED Settled bets
RUNNING Running bets
CANCELLED Cancelled bets

BOOLEAN

ValueDescription
FALSE
TRUE

BOOLEAN2

ValueDescription
0 False
1 True

EVENT_STATUS

ValueDescription
H This status indicates that the lines are temporarily unavailable for betting.
I This status indicates that one or more lines have a red circle (a lower maximum bet amount).
O This is the starting status of a game. It means that the lines are open for betting.

FEED_ODDS_FORMAT_TYPE

ValueDescription
0 American odds format
1 Decimal odds format
2 HongKong odds format
3 Indonesian odds format
4 Malay odds format
5 Fraction odds format

GETLINE_RESPONSE_STATUS

ValueDescription
NOT_EXISTS Line not offered anymore
SUCCESS OK

INRUNNING_STATE

ValueDescription
1 First half in progress
2 Half time in progress
3 Second half in progress
4 End of regular time
5 First half extra time in progress
6 Extra time half time in progress
7 Second half extra time in progress
8 End of extra time
9 End of Game
10 Game is temporary suspended
11 Penalties in progress

LEG_BET_TYPE

ValueDescription
MONEYLINE
SPREAD
TOTAL_POINTS

LEG_BET_STATUS

ValueDescription
CANCELLED The leg is canceled- the stake on this leg will be transferred to the next one. In this case the leg will be ignored when calculating the winLoss.
LOSE The leg is a loss or a push-lose. When Push-lose happens, the half of the stake on the leg will be pushed to the next leg, and the other half will be a lose. This can happen only when the leg is placed on a quarter points handicap.
PUSH The leg is a push - the stake on this leg will be transferred to the next one. In this case the leg will be ignored when calculating the winLoss.
REFUNDED The leg is refunded - the stake on this leg will be transferred to the next one. In this case the leg will be ignored when calculating the winLoss.
REJECTED The leg is rejected - the stake on this leg will be transferred to the next one. In this case the leg will be ignored when calculating the winLoss.
WON The leg is a won or a push-won. When Push-won happens, the half of the stake on the leg will be pushed to the next leg, and the other half is won. This can happen only when the leg is placed on a quarter points handicap.

LIVE_STATUS

ValueDescription
0 No live betting will be offered on this event.
1 Live betting event.
2 Live betting will be offered on this event.

ODDS_FORMAT

ValueDescription
AMERICAN
DECIMAL
HONGKONG
INDONESIAN
MALAY

PARLAY_LINES_STATUS

ValueDescription
PROCESSED_WITH_ERROR Parlay contains error(s).
VALID Parlay is valid.

PARLAY_RESTRICTION

ValueDescription
0 Allowed to parlay, without restrictions.
1 Not allowed to parlay this event.
2 Allowed to parlay, with the restrictions. You can not have more than one leg from the same event in the parlay. All events with the same rot number are treated as the same event.

PLACE_PARLAY_BET_ERROR_CODE

ValueDescription
ABOVE_MAX_BET_AMOUNT Stake is above allowed maximum amount
ALL_BETTING_CLOSED Betting is not allowed at this moment
BELOW_MIN_BET_AMOUNT Stake is below allowed minimum amount
BLOCKED_BETTING Parlay betting is not allowed for this client
BLOCKED_CLIENT Client is no longer active
DUPLICATE_UNIQUE_REQUEST_ID UniqueRequestId must be inque for each bet
INSUFFICIENT_FUNDS Bet is submitted by a client with insufficient funds
INVALID_COUNTRY Client country is not allowed for betting
INVALID_LEGS One or more legs are invalid
INVALID_ODDS_FORMAT Bet was submitted with the odds format that is not allowed for the client
INVALID_REQUEST Parlay request is not valid.
INVALID_ROUND_ROBIN_OPTIONS Round robin options are invalid (i.e. does not match with number of legs)
ROUND_ROBIN_DISALLOWED Round robin is disallowed for one of the leagues
TOO_MANY_LEGS Maximum of 10 legs can be specified
TOO_FEW_LEGS At least 2 legs are required for Parlay
RESPONSIBLE_BETTING_RISK_LIMIT_EXCEEDED Self-imposed risk limit exceeded
RESPONSIBLE_BETTING_LOSS_LIMIT_EXCEEDED Self-imposed losslimit exceeded
UNKNOWN An unknown error has occured

PLACE_PARLAY_BET_RESPONSE_STATUS

ValueDescription
ACCEPTED Accepted
PENDING_ACCEPTANCE Pending Acceptance.
PROCESSED_WITH_ERROR Processed with error

PLACE_PARLAY_LEG_ERROR_CODE

ValueDescription
CANNOT_PARLAY_LIVE_GAME The wager is placed on Live game
CORRELATED The leg is correlated with another one
EVENT_NO_LONGER_AVAILABLE_FOR_BETTING The event is no longer offered for Parlays
EVENT_NOT_OFFERED_FOR_PARLAY The event is not offered for Parlays
INVALID_EVENT Live betting is not allowed at this moment
INVALID_LEG_BET_TYPE Leg bet type is not accepted for Parlays, Accepted values are: SPREAD, MONEYLINE, TOTAL_POINTS
INVALID_PARLAY_BET The leg did not validated due to error on Parlay Bet. Check the error PlaceParlayBet response for error details
LINE_CHANGED Bet is submitted on a line that has changed
LINE_DOES_NOT_BELONG_TO_EVENT LineId does not match the EventId specified in the request
LISTED_PITCHERS_SELECTION_ERROR If bet was submitted with pitcher1MustStart and/or pitcher2MustStart parameters with values that are not allowed

ODDS_NO_LONGER_OFFERED_FOR_PARLAY_1
ODDS_NO_LONGER_OFFERED_FOR_PARLAY_2
ODDS_NO_LONGER_OFFERED_FOR_PARLAY_3

Due to line change odds are not offered for Parlay anymore
OFFLINE_EVENT Bet is submitted on an event that is offline or with incorrect lineId
PAST_CUTOFFTIME Bet is submitted on a game after the betting cutoff time
SYSTEM_ERROR_1
SYSTEM_ERROR_2
SYSTEM_ERROR_3
Unexpected error or System error
LINE_IS_NOT_AVAILABLE Line is not available for the specified Parlay Leg

PLACE_PARLAY_LEG_RESPONSE_STATUS

ValueDescription
PROCESSED_WITH_ERROR Processed with error
VALID Valid leg

PLACE_TEASER_BET_CODE

ValueDescription
BLOCKED_BETTING
DUPLICATED_REQUEST
RESUBMIT_REQUEST The ticket hast to be resubmitted
UNEXPECTED_ERROR

PLACE_TEASER_BET_ERROR_CODE

ValueDescription
ABOVE_MAX_BET_AMOUNT Bet is above the maximum allowed
ALL_BETTING_CLOSED The wagering is disabled in the system (not related to a customer)
BELOW_MIN_BET_AMOUNT Bet is below the minimum allowed
BLOCKED_BETTING Teaser betting is not allowed for this client
BLOCKED_CLIENT Customer is inactive in the system
DOUBLE_HIT The website submitted the same bet more than once
DUPLICATE_CLIENT_REFERENCE_ID The teaser unique id and/or one of the leg unique id are the same
INCOMPLETE_CUSTOMER_BETTING_PROFILE The customer does not exist
INSUFFICIENT_FUNDS The risk amount is above the customer’s available balance
INVALID_COUNTRY Current location is proscribed
INVALID_CUSTOMER_PROFILE EITHER the customer does not exist OR the customer business rules are not verified
INVALID_LEGS One or more legs are not verified
INVALID_REQUEST Teaser request is not valid
ODDS_FORMAT_MISMATCH Agent customer’s odds format differs from wager request odds format
RESUBMIT_REQUEST The ticket hast to be resubmitted
TEASER_DOES_NOT_EXIST Teaser does not exist in the system
SAME_EVENT_ONLY_REQUIRED Legs required to be for the same game only. Specified in the Teaser Specifications
SYSTEM_ERROR_1 Teasers and TeaserLegs have only one generic SystemError (not 1, 2, 3) which can be anything from DB error to the error we could not map or Undefined
SYSTEM_ERROR_2 Teasers and TeaserLegs have only one generic SystemError (not 1, 2, 3) which can be anything from DB error to the error we could not map or Undefined. In this case the betting api is mapped to Undefined
SYSTEM_ERROR_3 Teasers and TeaserLegs have only one generic SystemError (not 1, 2, 3) which can be anything from DB error to the error we could not map or Undefined. In this case the betting api is mapped to Teaser Pay Card does not exist in the system
TOO_FEW_LEGS Legs count is below Min Picks specified in the Teaser Specifications
TOO_MANY_LEGS Legs count is above Max Picks specified in the Teaser Specifications
UNKNOWN An unknown error has occured
WAGERING_SUSPENDED The customer wagering is suspended
CONTEST_FUNCTIONALITY_IS_DISABLED UniqueRequestId must be inque for each bet
DUPLICATE_UNIQUE_REQUEST_ID
RESPONSIBLE_BETTING_LOSS_LIMIT_EXCEEDED
RESPONSIBLE_BETTING_RISK_LIMIT_EXCEEDED

PLACE_TEASER_BET_LEG_ERROR_CODE

ValueDescription
CANNOT_TEASER_LIVE_GAME Teaser is not allowed on a live game
CHECK_TEASER_ERROR The teaser is invalid, check the teaser error for more details
INVALID_EVENT The game is not found in the system
INVALID_LEG_BET The wager is not verified
INVALID_LEG_BET_TYPE Wager type is not “teasable”, can be either Spread or Total
LINE_CHANGED Wager is placed on a line that has changed
LINE_DOES_NOT_BELONG_TO_EVENT There was no game found for the wager
OFFLINE_EVENT EITHER the game is offline OR there was no game found for the wager
PAST_CUTOFFTIME Wager is placed on a game after the cutoff time
POINTS_ARE_NOT_ADJUSTED The teaser points were not adjusted
SYSTEM_ERROR_1 Teasers and TeaserLegs have only one generic SystemError (not 1, 2, 3) which can be anything from DB error to the error we could not map or Undefined. In this case it maps to SystemError
SYSTEM_ERROR_2 Teasers and TeaserLegs have only one generic SystemError (not 1, 2, 3) which can be anything from DB error to the error we could not map or Undefined. In this case it maps to Undefined
UNKNOWN An unknown error has occured
WAGER_DATA_MISSING Wager is denied due to insufficient information available for validation
LINE_IS_NOT_AVAILABLE Line is not available for the specified Teaser Leg.

PLACE_TEASER_BET_LEG_STATUS

ValueDescription
PROCESSED_WITH_ERROR Teaser contains error(s)
VALID Teaser is valid

PLACE_TEASER_BET_STATUS

ValueDescription
ACCEPTED Bet has been successfully placed
PROCESSED_WITH_ERROR Teaser contains error(s)
VALID Teaser is valid

PLACEBET_ERROR_CODE

ValueDescription
ALL_BETTING_CLOSED Betting is not allowed at this moment. This may happen during system maintenance
ALL_LIVE_BETTING_CLOSED Live betting is not allowed at this moment. This may happen during system maintenance
ABOVE_EVENT_MAX Bet cannot be placed because client exceeded allowed maximum of risk on a line
ABOVE_MAX_BET_AMOUNT Stake is above allowed maximum amount
BELOW_MIN_BET_AMOUNT Stake is below allowed minimum amount
BLOCKED_BETTING Customer is an agent
BLOCKED_CLIENT Client is no longer active
INSUFFICIENT_FUNDS Bet is submitted by a client with insufficient funds
INVALID_COUNTRY Client country is not allowed for betting
INVALID_EVENT Invalid eventid
INVALID_ODDS_FORMAT If a bet was submitted with the odds format that is not allowed for the client
LINE_CHANGED Bet is submitted on a line that has changed
LISTED_PITCHERS_SELECTION_ERROR If bet was submitted with pitcher1MustStart and/or pitcher2MustStart parameters in Place Bet request with values that are not allowed.
OFFLINE_EVENT Bet is submitted on a event that is offline (event status is H) or the submitted line is not offered at the moment due to points/handicap change or the submitted bet type is just not offered at the moment.
PAST_CUTOFFTIME Bet is submitted on a game after the betting cutoff time
RED_CARDS_CHANGED Bet is submitted on a live soccer event with changed red card count
SCORE_CHANGED Bet is submitted on a live soccer event with changed score
TIME_RESTRICTION Bet is submitted within too short of a period from the same bet previously placed by a client
DUPLICATE_UNIQUE_REQUEST_ID UniqueRequestId must be unique for each bet
INCOMPLETE_CUSTOMER_BETTING_PROFILE The customer does not exist
INVALID_CUSTOMER_PROFILE EITHER the customer does not exist OR the customer business rules are not verified
LIMITS_CONFIGURATION_ISSUE
RESPONSIBLE_BETTING_LOSS_LIMIT_EXCEEDED Self-imposed loss limit exceeded
RESPONSIBLE_BETTING_RISK_LIMIT_EXCEEDED Self-imposed risk limit exceeded
RESUBMIT_REQUEST The ticket hast to be resubmitted
SYSTEM_ERROR_3 Unexpected error or System error
UNKNOWN An unknown error has occured
WAGERING_SUSPENDED The customer wagering is suspended

PLACEBET_RESPONSE_STATUS

ValueDescription
ACCEPTED Accepted
PENDING_ACCEPTANCE Pending Acceptance. This is for bets with the live delay or in danger zone
PROCESSED_WITH_ERROR Processed with error

PLACE_SPECIAL_BET_ERROR_CODE

ValueDescription
ALL_BETTING_CLOSED Betting is not allowed at this moment. This may happen during system maintenance.
ABOVE_MAX_BET_AMOUNT Stake is above allowed maximum amount
BELOW_MIN_BET_AMOUNT Stake is below allowed minimum amount
BLOCKED_BETTING Betting is not allowed for this client
BLOCKED_CLIENT Client is no longer active
CONTEST_NOT_FOUND Incorrect contest id provided or contest is no longer available
CONTEST_FUNCTIONALITY_IS_DISABLED Contest functionality is disabled
CUSTOMER_TYPE_DOES_NOT_MATCH_PARTNER EITHER the customer does not exist OR the customer business rules are not verified
DUPLICATE_UNIQUE_REQUEST_ID UniqueRequestId must be inque for each bet
INCOMPLETE_CUSTOMER_BETTING_PROFILE Customer profile could not be loaded, please contact CSD
INSUFFICIENT_FUNDS Bet is submitted by a client with insufficient funds
INVALID_COUNTRY Client country is not allowed for betting
INVALID_CUSTOMER_PROFILE Client's betting profiel is incomplete
INVALID_REQUEST Special bet request is not valid
LINE_CHANGED Bet is submitted on a line that has changed
PAST_CUTOFFTIME Bet is submitted on a game after the betting cutoff time
RESPONSIBLE_BETTING_RISK_LIMIT_EXCEEDED Self-imposed risk limit exceeded
RESPONSIBLE_BETTING_LOSS_LIMIT_EXCEEDED Self-imposed loss limit exceeded
RESUBMIT_REQUEST The ticket hast to be resubmitted

SYSTEM_ERROR_1

SYSTEM_ERROR_2

Unexpected error or System error
UNIQUE_REQUEST_ID_REQUIRED UniqueRequestId is missing
WAGERING_SUSPENDED The customer wagering is suspended

PLACE_SPECIAL_BET_RESPONSE_STATUS

ValueDescription
ACCEPTED Accepted
PROCESSED_WITH_ERROR Processed with error

ROUND_ROBIN_OPTIONS

ValueDescription
Parlay Single parlay that include all wagers (No Round Robin)
TwoLegRoundRobin Multiple parlays having 2 wagers each (round robin style). Can be used if number of legs is greater or equal to 3
ThreeLegRoundRobin Multiple parlays having 3 wagers each (round robin style). Can be used if number of legs is greater or equal to 3
FourLegRoundRobin Multiple parlays having 4 wagers each (round robin style). Can be used if number of legs is greater or equal to 4
FiveLegRoundRobin Multiple parlays having 5 wagers each (round robin style). Can be used if number of legs is greater or equal to 5
SixLegRoundRobin Multiple parlays having 6 wagers each (round robin style). Can be used if number of legs is greater or equal to 6
SevenLegRoundRobin Multiple parlays having 7 wagers each (round robin style). Can be used if number of legs is greater or equal to 7
EightLegRoundRobin Multiple parlays having 8 wagers each (round robin style). Can be used if number of legs is equal to 8

SIDE_TYPE

ValueDescription
OVER
UNDER

TEAM_TYPE

ValueDescription
Draw Draw. This is used for MONEYLINE bet type only.
Team1 Team 1
Team2 Team 2

TEASER_LINES_ERROR_CODE

ValueDescription
INVALID_LEGS One or more of the legs is invalid.
SAME_EVENT_ONLY_REQUIRED Teaser specified requires that all legs are from the same event.
TEASER_DISABLED Teaser has been disabled and cannot be bet on.
TEASER_DOES_NOT_EXIST The teaser identifier could requeted could not be found.
TOO_FEW_LEGS You do not meet the minimum number of legs requirement for the teaser specified.
TOO_MANY_LEGS You are above the maximum number of legs for the teaser specified.
UNKNOWN An unknown error has occured.

TEASER_LINES_LEG_ERROR_CODE

ValueDescription
EVENT_NOT_FOUND The event specified could not be found.
POINTS_NO_LONGER_AVAILABLE The points requested are no longer available. This means that the lines a moved.
UNKNOWN An unknown error has occured.
WAGER_TYPE_NOT_VALID_FOR_TEASER The specified wager type is not valid for teasers.

TEASER_LINES_STATUS

ValueDescription
PROCESSED_WITH_ERROR Teaser contains error(s).
VALID Teaser is valid.

TEASER_REQUEST_CODE

ValueDescription
INVALID_REQUEST_DATA Generic error code indicating that there is something wrong in the request. Refer to associated message containing further details.

WIN_RISK_TYPE

ValueDescription
RISK Stake is risk amount
WIN Stake is win amount

SETTLEMENT_STATUS

ValueDescription
1 Event period is settled
2 Event period is re-settled
3 Event period is cancelled
4 Event period is re-settled as cancelled
5 Event is deleted

SPECIAL_BET_TYPE

ValueDescription
MULTI_WAY_HEAD_TO_HEAD
SPREAD
OVER_UNDER

BETLIST_BET_TYPE


ValueDescription
MONEYLINE
TEAM_TOTAL_POINTS
SPREAD
TOTAL_POINTS
SPECIAL
PARLAY
TEASER
MANUAL


BETTING_STATUS


ValueDescription
ALL_BETTING_ENABLED 
ALL_BETTING_CLOSED
ALL_LIVE_BETTING_CLOSED