AlliSports Data Developers

AlliSports Data feed

Live medal table, results and schedule of university games, starting with the West African University Games 2026 (Obafemi Awolowo University, Ile-Ife, 2–12 October 2026).

Getting started

  1. Get a key. Ask AlliSports Data (Alli Media Hub) for a feed key, named after your site. It looks like asd_… and is shown once: keep it secret, on your server.
  2. Send it in the x-api-key header with every request.
  3. Call the feed from your server, never from visitors' browsers (that would expose your key).
curl https://data.allimediahub.com/api/waug/2026/medal-table \
  -H "x-api-key: asd_your_key"
// Node.js 18+ (server side)
const res = await fetch('https://data.allimediahub.com/api/waug/2026/medal-table', {
  headers: { 'x-api-key': process.env.ALLISPORTS_KEY },
})
const { data } = await res.json()
console.log(data.rows[0].university.name, data.rows[0].medals.gold)
<?php // e.g. in a WordPress plugin or theme (server side)
$response = wp_remote_get('https://data.allimediahub.com/api/waug/2026/medal-table', [
  'headers' => ['x-api-key' => ALLISPORTS_KEY],
]);
$table = json_decode(wp_remote_retrieve_body($response), true);
echo $table['data']['rows'][0]['university']['name'];

What the data means

Staying up to date

Results change every few minutes during the games. Poll /results?updatedSince=<generatedAt of your last call> every 15–30 seconds to get only what changed, and refresh the medal table when anything did.

Fair use

Each key may make 60 requests a minute and 10,000 a day. Every response carries the IETF RateLimit-Policy and RateLimit headers (r = requests left, t = seconds until the window resets). Over the limit you get 429 with a Retry-After header. Errors are RFC 9457 problem documents.

Our promise

apiVersion 1 only grows: we may add fields and endpoints, but never rename, remove or change the meaning of one. Please credit "Data: AlliSports Data" where you show it.

Changelog

Endpoints

Base address: https://data.allimediahub.com. Every endpoint needs the x-api-key header.

The medal table

GET /api/{series}/{edition}/medal-table

Calculated from the recorded results on every request: ranked by gold, then silver, then bronze; tied universities share a rank and the next rank is skipped (1, 1, 3). Disputed events are left out until settled.

Parameter In Required Type Description
series path yes string Games series. Example: waug.
edition path yes string Games year. Example: 2026.
status query no all / official official = count confirmed results only.

Example response:

{
  "apiVersion": "1",
  "generatedAt": "2026-10-03T14:05:12.000Z",
  "games": {
    "series": "waug",
    "edition": 2026,
    "name": "West African University Games 2026"
  },
  "includesProvisional": true,
  "data": {
    "status": "all",
    "rows": [
      {
        "rank": 1,
        "university": {
          "code": "OAU",
          "name": "Obafemi Awolowo University",
          "country": "NG"
        },
        "medals": {
          "gold": 1,
          "silver": 1,
          "bronze": 1,
          "total": 1
        },
        "provisionalMedals": 1
      }
    ],
    "totals": {
      "gold": 1,
      "silver": 1,
      "bronze": 1
    },
    "disputedEvents": 1
  }
}

Errors: 401 No key, or the key is unknown or revoked; 429 Over the fair-use limit; wait Retry-After seconds.

Every event and its current result

GET /api/{series}/{edition}/results

During the games, poll with updatedSince (the generatedAt of your last call) to get only what changed.

Parameter In Required Type Description
series path yes string Games series. Example: waug.
edition path yes string Games year. Example: 2026.
sport query no string Sport code, see /sports. Example: ATH.
status query no all / official official = count confirmed results only.
updatedSince query no string (date-time) Only results changed after this time. Example: 2026-10-03T14:00:00.000Z.

Example response:

