FORGE Professional API v1

API Reference

The FORGE Professional API is the only programmatic entry point to FORGE. Requests are authenticated with an organization API key, checked against your entitlement and scopes, metered, and then served either from stored published FORGE data or by queueing a computation. The FORGE model itself is never exposed and is never reachable directly.

Compare plans on the API pricing page or manage your organization and keys in the developer console.

Base path and authentication

/api/public/v1/forge-api/<endpoint>

curl "https://<your-forge-host>/api/public/v1/forge-api/rankings?season=2026&week=1" \
  -H "Authorization: Bearer forge_live_EXAMPLEKEY0000000000000000000000"

# equivalent header form
  -H "x-forge-api-key: forge_live_EXAMPLEKEY0000000000000000000000"

Replace <your-forge-host> with the host where your FORGE API route is deployed. The example host is a template, not a verified production API hostname. The path shown above is copy-ready once it is joined to that host. No secret is embedded in these examples.

Keys are shown once at creation and stored only as a hash. Example keys on this page are placeholders and are not valid. Browser sign-in sessions cannot authenticate API requests, and API keys cannot be used to sign in.

Stored data vs metered compute

Reads of published FORGE output are cheap request units. Fresh projections and full-season simulations run the FORGE engine, are queued through the platform compute controls, and consume compute units. Compute output is your organization's development output: it is never Official FORGE output and never changes anything shown on public pages.

  • data_request — Stored data request
  • projection_compute — Season projection computation
  • season_simulation_compute — Full-season simulation computation

Scopes

  • data:read — Published rankings, teams, games and projections
  • analytics:read — Stored team, position-group and player analytics
  • archive:read — Stored historical archive reads
  • compute:submit — Queue a projection or simulation computation
  • compute:read — Read your organization's computation status and results
  • usage:read — Read your organization's API usage and allowances

Endpoints

MethodPathScopeMeterStatus
GET
/health
Gateway health and API version.
——Available
GET
/docs
Machine-readable endpoint catalogue and scopes.
——Available
GET
/usage
Your organization's current allowances and usage.
usage:read—Available
GET
/rankings
Published FORGE rankings. Optional season, week.
data:readdata_requestAvailable
GET
/teams
Published team directory with current rank and record.
data:readdata_requestAvailable
GET
/games
Published games with FORGE projections. Optional season, week.
data:readdata_requestAvailable
GET
/analytics/teams/{abbreviation}
Stored team analytics for a published run.
analytics:readdata_requestAvailable
GET
/analytics/teams/{abbreviation}/position-groups
Stored position-group analytics.
analytics:readdata_requestAvailable
GET
/analytics/players/{playerId}
Stored player analytics by canonical player id.
analytics:readdata_requestAvailable
GET
/news
Latest NFL news metadata. Optional limit, cursor, published_after, source, category.
Headline, publisher link, publish time, FORGE category and FORGE associations only. Article text is never returned and is not licensed for republication.
data:readdata_requestAvailable
GET
/teams/{abbreviation}/news
News associated with one team under FORGE canonical mappings.
Same fields, filters and pagination as /news.
data:readdata_requestAvailable
GET
/players/{playerId}/news
News confidently associated with one canonical player.
Conservative association only; headline text is never matched at request time.
data:readdata_requestAvailable
GET
/archive/games
Stored historical projections. Filter by season, week.
archive:readdata_requestAvailable
POST
/compute/jobs
Queue a season projection or full-season simulation from stored FORGE state.
Metered as projection_compute or season_simulation_compute depending on action. Development output only — never Official.
compute:submitprojection_computeAvailable
GET
/compute/jobs/{jobId}
Status of one of your organization's computations.
compute:read—Available
GET
/compute/jobs/{jobId}/result
Rendered result of a completed computation.
compute:read—Available
GET
/compute/capabilities
Which scenario override kinds the FORGE engine currently advertises (scenario_overrides.v1).
Read from the stored engine handshake; never contacts the engine. Override kinds not listed here are refused.
compute:read—Available
GET
/compute/eligible-games
Future, unplayed games that may carry a forced_game_outcome override. Optional projection_week.
compute:readdata_requestAvailable
GET
/compute/rosters/{teamId}
Roster (canonical player ids) for one team at the current FORGE state, for player_availability overrides.
compute:readdata_requestAvailable
POST
/compute/what-if
Queue a scenario with typed scenario_overrides.v1 overrides (forced_game_outcome, player_availability).
Capability-gated: each override kind must be advertised by the engine handshake or the request is refused before any allowance is used. Scenario output only — never Official.
compute:submitprojection_computeAvailable

