Pinnacle Lines API
Pinnacle is an online gaming website that was founded in 1998. Since its inception, Pinnacle has become a medium-sized, fully licensed, online sportsbook.
Pinnacle is an online gaming website that was founded in 1998. Since its inception, Pinnacle has become a medium-sized, fully licensed, online sportsbook.
asyncapi: 3.0.0
info:
title: Pinnacle Lines API - Long-Poll Surface
version: v1
description: >-
Pinnacle does NOT expose a documented public WebSocket (WSS), Server-Sent
Events (SSE), or webhook surface. Real-time-ish odds/fixtures consumption
is implemented via HTTP delta polling using a `since` cursor on a handful
of REST endpoints: callers issue an initial snapshot request, then loop
on the same endpoint passing the `last` value from the previous response
back as `since` to receive only incremental changes.
This AsyncAPI document models that long-poll surface as event-style
operations over the HTTP binding so the cursored delta pattern can be
reasoned about as a near-real-time stream. It does not invent any
transport (no WSS/SSE/webhook channels are declared) and only describes
the endpoints, parameters, and `last` cursor field that are explicitly
documented in the Pinnacle Lines API OpenAPI specification at
https://github.com/pinnacleapi/pinnacleapi-documentation
(openapi-specification/linesapi-oas.yaml).
contact:
name: Pinnacle API
url: https://github.com/pinnacleapi/pinnacleapi-documentation
email: api@pinnacle.com
externalDocs:
description: Pinnacle API Documentation
url: https://pinnacleapi.github.io/
tags:
- name: LongPoll
- name: Fixtures
- name: Odds
servers:
pinnacle:
host: api.pinnacle.com
protocol: https
description: >-
Pinnacle REST host. All long-poll operations are HTTP GET requests
protected with HTTP Basic auth, as documented in the Lines API OpenAPI
specification.
security:
- $ref: '#/components/securitySchemes/basicAuth'
channels:
fixturesDeltaChannel:
address: /v1/fixtures
title: Fixtures Long-Poll
description: >-
Returns all non-settled events for the given sport. When called with a
`since` cursor, returns only fixtures that changed since the previous
response. Without `since`, responses are intentionally delayed up to 1
minute by Pinnacle to encourage delta usage.
bindings:
http:
method: GET
messages:
fixturesDelta:
$ref: '#/components/messages/FixturesDelta'
specialFixturesDeltaChannel:
address: /v1/fixtures/special
title: Special Fixtures Long-Poll
description: >-
Returns all non-settled specials for the given sport. Supports the
`since` cursor for delta retrieval; without `since`, responses are
delayed up to 1 minute.
bindings:
http:
method: GET
messages:
specialFixturesDelta:
$ref: '#/components/messages/SpecialFixturesDelta'
settledFixturesDeltaChannel:
address: /v1/fixtures/settled
title: Settled Fixtures Long-Poll
description: >-
Returns fixtures settled in the last 24 hours for the given sport.
Supports the `since` cursor for delta retrieval.
bindings:
http:
method: GET
messages:
settledFixturesDelta:
$ref: '#/components/messages/SettledFixturesDelta'
settledSpecialFixturesDeltaChannel:
address: /v1/fixtures/special/settled
title: Settled Special Fixtures Long-Poll
description: >-
Returns all specials settled in the last 24 hours for the given sport.
Supports the `since` cursor for delta retrieval.
bindings:
http:
method: GET
messages:
settledSpecialFixturesDelta:
$ref: '#/components/messages/SettledSpecialFixturesDelta'
straightOddsDeltaChannel:
address: /v2/odds
title: Straight Odds Long-Poll
description: >-
Returns straight odds for all non-settled events. When called with a
`since` cursor, returns ONLY periods that changed since the previous
response (periods with no changes are omitted). Without `since`,
responses are delayed up to 1 minute by Pinnacle to encourage delta
usage.
bindings:
http:
method: GET
messages:
straightOddsDelta:
$ref: '#/components/messages/StraightOddsDelta'
specialOddsDeltaChannel:
address: /v1/odds/special
title: Special Odds Long-Poll
description: >-
Returns odds for specials for all non-settled events. Supports the
`since` cursor for delta retrieval; without `since`, responses are
delayed up to 1 minute.
bindings:
http:
method: GET
messages:
specialOddsDelta:
$ref: '#/components/messages/SpecialOddsDelta'
operations:
receiveFixturesDelta:
action: receive
channel:
$ref: '#/channels/fixturesDeltaChannel'
title: Poll Fixtures Delta
summary: >-
GET /v1/fixtures with sportId (required) and optional since cursor.
Persist the response's `last` field and reuse it as the next `since`.
bindings:
http:
method: GET
messages:
- $ref: '#/channels/fixturesDeltaChannel/messages/fixturesDelta'
receiveSpecialFixturesDelta:
action: receive
channel:
$ref: '#/channels/specialFixturesDeltaChannel'
title: Poll Special Fixtures Delta
bindings:
http:
method: GET
messages:
- $ref: '#/channels/specialFixturesDeltaChannel/messages/specialFixturesDelta'
receiveSettledFixturesDelta:
action: receive
channel:
$ref: '#/channels/settledFixturesDeltaChannel'
title: Poll Settled Fixtures Delta
bindings:
http:
method: GET
messages:
- $ref: '#/channels/settledFixturesDeltaChannel/messages/settledFixturesDelta'
receiveSettledSpecialFixturesDelta:
action: receive
channel:
$ref: '#/channels/settledSpecialFixturesDeltaChannel'
title: Poll Settled Special Fixtures Delta
bindings:
http:
method: GET
messages:
- $ref: '#/channels/settledSpecialFixturesDeltaChannel/messages/settledSpecialFixturesDelta'
receiveStraightOddsDelta:
action: receive
channel:
$ref: '#/channels/straightOddsDeltaChannel'
title: Poll Straight Odds Delta
summary: >-
GET /v2/odds with sportId (required) and optional since cursor. With
since, ONLY changed periods are returned; periods with no changes are
omitted from the response.
bindings:
http:
method: GET
messages:
- $ref: '#/channels/straightOddsDeltaChannel/messages/straightOddsDelta'
receiveSpecialOddsDelta:
action: receive
channel:
$ref: '#/channels/specialOddsDeltaChannel'
title: Poll Special Odds Delta
bindings:
http:
method: GET
messages:
- $ref: '#/channels/specialOddsDeltaChannel/messages/specialOddsDelta'
components:
securitySchemes:
basicAuth:
type: http
scheme: basic
description: >-
Pinnacle uses HTTP Basic authentication. Credentials are issued by
Pinnacle on a case-by-case basis under the Fair Use Policy.
parameters:
sportId:
description: The sport id to retrieve the fixtures or odds for (required).
leagueIds:
description: Comma-separated list of league ids to filter by.
isLive:
description: Set to 1 to retrieve ONLY live events/odds.
since:
description: >-
Long-poll cursor. Use the `last` value from the previous response of
the same endpoint. When omitted, the response is intentionally
delayed by Pinnacle (up to 1 minute) to encourage delta usage.
eventIds:
description: Comma-separated list of event ids to filter by.
oddsFormat:
description: >-
Odds format. One of American, Decimal, HongKong, Indonesian, Malay.
Default is American.
toCurrencyCode:
description: 3-letter currency code for returned limits. Default is USD.
messages:
FixturesDelta:
name: FixturesDelta
title: Fixtures Delta Response
summary: >-
Snapshot or delta of non-settled fixtures for a sport. Includes a
`last` cursor to feed into the next request's `since` parameter.
contentType: application/json
bindings:
http:
headers:
type: object
properties:
Content-Type:
type: string
const: application/json
payload:
$ref: '#/components/schemas/FixturesResponse'
SpecialFixturesDelta:
name: SpecialFixturesDelta
title: Special Fixtures Delta Response
contentType: application/json
payload:
$ref: '#/components/schemas/SpecialsFixturesResponse'
SettledFixturesDelta:
name: SettledFixturesDelta
title: Settled Fixtures Delta Response
contentType: application/json
payload:
$ref: '#/components/schemas/SettledFixturesResponse'
SettledSpecialFixturesDelta:
name: SettledSpecialFixturesDelta
title: Settled Special Fixtures Delta Response
contentType: application/json
payload:
$ref: '#/components/schemas/SettledSpecialFixturesResponse'
StraightOddsDelta:
name: StraightOddsDelta
title: Straight Odds Delta Response
summary: >-
Snapshot or delta of straight odds. When the request used a `since`
cursor, only periods that changed are present; unchanged periods are
omitted.
contentType: application/json
payload:
$ref: '#/components/schemas/OddsResponse'
SpecialOddsDelta:
name: SpecialOddsDelta
title: Special Odds Delta Response
contentType: application/json
payload:
$ref: '#/components/schemas/SpecialOddsResponse'
schemas:
Cursor:
type: integer
format: int64
description: >-
Pinnacle delta cursor. Returned as `last` on each response and
echoed back as the `since` query parameter on the next request to
receive only incremental changes.
FixturesResponse:
type: object
properties:
sportId:
type: integer
format: int32
last:
$ref: '#/components/schemas/Cursor'
league:
type: array
description: List of leagues with their fixtures.
items:
type: object
additionalProperties: true
SpecialsFixturesResponse:
type: object
properties:
sportId:
type: integer
format: int32
last:
$ref: '#/components/schemas/Cursor'
leagues:
type: array
items:
type: object
additionalProperties: true
SettledFixturesResponse:
type: object
properties:
sportId:
type: integer
format: int32
last:
$ref: '#/components/schemas/Cursor'
leagues:
type: array
items:
type: object
additionalProperties: true
SettledSpecialFixturesResponse:
type: object
properties:
sportId:
type: integer
format: int32
last:
$ref: '#/components/schemas/Cursor'
leagues:
type: array
items:
type: object
additionalProperties: true
OddsResponse:
type: object
properties:
sportId:
type: integer
format: int32
last:
$ref: '#/components/schemas/Cursor'
leagues:
type: array
items:
type: object
additionalProperties: true
SpecialOddsResponse:
type: object
properties:
sportId:
type: integer
format: int32
last:
$ref: '#/components/schemas/Cursor'
leagues:
type: array
items:
type: object
additionalProperties: true