{
  "apiVersion": "1",
  "generatedAt": "2026-10-03T14:05:12.000Z",
  "games": {
    "series": "waug",
    "edition": 2026,
    "name": "West African University Games 2026"
  },
  "includesProvisional": true,
  "data": [
    {
      "id": "0192f3a0-7c1d-7b2e-9f10-5a3b2c1d4e5f",
      "sport": {
        "code": "JUD",
        "name": "Judo"
      },
      "gender": "men",
      "category": "−73 kg",
      "kind": "individual",
      "medalRule": "standard",
      "startsAt": "2026-10-03T14:00:00.000Z",
      "startsAtLocal": "2026-10-03T15:00:00+01:00",
      "venue": "string",
      "status": "scheduled",
      "result": {
        "version": 1,
        "status": "provisional",
        "entrants": 1,
        "updatedAt": "2026-10-03T14:05:12.000Z",
        "confirmedAt": "string",
        "medals": [
          {
            "slot": "gold",
            "colour": "gold",
            "university": {
              "code": "OAU",
              "name": "Obafemi Awolowo University"
            },
            "athleteName": "Ada Okafor"
          }
        ]
      }
    }
  ]
}

Errors: 401 No key, or the key is unknown or revoked; 429 Over the fair-use limit; wait Retry-After seconds.

The schedule

GET /api/{series}/{edition}/events

Parameter In Required Type Description
series path yes string Games series. Example: waug.
edition path yes string Games year. Example: 2026.
sport query no string Sport code, see /sports. Example: ATH.
date query no string (date) A day in Nigeria time. Example: 2026-10-03.

Example response:

{
  "apiVersion": "1",
  "generatedAt": "2026-10-03T14:05:12.000Z",
  "games": {
    "series": "waug",
    "edition": 2026,
    "name": "West African University Games 2026"
  },
  "includesProvisional": true,
  "data": [
    {
      "id": "0192f3a0-7c1d-7b2e-9f10-5a3b2c1d4e5f",
      "sport": {
        "code": "JUD",
        "name": "Judo"
      },
      "gender": "men",
      "category": "−73 kg",
      "kind": "individual",
      "medalRule": "standard",
      "startsAt": "2026-10-03T14:00:00.000Z",
      "startsAtLocal": "2026-10-03T15:00:00+01:00",
      "venue": "string",
      "status": "scheduled"
    }
  ]
}

Errors: 401 No key, or the key is unknown or revoked; 429 Over the fair-use limit; wait Retry-After seconds.

One event, its result and its history

GET /api/{series}/{edition}/events/{eventId}

The history lists every version of the result, with the reason for each correction.

Parameter In Required Type Description
series path yes string Games series. Example: waug.
edition path yes string Games year. Example: 2026.
eventId path yes string (uuid)

Example response:

{
  "apiVersion": "1",
  "generatedAt": "2026-10-03T14:05:12.000Z",
  "games": {
    "series": "waug",
    "edition": 2026,
    "name": "West African University Games 2026"
  },
  "includesProvisional": true,
  "data": {
    "id": "0192f3a0-7c1d-7b2e-9f10-5a3b2c1d4e5f",
    "sport": {
      "code": "JUD",
      "name": "Judo"
    },
    "gender": "men",
    "category": "−73 kg",
    "kind": "individual",
    "medalRule": "standard",
    "startsAt": "2026-10-03T14:00:00.000Z",
    "startsAtLocal": "2026-10-03T15:00:00+01:00",
    "venue": "string",
    "status": "scheduled",
    "result": {
      "version": 1,
      "status": "provisional",
      "entrants": 1,
      "updatedAt": "2026-10-03T14:05:12.000Z",
      "confirmedAt": "string",
      "medals": [
        {
          "slot": "gold",
          "colour": "gold",
          "university": {
            "code": "OAU",
            "name": "Obafemi Awolowo University"
          },
          "athleteName": "Ada Okafor"
        }
      ]
    },
    "history": [
      {
        "version": 1,
        "status": "provisional",
        "reason": "string",
        "createdAt": "string",
        "confirmedAt": "string"
      }
    ]
  }
}

Errors: 401 No key, or the key is unknown or revoked; 404 No such event; 429 Over the fair-use limit; wait Retry-After seconds.

Sports and their codes

GET /api/{series}/{edition}/sports

Parameter In Required Type Description
series path yes string Games series. Example: waug.
edition path yes string Games year. Example: 2026.

Example response:

{
  "apiVersion": "1",
  "generatedAt": "2026-10-03T14:05:12.000Z",
  "games": {
    "series": "waug",
    "edition": 2026,
    "name": "West African University Games 2026"
  },
  "includesProvisional": true,
  "data": [
    {
      "code": "JUD",
      "name": "Judo",
      "events": 1
    }
  ]
}

