---
updatedAt: 2026-08-20T12:52:15.000Z
agentTools:
  siteIndex: https://developer.sportradar.com/llms.txt
  projectIndex: https://developer.sportradar.com/basketball/llms.txt
---

# G League API Basics

This page covers the practical basics of the NBA G League API: authentication, URL structure, formats and languages, errors, and cache behavior. The concepts behind the feeds (the season model, league structure, game feeds, and coverage) are on [G League Fundamentals](https://developer.sportradar.com/basketball/docs/g-league-ig-fundamentals); the payloads themselves are covered in the scenario pages.

<br />

***

## Authentication

Every request is authenticated with your API key in the **`x-api-key` header**:

```http
GET https://api.sportradar.com/nbdl/trial/v8/en/league/hierarchy.json
x-api-key: YOUR_API_KEY
```

Keep the key server-side; do not embed it in client applications.

<br />

***

## Base URL and URL Structure

All requests follow one URL shape:

```http
GET https://api.sportradar.com/nbdl/{access_level}/v8/{language_code}/{feed}.{format}
```

* `access_level`: `trial` or `production`, matching your key.
* `language_code`: `en`. English is the supported language for the NBA G League API.
* `format`: `json` or `xml`. Both carry the same data on every feed.

Feeds are scoped three ways:

* **League-wide feeds** live under `/league/` (Seasons, Hierarchy, Teams, Injuries, Free Agents, and the date-scoped Transfers and Change Log)
* **Season-scoped feeds** take a `{season_year}/{season_type}` pair (Schedule, Standings, Rankings, Leaders, Seasonal Statistics, Series Schedule); the season model and full type list are on [G League Fundamentals](https://developer.sportradar.com/basketball/docs/g-league-ig-fundamentals)
* **Entity-scoped feeds** take a GUID (Game Summary, Boxscore, and Play-by-Play by game ID; Team and Player Profiles; Series Statistics)

<br />

***

## Complete Responses

Feeds return the complete data set for their scope in a single response; there is no pagination. A full-season Schedule returns every game (561 for the 2025-26 regular season), and Free Agents returns the entire league-wide list in one payload.

<br />

***

## Errors

* **Authentication failures** return **`403`** with an HTML page, not a JSON or XML error object; branch on the status code:

```html 403 (invalid key)
<!DOCTYPE html>
      <html lang="en">
        <head>
          <meta charset="utf-8">
          <title>Authentication Error</title>
        </head>
        <body>
          <p>Authentication Error</p>
        </body>
      </html>
```

* **Rate-limit errors** return **`429 Too Many Requests`**; slow your request rate and retry, increasing the wait between attempts
* **`404`** indicates an unknown ID or path
* Other statuses follow the [Response Codes](https://developer.sportradar.com/getting-started/docs/response-codes) page

<br />

***

## Cache Behavior

Each response carries a `cache-control` header stating how long the payload may be served from cache. TTLs are tiered by feed family: roughly 10 minutes on schedules and standings, 15 minutes on rankings, leaders, and statistics, and several hours on the league catalog and completed-game feeds. The per-feed chart is on the [Update Frequencies](https://developer.sportradar.com/basketball/docs/g-league-ig-update-frequencies) page.

<Callout icon="⚠️" theme="warning">
  ### A TTL Is Not a Polling Recommendation

  A short TTL means the payload can change that often, not that you should request it that often. Check the header on each response you receive, and match your polling cadence to the freshness your product actually needs. Recommended cadences are on the [Update Frequencies](https://developer.sportradar.com/basketball/docs/g-league-ig-update-frequencies) page and in each scenario's Best Practices.
</Callout>

<br />

***

## Time Values

Timestamps are **UTC** ISO 8601 (`scheduled` values carry an explicit offset). Date-scoped feeds (Daily Schedule, Daily Transfers, Daily Change Log) use the **US Eastern date**, matching the league's calendar: a change-log day runs from midnight to midnight Eastern, which is `05:00Z` to `05:00Z` in winter and `04:00Z` to `04:00Z` during daylight saving time, and an evening game whose `scheduled` timestamp is `2026-01-16T00:00:00+00:00` belongs to the January 15 Daily Schedule. Plan date math accordingly.