Example responses

{
  "api_version": "v1",
  "data": [ { "team": "KC", "forge_rank": 1, "forge_rating": 0.0 } ],
  "meta": { "meter": "data_request", "units": 1 }
}

{
  "api_version": "v1",
  "error": { "code": "quota_exceeded", "message": "Monthly allowance exhausted." }
}

Successful responses carry x-forge-quota-limit, x-forge-quota-remaining and x-forge-meter headers.

News

News reads use the same data:read scope and data_request meter as other stored reads, so existing Professional keys work without change. Results are ordered newest first and paginated with an opaque cursor.

GET /api/public/v1/forge-api/news?limit=25&category=injury
GET /api/public/v1/forge-api/news?published_after=2026-09-01T00:00:00Z&source=espn_nfl
GET /api/public/v1/forge-api/news?cursor=<meta.next_cursor>
GET /api/public/v1/forge-api/teams/KC/news
GET /api/public/v1/forge-api/players/<canonical-player-id>/news

curl "https://<your-forge-host>/api/public/v1/forge-api/teams/KC/news?limit=10" \
  -H "Authorization: Bearer forge_live_EXAMPLEKEY0000000000000000000000"

Query parameters: limit (default 25, maximum 100), cursor, published_after (ISO-8601, since accepted), source and category. Malformed values return 400 invalid_request; an unknown team or player returns 404 not_found.

{
  "api_version": "v1",
  "data": {
    "news": [
      {
        "id": "0f7c…",
        "headline": "Chiefs list starting tackle as limited",
        "source": "espn_nfl",
        "source_name": "ESPN",
        "url": "https://www.espn.com/nfl/story/_/id/…",
        "published_at": "2026-09-08T14:32:00.000Z",
        "category": "injury",
        "teams": ["KC"],
        "players": [{ "player_id": "…", "full_name": "…" }]
      }
    ],
    "meta": { "count": 1, "limit": 25, "next_cursor": null, "attribution": "…" }
  }
}

Attribution and content rights: FORGE returns editorial metadata — headline, source, the publisher's own link, publish time, FORGE category and FORGE team/player associations. Article text is never returned and never republished; third-party article content remains owned by its publisher. Use of this metadata is governed by your FORGE API plan, which does not grant feed redistribution, syndication or publisher content rights.

Errors

  • 401 unauthorized
  • 403 forbidden
  • 403 insufficient_scope
  • 429 rate_limited
  • 429 quota_exceeded
  • 404 not_found
  • 409 conflict
  • 400 invalid_request
  • 501 unsupported
  • 503 unavailable
  • 500 internal_error

Platform safeguards

These are operational defaults, not prices and not contractual allowances. They are configurable per organization.

TierStored data requestSeason projection computationFull-season simulation computation
professional50,000 / month · 120 / minute100 / month · 5 / minute20 / month · 1 / minute
enterprise500,000 / month · 600 / minute1,000 / month · 20 / minute200 / month · 5 / minute

Usage rights

API access defaults to internal use only. Redistribution, resale and derived commercial products are not granted by default and must be agreed separately. Your organization's current permissions are shown in the developer console.

  • internal_use — Internal use
  • commercial_use — Commercial use
  • redistribution — Redistribution of FORGE output
  • derived_products — Derived products built on FORGE output