Errors: 401 No key, or the key is unknown or revoked; 429 Over the fair-use limit; wait Retry-After seconds.

Universities taking part, with their medal counts

GET /api/{series}/{edition}/universities

Parameter In Required Type Description
series path yes string Games series. Example: waug.
edition path yes string Games year. Example: 2026.

Example response:

{
  "apiVersion": "1",
  "generatedAt": "2026-10-03T14:05:12.000Z",
  "games": {
    "series": "waug",
    "edition": 2026,
    "name": "West African University Games 2026"
  },
  "includesProvisional": true,
  "data": [
    {
      "code": "OAU",
      "name": "Obafemi Awolowo University",
      "country": "NG",
      "medals": {
        "gold": 1,
        "silver": 1,
        "bronze": 1,
        "total": 1
      }
    }
  ]
}

Errors: 401 No key, or the key is unknown or revoked; 429 Over the fair-use limit; wait Retry-After seconds.

One university and every medal it has won

GET /api/{series}/{edition}/universities/{code}

Parameter In Required Type Description
series path yes string Games series. Example: waug.
edition path yes string Games year. Example: 2026.
code path yes string Example: OAU.

Example response:

{
  "apiVersion": "1",
  "generatedAt": "2026-10-03T14:05:12.000Z",
  "games": {
    "series": "waug",
    "edition": 2026,
    "name": "West African University Games 2026"
  },
  "includesProvisional": true,
  "data": {
    "code": "OAU",
    "name": "Obafemi Awolowo University",
    "country": "NG",
    "medals": {
      "gold": 1,
      "silver": 1,
      "bronze": 1,
      "total": 1
    },
    "medalList": [
      {
        "event": {
          "id": "0192f3a0-7c1d-7b2e-9f10-5a3b2c1d4e5f",
          "sport": {
            "code": "JUD",
            "name": "Judo"
          },
          "gender": "men",
          "category": "−73 kg"
        },
        "slot": "gold",
        "colour": "gold",
        "athleteName": "string",
        "status": "provisional"
      }
    ]
  }
}

Errors: 401 No key, or the key is unknown or revoked; 404 No such university in these games; 429 Over the fair-use limit; wait Retry-After seconds.

Every match with its live score

GET /api/{series}/{edition}/matches

Team sports recorded on the pad (football first). Poll every 15–30 seconds during play; the minute can be counted locally from clock.

Parameter In Required Type Description
series path yes string Games series. Example: waug.
edition path yes string Games year. Example: 2026.

Example response:

{
  "apiVersion": "1",
  "generatedAt": "2026-10-03T14:05:12.000Z",
  "games": {
    "series": "waug",
    "edition": 2026,
    "name": "West African University Games 2026"
  },
  "includesProvisional": true,
  "data": {
    "matches": [
      {
        "id": "0192f3a0-7c1d-7b2e-9f10-5a3b2c1d4e5f",
        "eventId": "0192f3a0-7c1d-7b2e-9f10-5a3b2c1d4e5f",
        "sport": "FBL",
        "event": "Men's football",
        "phase": "Group A",
        "stage": "string",
        "startsAt": "2026-10-03T15:00:00.000Z",
        "venue": "string",
        "status": "scheduled",
        "home": {
          "code": "OAU",
          "name": "Obafemi Awolowo University"
        },
        "away": {
          "code": "OAU",
          "name": "Obafemi Awolowo University"
        },
        "score": {
          "home": 1,
          "away": 1
        },
        "halfTime": {
          "home": 1,
          "away": 1
        },
        "penalties": {
          "home": 1,
          "away": 1
        },
        "winner": "home",
        "awarded": {
          "home": 1,
          "away": 1,
          "reason": "string"
        },
        "official": true,
        "extraTime": true,
        "periodScores": [
          {
            "period": "string",
            "home": 1,
            "away": 1
          }
        ],
        "lead": [
          1
        ],
        "clock": {
          "period": "H1",
          "running": true,
          "periodStartedAt": "string",
          "startMinute": 1,
          "length": 1
        },
        "marks": [
          {
            "side": "home",
            "type": "goal",
            "minute": 1,
            "addedMinute": 1
          }
        ]
      }
    ]
  }
}

