Skip to content

Public API reference

WovenThreads API

Read archived NBA game flow, player stints, lineup windows, totals, and normalized play-by-play from the same data used by the public site.

Access

No authentication is required. The API is public, read-only, and intended for respectful server-side use. Browser JavaScript from arbitrary third-party origins is not supported by the current CORS policy.

Use https://www.woventhreads.online as the base URL. All operations are GET requests and return JSON unless noted otherwise.

Start with the smallest response

  1. Fetch /api/dates to find a stored date.
  2. Fetch /api/games/{date} to identify the game and its ID.
  3. Fetch /api/game/{gameId} for metadata.
  4. Request only the stints, totals, or plays needed for the analysis.

The unfiltered /api/games endpoint returns the full archive. Cache it if you need it, and do not poll it repeatedly.

Endpoints

Public WovenThreads API endpoints
MethodPathReturns
GET/apiDiscovery index for this API.
GET/api/datesArchived game dates, newest first.
GET/api/gamesComplete game archive. Avoid polling this large response.
GET/api/games/{date}Games on one YYYY-MM-DD date.
GET/api/game/by-slug/{slug}Game metadata from its canonical slug.
GET/api/game/{gameId}Teams, score, status, date, and slug.
GET/api/game/{gameId}/stintsPlayer intervals, statistics, and plus-minus.
GET/api/game/{gameId}/totalsPer-player game totals across all stints.
GET/api/game/{gameId}/playsNormalized chronological play-by-play.
GET/api/lineup-datesDates with stored lineup stint data.
GET/api/lineups/night/{date}Top five positive lineup stints for a date.
GET/api/lineups/season/top?season=YYYY-YYTop ten positive lineup stints for a season.
GET/api/healthPublication timestamp and latest archived game date.

Limits and reliability

Responses are static snapshots published after the daily game import. Cache responses and avoid frequent polling. Cloudflare platform limits apply; there is no separate application-level request quota.

WovenThreads is a hobby project and provides no SLA or backward-compatibility guarantee. Cache responses, pace requests conservatively, and back off after an HTTP 429 response. A failed import leaves the previous complete publication available; check the health endpoint for the publication timestamp and latest game date.

Data and interpretation

Game data comes from official NBA sources and is processed into player stints and lineup windows. player_plus_minus and total_plus_minusare from the listed player's team perspective.

lineup_plus_minus and raw_lineup_plus_minusare stored from the home team's perspective. Use the team-perspective plus_minus field on lineup ranking endpoints when comparing teams. Zero-duration stints are processing artifacts and should not be treated as substantive game intervals.

Citations

When presenting analysis, cite the canonical WovenThreads game-flow or box-score page instead of a raw API URL. Build those URLs from the game's slug: /game/{slug} and /game/{slug}/boxscore. Identify WovenThreads as the processed presentation layer and the NBA as the underlying source.

Discovery resources