IGDB · API Governance Rules

IGDB API Rules

Spectral linting rules defining API design standards and conventions for IGDB.

0 Rules
View Rules File View on GitHub

Spectral Ruleset

Raw ↑
aid: igdb
name: IGDB API Rules
description: >-
  Operational, security, and usage rules for working with the IGDB API. These
  rules summarize authentication, request shape, rate limits, and content
  conventions documented at https://api-docs.igdb.com/.
modified: '2026-04-28'
rules:
  - id: auth-twitch-client-credentials
    name: Authenticate via Twitch OAuth Client Credentials
    severity: required
    description: >-
      Obtain an access token from Twitch using the Client Credentials grant.
      Send the resulting token as `Authorization: Bearer <token>` and the
      Twitch developer Client-ID as the `Client-ID` header on every IGDB
      request.
  - id: token-rotation
    name: Rotate and refresh tokens before expiry
    severity: required
    description: >-
      Twitch access tokens are valid for ~60 days. Cache the token, monitor
      expiry, and request a new one before expiration. Never embed tokens in
      client-side code.
  - id: secrets-management
    name: Store credentials securely
    severity: required
    description: >-
      Keep Client-ID and Client-Secret in environment variables or a secret
      manager. Do not commit credentials to source control or expose them in
      browser-facing code.
  - id: request-method-post
    name: Use POST for queries
    severity: required
    description: >-
      All IGDB query endpoints (e.g. /games, /platforms) accept POST requests
      with an Apicalypse query body. Do not use GET for data queries.
  - id: apicalypse-fields
    name: Always declare fields
    severity: recommended
    description: >-
      Apicalypse queries should explicitly request `fields name,...;` rather
      than rely on `fields *;`, except during exploration. Selecting only
      needed fields reduces payload size and load on the API.
  - id: pagination-limit
    name: Honor pagination limits
    severity: required
    description: >-
      The maximum `limit` per request is 500. Use `offset` to paginate larger
      result sets and avoid exceeding the per-request cap.
  - id: rate-limit-4rps
    name: Respect 4 requests-per-second cap
    severity: required
    description: >-
      IGDB enforces a 4 requests-per-second rate limit per Client-ID. Implement
      client-side throttling and back off when receiving 429 responses.
  - id: error-handling
    name: Handle 401, 429, and 5xx responses
    severity: required
    description: >-
      Handle 401 (auth) by refreshing the token, 429 (rate limit) with backoff,
      and 5xx with retry-with-jitter. Surface IGDB error `cause` to logs for
      diagnosis.
  - id: image-url-resolution
    name: Resolve image URLs through IGDB image CDN
    severity: recommended
    description: >-
      Cover, screenshot, and artwork records expose `image_id`. Construct image
      URLs using `https://images.igdb.com/igdb/image/upload/t_{size}/{image_id}.jpg`
      where `{size}` is one of the documented size tokens (e.g. cover_big,
      screenshot_huge).
  - id: terms-of-service
    name: Comply with IGDB / Twitch Terms of Service
    severity: required
    description: >-
      Usage must comply with the IGDB API Terms of Service and Twitch
      Developer Services Agreement. Attribute IGDB where required and avoid
      bulk re-publishing the dataset.
  - id: cache-responses
    name: Cache stable resources
    severity: recommended
    description: >-
      Reference data (genres, platforms, themes, game modes) changes
      infrequently. Cache locally with periodic refresh to reduce API load and
      stay within rate limits.