Errors: 401 No key, or the key is unknown or revoked; 429 Over the fair-use limit; wait Retry-After seconds.

One match: play-by-play and line-ups

GET /api/{series}/{edition}/matches/{matchId}

Line-ups appear once both team sheets are locked (an hour before kick-off by default).

Parameter In Required Type Description
series path yes string Games series. Example: waug.
edition path yes string Games year. Example: 2026.
matchId path yes string (uuid)

Example response:

{
  "apiVersion": "1",
  "generatedAt": "2026-10-03T14:05:12.000Z",
  "games": {
    "series": "waug",
    "edition": 2026,
    "name": "West African University Games 2026"
  },
  "includesProvisional": true,
  "data": {
    "match": {
      "id": "0192f3a0-7c1d-7b2e-9f10-5a3b2c1d4e5f",
      "eventId": "0192f3a0-7c1d-7b2e-9f10-5a3b2c1d4e5f",
      "sport": "FBL",
      "event": "Men's football",
      "phase": "Group A",
      "stage": "string",
      "startsAt": "2026-10-03T15:00:00.000Z",
      "venue": "string",
      "status": "scheduled",
      "home": {
        "code": "OAU",
        "name": "Obafemi Awolowo University"
      },
      "away": {
        "code": "OAU",
        "name": "Obafemi Awolowo University"
      },
      "score": {
        "home": 1,
        "away": 1
      },
      "halfTime": {
        "home": 1,
        "away": 1
      },
      "penalties": {
        "home": 1,
        "away": 1
      },
      "winner": "home",
      "awarded": {
        "home": 1,
        "away": 1,
        "reason": "string"
      },
      "official": true,
      "extraTime": true,
      "periodScores": [
        {
          "period": "string",
          "home": 1,
          "away": 1
        }
      ],
      "lead": [
        1
      ],
      "clock": {
        "period": "H1",
        "running": true,
        "periodStartedAt": "string",
        "startMinute": 1,
        "length": 1
      },
      "marks": [
        {
          "side": "home",
          "type": "goal",
          "minute": 1,
          "addedMinute": 1
        }
      ]
    },
    "timeline": [
      {
        "type": "goal",
        "period": "H1",
        "side": "home",
        "minute": 1,
        "addedMinute": 1,
        "player": {
          "name": "string",
          "shirt": 1
        },
        "other": {
          "name": "string",
          "shirt": 1
        }
      }
    ],
    "lineups": {
      "home": [
        {}
      ],
      "away": [
        {}
      ]
    },
    "box": {},
    "crew": [
      {
        "role": "string",
        "name": "string",
        "level": "string"
      }
    ]
  }
}

Errors: 401 No key, or the key is unknown or revoked; 404 No such match; 429 Over the fair-use limit; wait Retry-After seconds.

Group tables and the knockout rounds of a team event

GET /api/{series}/{edition}/events/{eventId}/competition

Worked out from the matches with the event's own points and tie-breaker order; notes say how teams level on points were separated.

Parameter In Required Type Description
series path yes string Games series. Example: waug.
edition path yes string Games year. Example: 2026.
eventId path yes string (uuid)

Example response:

