# Flash Props API — Agent Guide

Sports betting **player-prop lines** (over/under) unified across free books
(Underdog, Bovada) into one clean feed. NBA, MLB, NFL, NHL, NCAA, soccer.
Pre-game and live in-game. American odds. Built by Flash AI Solutions.

- **Base URL:** https://api.flashodds.live
- **Auth:** `Authorization: Bearer <key>` (also accepts `X-API-Key:` or `?api_key=`)
- **Spec:** https://api.flashodds.live/openapi.json (OpenAPI 3.1)
- **MCP server:** https://api.flashodds.live/mcp (streamable HTTP; send your key as `Authorization: Bearer`). Tools: `list_sports`, `list_games`, `get_game_props`, `scan_props`, `find_game`.
- **Get a key:** https://api.flashodds.live/ (free tier self-serve; paid via Stripe card or discounted USDC/crypto)

## Endpoints

| Method | Path | Purpose |
|--------|------|---------|
| GET | `/api/v1/sports` | Supported sports + which your tier can access |
| GET | `/api/v1/games?sport=mlb` | Today's games with props (live first) |
| GET | `/api/v1/games/{eventId}/props?stats=points,rebounds` | Props for one game |
| GET | `/api/v1/props?sport=mlb&limit=50` | Market-wide scan ("flow" feed) |
| GET | `/api/v1/me` | Your tier, limits, and usage |

## Quickstart

```bash
curl -H "Authorization: Bearer $FLASH_PROPS_KEY" \
  "https://api.flashodds.live/api/v1/props?sport=mlb&limit=10"
```

## Notes for agents

- Event ids are prefixed `ud-` (Underdog) or `bv-` (Bovada). Get them from `/games`.
- **Stat keys** — NBA: `points, rebounds, assists, threes, pra`. MLB: `strikeouts, hits, total_bases, home_runs, rbis`. NFL: `passing_yards, rushing_yards, receiving_yards, receptions, touchdowns`. NHL: `goals, shots, saves`.
- **Odds** are American (e.g. `-115`, `+130`). `overOdds` = higher/over, `underOdds` = lower/under.
- **Free tier**: the in-season sport only (currently `mlb`), delayed ~5 min, no live in-game props. Paid tiers unlock realtime, live lines, and all sports.
- **Rate limits**: read `X-RateLimit-Remaining` (per minute) and `X-RateLimit-Daily-Remaining`. On HTTP 429, honor `Retry-After`.
- Responses carry `delayed: true` when served on the free-tier delay.
