REST · JSON

Football API

Fixtures, live scores, competitions, standings, teams, players and transfers. One key, one envelope, 25 endpoints.

Base URL

base url
https://devapi.admin.iotait.tech/api/v1

Authentication

Send your key in the X-API-Key header. It is issued the moment you sign up and is visible in your dashboard.

curl
curl --location --request GET 'https://devapi.admin.iotait.tech/api/v1/football/fixtures?competition=39&season=2026' \
--header 'Accept: application/json' \
--header 'X-API-Key: api_mart_your_key_here'

A key may also be passed as ?api_key= for a quick browser test, but query strings land in access logs, browser history and Referer headers — use the header everywhere else.

The response envelope

Every endpoint answers in the same shape, so a client only ever unwraps it once.

json
{
  "success": true,
  "data": [ ... ],
  "meta": {
    "results": 10,
    "page": 1,
    "total_pages": 1
  }
}

Response headers

X-RateLimit-Remaining
Calls left in your daily allowance. X-RateLimit-Limit and X-RateLimit-Reset travel with it.
Age
Seconds since this data was fetched from source. 0 means it was fetched for this request.
Retry-After
On a 429 or 503, the seconds to wait before trying again.

Errors

Failures carry a stable error code. Branch on that, never on the wording — messages are written for people and will be reworded.

StatusCodeWhat to do
401api_key_missingSend the X-API-Key header.
401api_key_invalidThe key is unknown or revoked. Rotate it in your dashboard.
403api_key_inactiveThe key is paused. Reactivate it in your dashboard.
403endpoint_not_on_planYour plan does not include this endpoint. Upgrade to enable it.
403endpoint_not_on_keyThis key was restricted to a narrower set. Edit the key.
422A parameter was rejected. errors names the offending fields.
429rate_limitedToo many requests this minute. Retry-After says when.
429quota_exceededThe daily allowance is spent. It resets at midnight UTC.
503upstream_unavailableBriefly unavailable. Retry with a short backoff.

Endpoints