# 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 for Locus Pro. Each call burns credits from your workspace balance.

## Access

**Base URL:** `https://api.paywithlocus.com/api/wrapped/credits/pinnacle/`
**Auth:** `Authorization: Bearer <LOCUS_CREDITS_SECRET_KEY>` (an `lcr_` secret key or a scoped `lcac_` agent credential)
**Required header:** `Idempotency-Key: <fresh UUID per call>`. A retry with the same key replays the stored result without a new charge.
**Response:** the provider response after any endpoint-specific normalization. `X-Locus-Credits-Charged` carries the charge and `X-Locus-Credits-Balance` the remaining balance. Insufficient credits return `402` before the provider is called.
**Pricing:** estimated costs below are USD. Locus debits the credit equivalent at your workspace rate.

Full call contract: https://docs.paywithlocus.com/api-reference/introduction

> Using a Pay With Locus wallet key (`claw_` prefix)? Wallet routes are documented separately: https://docs.paywithlocus.com/wrapped-apis/for-agents

## 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/credits/pinnacle/get-event-details \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -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/credits/pinnacle/get-leagues \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -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/credits/pinnacle/get-live-matchups \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -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/credits/pinnacle/get-live-odds \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -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/credits/pinnacle/get-matchups \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -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/credits/pinnacle/get-odds \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -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/credits/pinnacle/get-political-betting \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -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/credits/pinnacle/get-sports \
  -H "Authorization: Bearer $LOCUS_CREDITS_SECRET_KEY" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{}'
```

## Next steps

- [All wrapped API providers](https://paywithlocus.com/wapi/index.md): pick another provider.
- [Find and call tools](https://paywithlocus.com/agent/tools.md): price ceilings, async results, and errors.
- [Credits and billing](https://paywithlocus.com/agent/billing.md): what a call costs and how to add credits.
- [Agent docs index](https://paywithlocus.com/agent/index.md): every Locus agent page.