A fictional league: teams with nested player squads, a standings table, and a match simulator with input validation.
The Football API keeps league tables, squads and simulated match results — data that changes only when a match is played, which makes it the right place to practise HTTP caching. Standings respond with an ETag, and a conditional GET carrying If-None-Match answers 304 with no body at all.
Base URL: https://funapi.dev/api/football/v1 · 7 endpoints · OpenAPI 3.1 spec and Postman collection available. New here? Read the getting started guide.
six fictional clubs
GET /football/v1/teams — List teams (paginated)GET /football/v1/teams/{id} — Get one teamGET /football/v1/teams/{id}/players — Get a team's squad (nested)GET /football/v1/teams/{id}/matches — Get a team's match history (nested resource)DELETE /football/v1/teams/{id} — Remove a team (409 if it has played matches) (requires Bearer auth)standings and matches
GET /football/v1/standings — League table — cacheable (ETag / If-None-Match / 304)POST /football/v1/matches — Simulate a match (requires Bearer auth)