API Football · Authentication Profile

Api Football Authentication

Authentication

API-Football authenticates with a single static API key sent in a request header. There is no OAuth, no OIDC, no bearer/JWT flow and no mTLS. The key is issued from the API-Sports dashboard and the SAME key works across every API-Sports sport surface. Two header names are accepted, and which one you use depends on which of the two distribution channels you bought through.

API Football declares 2 security scheme(s) across its OpenAPI definitions.

SportsFootballSoccerLive ScoresStatistics
Methods: Schemes: 2 OAuth flows: API key in:

Security Schemes

API-Sports direct key apiKey
· in: header ()
RapidAPI marketplace key apiKey
· in: header ()

Source

Authentication Profile

api-football-authentication.yml Raw ↑
specification: API Commons Authentication
specificationVersion: '0.1'
provider: API Football
providerId: api-football
generated: '2026-09-02'
modified: '2026-09-02'
method: probed
source: >-
  Live unauthenticated + bogus-key probes of https://v3.football.api-sports.io/status
  run 2026-09-02, cross-read against the provider's own widget library at
  https://widgets.api-sports.io/football/2.0.3/library/standings.js and the
  documented auth section at
  https://www.api-football.com/documentation-v3#section/Authentication
description: >-
  API-Football authenticates with a single static API key sent in a request
  header. There is no OAuth, no OIDC, no bearer/JWT flow and no mTLS. The key is
  issued from the API-Sports dashboard and the SAME key works across every
  API-Sports sport surface. Two header names are accepted, and which one you use
  depends on which of the two distribution channels you bought through.
schemes:
  - id: apisports-key
    name: API-Sports direct key
    type: apiKey
    in: header
    header: x-apisports-key
    host: v3.football.api-sports.io
    channel: direct
    description: >-
      The key issued in the API-Sports dashboard, used when calling the API
      directly at https://v3.football.api-sports.io. Sent on every request.
    obtained_at: https://dashboard.api-football.com/register
    rotatable: unknown
    scopes: []
  - id: rapidapi-key
    name: RapidAPI marketplace key
    type: apiKey
    in: header
    header: x-rapidapi-key
    companion_header: x-rapidapi-host
    host: api-football-v1.p.rapidapi.com
    channel: marketplace
    description: >-
      The RapidAPI-issued key, used when the subscription was bought through the
      RapidAPI hub. Requires the companion x-rapidapi-host header naming the
      RapidAPI edge host. The provider's own widget library switches base URL on
      the value of that header: when x-rapidapi-host is not
      "v3.football.api-sports.io" it calls
      https://api-football-v1.p.rapidapi.com/v3/ instead.
    obtained_at: https://rapidapi.com/api-sports/api/api-football
    scopes: []
evidence:
  - what: The API host advertises exactly which key headers it accepts.
    url: https://v3.football.api-sports.io/status
    http_status: 200
    header_observed: 'access-control-allow-headers: x-rapidapi-key, x-apisports-key, x-rapidapi-host'
    fetched: '2026-09-02'
  - what: >-
      With NO key header the API returns HTTP 403 and an envelope whose "get"
      field is empty.
    url: https://v3.football.api-sports.io/status
    http_status: 403
    body: >-
      {"get": "","parameters": [],"errors": {"token": "Missing application key,
      Check our documentation on how to add your API key in headers.","error":
      "4xHe"},"results": 0,"paging": {"current": 1,"total": 1},"response": []}
    fetched: '2026-09-02'
  - what: >-
      With an INVALID key header present the API switches to HTTP 200 and a
      different message. The status code therefore distinguishes "no credential
      supplied" (403) from "credential supplied but rejected" (200 + errors.token).
    url: https://v3.football.api-sports.io/status
    request_header: 'x-apisports-key: <32-char placeholder>'
    http_status: 200
    body: >-
      {"get":"status","parameters":[],"errors":{"token":"Error/Missing application
      key. Go to https://www.api-football.com/documentation-v3 to learn how to get
      your API application
      key."},"results":0,"paging":{"current":1,"total":1},"response":[]}
    fetched: '2026-09-02'
  - what: >-
      The RapidAPI edge host is a genuinely separate, gated surface (401, not the
      API-Sports envelope).
    url: https://api-football-v1.p.rapidapi.com/v3/status
    http_status: 401
    fetched: '2026-09-02'
  - what: The provider's own widget library sets both headers and switches host on them.
    url: https://widgets.api-sports.io/football/2.0.3/library/standings.js
    http_status: 200
    fetched: '2026-09-02'
notes:
  - >-
      AUTH FAILURE IS NOT SIGNALLED BY STATUS CODE ALONE. Once any key header is
      present, a rejected key still returns HTTP 200 with the failure carried in
      the body's `errors` object. An agent that branches only on response.ok will
      read a rejected key as a successful empty result. Always test
      `errors` and `results` before trusting a 200.
  - >-
      No OAuth 2.0 or OpenID Connect surface exists: /.well-known/openid-configuration
      and /.well-known/oauth-authorization-server return 404 on every host
      (see well-known/api-football-well-known.yml). There are consequently no
      scopes to document, and no scopes/ artifact is written.
  - >-
      One key spans the whole API-Sports family (football, basketball, baseball,
      hockey, rugby, volleyball, handball, Formula 1, NFL/AFL). The key is
      account-scoped, not product-scoped.
maintainers:
  - FN: Kin Lane
    email: info@apievangelist.com

Work with this as data

Every security artifact here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for security posture

4 MCP tools reach this
  • find_securityBrowse and filter every security artifact in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This security artifact
curl "https://apis.io/api/v1/security/api-football-authentication"
All security posture
curl "https://apis.io/api/v1/security?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.