# Pinnacle — Wrapped API

> **You are on:** `https://api.paywithlocus.com/api` | [llms.txt](https://paywithlocus.com/llms.txt) | [docs](https://docs.paywithlocus.com)
>
> Locus runs on multiple environments -- make sure every URL you call matches your expected environment.
> | Environment | Landing | API | Docs |
> |---|---|---|---|
> | Production | paywithlocus.com | api.paywithlocus.com | docs.paywithlocus.com |
> | Beta | beta.paywithlocus.com | api.beta.paywithlocus.com | docs.paywithlocus.com |
> | Stage | stage.paywithlocus.com | api.stage.paywithlocus.com | docs.paywithlocus.com |
>
> If the API URL above doesn't match your expected environment, re-fetch this file from the correct domain.

> Access real-time and pre-event sports betting odds, matchups, and markets from Pinnacle. Retrieve data across all available sports and leagues, monitor live events with scores and live odds, and explore political and entertainment betting markets. Covers full market depth including spreads, totals, moneylines, props, and alternate lines.

**Category:** Sports | **Website:** [pinnacle.com/](https://pinnacle.com/) | **Docs:** [parse.bot/marketplace/13189fe5-b673-48f0-9e4b-2febaec2aed8/pinnacle-com-api](https://parse.bot/marketplace/13189fe5-b673-48f0-9e4b-2febaec2aed8/pinnacle-com-api)

Pay-per-use API proxy. Each call is automatically billed to your wallet in USDC.

## Access

**Base URL:** `https://api.paywithlocus.com/api/wrapped/parse-pinnacle-com-api-13189fe5/`
**Auth:** `Authorization: Bearer <LOCUS_API_KEY>`

## Endpoints

### get_event_details

Get comprehensive info and deep markets (props, alternative lines, specials) for a specific event. Returns the matchup tree (parent + related child matchups) and all associated market lines. Each child matchup represents a prop or special bet type.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `matchup_id` | integer | Yes | The ID of the matchup/event (from get_matchups or get_live_matchups endpoints) |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-pinnacle-com-api-13189fe5/get_event_details \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"matchup_id":"<integer>"}'
```

### get_leagues

List leagues for a specific sport. Returns all active leagues with matchup counts, grouped by region. Each league includes its parent sport reference.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `sport_id` | integer | Yes | The ID of the sport (from get_sports endpoint, e.g. 29 for Soccer, 4 for Basketball, 3 for Baseball, 12 for E Sports) |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-pinnacle-com-api-13189fe5/get_leagues \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"sport_id":"<integer>"}'
```

### get_live_matchups

List live matchups for a sport including real-time scores and stats. Returns an empty items array when no events are currently live for the given sport.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `sport_id` | integer | Yes | The ID of the sport (from get_sports endpoint) |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-pinnacle-com-api-13189fe5/get_live_matchups \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"sport_id":"<integer>"}'
```

### get_live_odds

Get live odds/markets for a sport. Returns an empty items array when no events are currently live for the given sport.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `sport_id` | integer | Yes | The ID of the sport (from get_sports endpoint) |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-pinnacle-com-api-13189fe5/get_live_odds \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"sport_id":"<integer>"}'
```

### get_matchups

List pre-event matchups for a league or sport. Provide either league_id or sport_id (league_id takes precedence). Returns matchups including participants, start times, periods, and available market types. Sport-level queries return all matchups across all leagues for that sport.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `league_id` | integer | No | Filter by league ID (from get_leagues). Takes precedence over sport_id if both provided. |
| `sport_id` | integer | No | Filter by sport ID (from get_sports). Used when league_id is not provided. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-pinnacle-com-api-13189fe5/get_matchups \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"league_id":"<integer>","sport_id":"<integer>"}'
```

### get_odds

Get pre-event odds/markets for a league or sport. Provide either league_id or sport_id (league_id takes precedence). When using sport_id, returns primary markets only to manage response size. When using league_id, returns all markets including alternates. Returns empty items array if no odds are available.

**Estimated cost:** Metered

| Field | Type | Required | Description |
|-------|------|----------|-------------|
| `league_id` | integer | No | Filter by league ID (from get_leagues). Returns all markets including alternates. Takes precedence over sport_id. |
| `sport_id` | integer | No | Filter by sport ID (from get_sports). Returns primary markets only. |

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-pinnacle-com-api-13189fe5/get_odds \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"league_id":"<integer>","sport_id":"<integer>"}'
```

### get_political_betting

Get all political and entertainment betting data from Pinnacle. Returns matchups and odds for both politics (sport ID 24) and entertainment (sport ID 58) categories. Either category may have empty data if no markets are currently available.

**Estimated cost:** Metered

_No parameters required._

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-pinnacle-com-api-13189fe5/get_political_betting \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
```

### get_sports

List all available sports and their IDs from Pinnacle. Returns a flat array of sport objects including matchup counts and feature ordering. Sports with matchupCount=0 have no active events.

**Estimated cost:** Metered

_No parameters required._

```bash
curl -X POST https://api.paywithlocus.com/api/wrapped/parse-pinnacle-com-api-13189fe5/get_sports \
  -H "Authorization: Bearer YOUR_LOCUS_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
```
