A clearer view of the league
DEVELOPERS · PRO API

Hockey research, in your workflow.

Read published forecasts, explore historical FSPI and bring saved model context into your own tools. API reads use existing results.

QUICKSTART

One key. Only the scopes you need.

Create a key from your account, copy it once and store it outside your source code. Send it as a Bearer credential on each request.

# Set NHLFUTURES_API_KEY through your secret manager or shell environment.
export NHLFUTURES_API_BASE='https://leaguefutures.com/api/pro/v1'

curl --fail-with-body -i \
  -H "Authorization: Bearer $NHLFUTURES_API_KEY" \
  "$NHLFUTURES_API_BASE/models"

Keys belong in a server, script or private notebook environment. Do not place them in browser JavaScript, query strings or public repositories. Revocation is immediate; expired keys and accounts that lose Pro or verified access cannot authenticate.

Read endpoints

All endpoints below use GET /api/pro/v1/… with Bearer authentication. No API request collects data, fits a model or starts a simulation.

Version pro.v1
Pro API resources and supported query parameters
ResourceReturnsQuery and availability
/statusAPI availability and current capabilities.No query parameters.
/modelsPublished model catalog and research status.No query parameters.
/forecastsSaved forecast results for a model or selected team.modelId (default champion), teamCode; optionally publicationId or asOfUtc.
/publicationsAvailable saved publications for a model.modelId, fromUtc, toUtc, limit (1–100), cursor. Filters use forecast origin time.
/changesDifferences between two retained forecast publications.modelId, teamCode, fromPublicationId; optionally toPublicationId (latest by default).
/historySaved forecasts or historical team index values.dataset=forecasts: modelId and date, or from/to/limit/cursor. dataset=index: teamCode/from/to, up to 366 days.
/injuriesSaved injury assumptions, attribution and roster context.teamCode and modelId. This is model context, not a live injury wire.
/oddsModel-implied odds, where saved probabilities support them.modelId (for example next-game-independent), teamCode. source=market is not enabled.
/cmeReserved for a future licensed CME / ETF integration.Currently returns rights_not_enabled. No market feed is activated.

The OpenAPI specification defines each schema, scope and query constraint. Missing data stays explicitly unavailable. Injury data reflects retained model information; model-implied odds are not bookmaker or exchange quotes. CME and licensed market requests return 403 rights_not_enabled.

Read a forecast. Keep its identity.

Select a saved model and, optionally, a team. Probabilities are fractions from 0 to 1. FSPI values use the native 7,500-base index.

curl --fail-with-body --get \
  -H "Authorization: Bearer $NHLFUTURES_API_KEY" \
  --data-urlencode 'modelId=champion' \
  --data-urlencode 'teamCode=CAR' \
  "$NHLFUTURES_API_BASE/forecasts"

Use /publications to discover retained publication IDs, then request that exact ID for a reproducible result. You can instead specify an ISO timestamp with a timezone using asOfUtc; do not combine it with publicationId.

# Use a publication ID returned by /publications.
curl --fail-with-body --get \
  -H "Authorization: Bearer $NHLFUTURES_API_KEY" \
  --data-urlencode 'modelId=champion' \
  --data-urlencode "publicationId=$PUBLICATION_ID" \
  "$NHLFUTURES_API_BASE/forecasts"

Publication-feed time filters refer to forecast origins. An origin date does not establish when a result was first published or publicly available. If publishedAtUtc is unknown, it remains unknown.

Use /changes to compare two saved publication IDs. Preserve its window-shift flag: a changed forecast horizon is not a like-for-like revision. Differences describe the saved results; they do not attribute a change to an injury, trade or other cause.

Read freshness and status with the values

Response envelope
apiVersion, resource, data and meta identify the response. Errors replace data with error.code and error.message.
Served time
meta.servedAtUtc is the response time. It is not the forecast origin, source observation time or publication timestamp.
Execution and lineage
meta.executionMode is published_read_only. Preserve the model, publication, origin and source identifiers returned with the data when comparing or archiving results.
Research status
Keep canonical, experimental and calibration labels attached to each model and component. An available preset is not automatically validated. Unavailable fields must not be treated as zero.
Cache validation
Use the returned ETag with If-None-Match. Authentication happens before a possible 304; those requests still count toward usage. Responses vary by Authorization.
Request support
X-Request-Id and meta.requestId identify a request. Retain that ID when reporting an issue; never include your API key.

Usage, limits and errors

The account API page shows your current shared allowance and per-key limits. Read the response headers instead of assuming a fixed quota.

Account minute limit
X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset.
Account daily limit
X-RateLimit-Day-Limit, X-RateLimit-Day-Remaining, X-RateLimit-Day-Reset.
Individual key limit
X-RateLimit-Key-Limit, X-RateLimit-Key-Remaining, X-RateLimit-Key-Reset. Reset headers use Unix seconds.
429 · Rate limited
Wait for Retry-After before retrying. Limits are shared across concurrent clients using the same account or key.
401 / 403 · Access
Check expiry, revocation, verification, Pro access and the required scope. rights_not_enabled means the requested licensed feed is unavailable; creating another key will not enable it.
503 · Unavailable
pro_api_disabled means requests are not enabled. A source or service failure can also make saved data temporarily unavailable. Do not replace a failed response with assumed data.
PLANNED · NOT A SERVICE COMMITMENT

What comes next

More frequent access is useful only when a new publication is available. Refresh schedules, delivery guarantees and licensed feeds are not activated by creating a key.

Publication changes

Richer forecast-revision and delta views, with retained identities and reproducible as-of comparisons.

More forecast windows

Calendar and matchup horizons, plus intraday refresh frequencies after the publication workflow and costs are qualified.

CME / ETF context

Pricing integration depends on data rights and a licensed source. It is currently unavailable; no live or delayed feed is promised.