{
  "apiVersion": "1",
  "generatedAt": "2026-10-03T14:05:12.000Z",
  "games": {
    "series": "waug",
    "edition": 2026,
    "name": "West African University Games 2026"
  },
  "includesProvisional": true,
  "data": {
    "event": {
      "id": "0192f3a0-7c1d-7b2e-9f10-5a3b2c1d4e5f",
      "name": "string",
      "sport": "string"
    },
    "rules": {
      "points": {
        "win": 1,
        "draw": 1,
        "loss": 1
      },
      "tieBreakers": [
        "string"
      ]
    },
    "groups": [
      {
        "id": "string",
        "name": "string",
        "advance": 1,
        "complete": true,
        "rows": [
          {
            "position": 1,
            "team": {
              "code": "OAU",
              "name": "Obafemi Awolowo University"
            },
            "played": 1,
            "won": 1,
            "drawn": 1,
            "lost": 1,
            "goalsFor": 1,
            "goalsAgainst": 1,
            "goalDifference": 1,
            "points": 1,
            "conduct": 1,
            "qualifies": true,
            "needsLots": true,
            "live": true
          }
        ],
        "notes": [
          "string"
        ],
        "matches": [
          {
            "id": "0192f3a0-7c1d-7b2e-9f10-5a3b2c1d4e5f",
            "eventId": "0192f3a0-7c1d-7b2e-9f10-5a3b2c1d4e5f",
            "sport": "FBL",
            "event": "Men's football",
            "phase": "Group A",
            "stage": "string",
            "startsAt": "2026-10-03T15:00:00.000Z",
            "venue": "string",
            "status": "scheduled",
            "home": {
              "code": "OAU",
              "name": "Obafemi Awolowo University"
            },
            "away": {
              "code": "OAU",
              "name": "Obafemi Awolowo University"
            },
            "score": {
              "home": 1,
              "away": 1
            },
            "halfTime": {
              "home": 1,
              "away": 1
            },
            "penalties": {
              "home": 1,
              "away": 1
            },
            "winner": "home",
            "awarded": {
              "home": 1,
              "away": 1,
              "reason": "string"
            },
            "official": true,
            "extraTime": true,
            "periodScores": [
              {
                "period": "string",
                "home": 1,
                "away": 1
              }
            ],
            "lead": [
              1
            ],
            "clock": {
              "period": "H1",
              "running": true,
              "periodStartedAt": "string",
              "startMinute": 1,
              "length": 1
            },
            "marks": [
              {
                "side": "home",
                "type": "goal",
                "minute": 1,
                "addedMinute": 1
              }
            ]
          }
        ]
      }
    ],
    "bestPlaced": {},
    "rounds": [
      {
        "id": "string",
        "name": "string",
        "level": "penalties",
        "placement": 1,
        "matches": [
          {
            "id": "0192f3a0-7c1d-7b2e-9f10-5a3b2c1d4e5f",
            "eventId": "0192f3a0-7c1d-7b2e-9f10-5a3b2c1d4e5f",
            "sport": "FBL",
            "event": "Men's football",
            "phase": "Group A",
            "stage": "string",
            "startsAt": "2026-10-03T15:00:00.000Z",
            "venue": "string",
            "status": "scheduled",
            "home": {
              "code": "OAU",
              "name": "Obafemi Awolowo University"
            },
            "away": {
              "code": "OAU",
              "name": "Obafemi Awolowo University"
            },
            "score": {
              "home": 1,
              "away": 1
            },
            "halfTime": {
              "home": 1,
              "away": 1
            },
            "penalties": {
              "home": 1,
              "away": 1
            },
            "winner": "home",
            "awarded": {
              "home": 1,
              "away": 1,
              "reason": "string"
            },
            "official": true,
            "extraTime": true,
            "periodScores": [
              {
                "period": "string",
                "home": 1,
                "away": 1
              }
            ],
            "lead": [
              1
            ],
            "clock": {
              "period": "H1",
              "running": true,
              "periodStartedAt": "string",
              "startMinute": 1,
              "length": 1
            },
            "marks": [
              {
                "side": "home",
                "type": "goal",
                "minute": 1,
                "addedMinute": 1
              }
            ]
          }
        ]
      }
    ]
  }
}

Errors: 401 No key, or the key is unknown or revoked; 404 No such event, or no competition settings yet; 429 Over the fair-use limit; wait Retry-After seconds.

Data types

MedalTableResponse

Field Type Description
apiVersion 1
generatedAt string
games Games
includesProvisional boolean True when any number in data comes from a result not yet confirmed.
data MedalTable

Games

Field Type Description
series string
edition integer
name string

MedalTable

Field Type Description
status all / official
rows array of MedalTableRow
totals object
disputedEvents integer

MedalTableRow

Field Type Description
rank integer Ties share a rank; the next rank is skipped
university object
medals MedalCounts
provisionalMedals integer

UniversityRef

Field Type Description
code string
name string

MedalCounts

Field Type Description
gold integer
silver integer
bronze integer
total integer

Problem

Field Type Description
type string
title string
status integer
detail string

ResultsResponse

Field Type Description
apiVersion 1
generatedAt string
games Games
includesProvisional boolean True when any number in data comes from a result not yet confirmed.
data array of EventWithResult

SportRef

Field Type Description
code string
name string

Result

Field Type Description
version integer
status provisional / disputed / official provisional: entered at the venue, not yet confirmed. official: confirmed by the Technical Committee. disputed: under review; medals withheld.
entrants integer or null
updatedAt string
confirmedAt string or null
medals array of Medal

Medal

Field Type Description
slot gold / silver / bronze_1 / bronze_2 Two-bronze events (judo, taekwondo, boxing, wrestling) use bronze_1 and bronze_2.
colour gold / silver / bronze
university UniversityRef
athleteName string or null

Event

Field Type Description
id string (uuid)
sport SportRef
gender men / women / mixed / open
category string
kind individual / team
medalRule standard / two_bronze
startsAt string or null UTC
startsAtLocal string or null The same moment in Nigeria time (WAT)
venue string or null
status scheduled / in_progress / finished / cancelled

EventsResponse

Field Type Description
apiVersion 1
generatedAt string
games Games
includesProvisional boolean True when any number in data comes from a result not yet confirmed.
data array of Event

EventResponse

Field Type Description
apiVersion 1
generatedAt string
games Games
includesProvisional boolean True when any number in data comes from a result not yet confirmed.
data EventDetail

ResultVersion

Field Type Description
version integer
status provisional / disputed / official / superseded
reason string or null Why a correction was made
createdAt string
confirmedAt string or null

SportsResponse

Field Type Description
apiVersion 1
generatedAt string
games Games
includesProvisional boolean True when any number in data comes from a result not yet confirmed.
data array of Sport

UniversitiesResponse

Field Type Description
apiVersion 1
generatedAt string
games Games
includesProvisional boolean True when any number in data comes from a result not yet confirmed.
data array of University

UniversityResponse

Field Type Description
apiVersion 1
generatedAt string
games Games
includesProvisional boolean True when any number in data comes from a result not yet confirmed.
data UniversityDetail

UniversityMedal

Field Type Description
event object
slot gold / silver / bronze_1 / bronze_2 Two-bronze events (judo, taekwondo, boxing, wrestling) use bronze_1 and bronze_2.
colour gold / silver / bronze
athleteName string or null
status provisional / official

MatchesResponse

Field Type Description
apiVersion 1
generatedAt string
games Games
includesProvisional boolean True when any number in data comes from a result not yet confirmed.
data object

MatchSummary

Field Type Description
id string (uuid)
eventId string (uuid)
sport string FBL football, BKB basketball
event string
phase string
stage string or null The group or round id, when set
startsAt string
venue string or null
status scheduled / live / finished
home object
away object
score object or null Null before kick-off
halfTime object or null
penalties object or null The shoot-out score, when there was one
winner home / away / null
awarded object or null A result awarded by the Technical Committee (e.g. a forfeit)
official boolean The referee has confirmed the match report
extraTime boolean Extra time (or basketball overtime) was played
periodScores array or null Basketball: points scored in each quarter and overtime
lead array or null Basketball: home minus away after every basket (the lead line)
clock MatchClock
marks array of object

MatchClock

Field Type Description
period H1 / H2 / ET1 / ET2 / PSO / Q1 / Q2 / Q3 / Q4 / OT1 / OT2 / OT3 / OT4 / OT5 / OT6 / OT7 / OT8 / OT9 / null
running boolean
periodStartedAt string or null When the running period started. Minute = startMinute + whole minutes since, plus 1; past length, it is added time (45+2).
startMinute integer
length integer

MatchResponse

Field Type Description
apiVersion 1
generatedAt string
games Games
includesProvisional boolean True when any number in data comes from a result not yet confirmed.
data MatchDetail

MatchDetail

Field Type Description
match MatchSummary
timeline array of object
lineups object or null Shown once both team sheets are locked
box object or null Basketball: each player’s points and fouls, team fouls this period
crew array of object The officials and their level (basketball)

CompetitionResponse

Field Type Description
apiVersion 1
generatedAt string
games Games
includesProvisional boolean True when any number in data comes from a result not yet confirmed.
data Competition

Competition

Field Type Description
event object
rules object
groups array of object
bestPlaced object or null
rounds array of object