Referência

Documentação da API de futebol

Tudo o que você precisa para integrar dados de futebol no seu app: início rápido, todos os endpoints com código em cURL, Python, JavaScript e PHP, especificação OpenAPI 3.1 e coleção Postman.

Início rápido

De zero a dados de futebol ao vivo em três passos. O plano Free oferece 2.000 requisições por dia (14.000 por mês) sem cartão.

  1. Crie uma conta em sportapi.ai (email ou Google).
  2. Copie sua chave de API na página chaves de API. As chaves começam com sk_live_.
  3. Faça sua primeira requisição. O programa abaixo exibe as partidas de hoje com placares ao vivo. Substitua YOUR_API_KEY e execute.
curl "https://sportapi.ai/api/fixtures/date/2026-10-20" \
  -H "X-Api-Key: YOUR_API_KEY"

Saída esperada: uma linha por partida, por exemplo Premier League: Arsenal 2-1 Leeds United (FT). A seguir: consulte eventos, escalações e estatísticas de uma partida, tabela de classificação ou receba placares via WebSocket.

Autenticação

Todos os endpoints de dados (partidas, times, classificação, ligas, jogadores) exigem sua chave de API no cabeçalho X-Api-Key. Crie uma chave no seu painel.

Cabeçalho HTTP
X-Api-Key: your_api_key
curl
curl -H "X-Api-Key: your_api_key" https://sportapi.ai/api/fixtures/date/2026-10-10

Endpoints de conta (/api/auth/me, /api/profile) usam o token de login: Authorization: Bearer your_token. Obtenha-o em /api/auth/login ou login Google.

Sem chave, o "Teste" nos endpoints de dados usa o acesso limitado do site, permitindo explorar antes de se cadastrar.

URL base

https://sportapi.ai/api

Todos os endpoints são relativos a esta URL base. Uma especificação OpenAPI 3.1 legível por máquina está disponível para geradores de código e ferramentas como Postman.

Respostas e limites

As respostas são JSON com flag success. Erros incluem código HTTP e mensagem error: 401 chave inválida, 404 não encontrado, 429 limite diário ou mensal atingido.

Limites de requisições

Cada plano tem limite diário de requisições, que zera às 00:00 UTC. O plano Free também tem limite mensal de 14.000 requisições por mês calendário (UTC), a partir de 1º de novembro de 2026; planos pagos não têm limite mensal. Cada resposta indica seu status:

Cabeçalhos da resposta
X-RateLimit-Limit: 10000
X-RateLimit-Remaining: 9876
X-RateLimit-Reset: 1791763200   (Unix time of the next reset)

# Free plan, from 1 November 2026:
X-RateLimit-Month-Limit: 14000
X-RateLimit-Month-Remaining: 9120
X-RateLimit-Month-Reset: 1793491200   (00:00 UTC on the 1st of next month)

Ao ultrapassar o limite, receba 429 com cabeçalho Retry-After (segundos até o reset). O corpo JSON tem scope: day ou month, indicando qual limite foi atingido.

Cache com ETag

Respostas GET bem-sucedidas trazem ETag. Envie-o em If-None-Match e, se os dados não mudaram, receba 304 Not Modified vazio — ideal para polling de partidas e classificações.

curl
curl -H "X-Api-Key: your_api_key" -H 'If-None-Match: "d1c0f0ad5808c8d8a0f13108edd63278"' https://sportapi.ai/api/leagues/24

Datas e horas

kickoff_utc e updated_at estão em UTC (ISO 8601). date e datetime estão em horário central europeu (CET/CEST), fuso do calendário de partidas.

Especificação OpenAPI e coleção Postman

Ambos os arquivos descrevem todos os endpoints com parâmetros, schemas de resposta e exemplos reais, gerados da mesma fonte, mantendo consistência com esta página.

Gere um cliente Python a partir da especificação
pip install openapi-python-client
openapi-python-client generate --url https://sportapi.ai/api/openapi.json

Partidas

Recupere dados de partidas, incluindo placares ao vivo, eventos e resultados históricos.

status é Scheduled, LIVE, FT, AET, PENS, Postponed, Cancelled, Suspended; durante a partida, minute mostra o relógio ("HT" no intervalo). result é 1 vitória casa, 0 empate, -1 vitória fora (null até o fim), e winner informa o mesmo por extenso, considerando pênaltis (penalty_home/penalty_away).

GET/api/fixtures/date/{date}

Obter todas as partidas para uma data específica.

ParâmetroTipoDescrição
datestringData no formato YYYY-MM-DD
Testar+
curl "https://sportapi.ai/api/fixtures/date/2026-10-20" \
  -H "X-Api-Key: YOUR_API_KEY"
Exemplo de resposta
{
  "success": true,
  "date": "2026-10-10",
  "data": [
    {
      "id": 13596176,
      "home_id": 311,
      "away_id": 352,
      "date": "2026-10-10",
      "datetime": "2026-10-10 13:30:00",
      "kickoff_utc": "2026-10-10T11:30:00Z",
      "updated_at": "2026-10-11T01:43:09Z",
      "home_score": 2,
      "away_score": 1,
      "result": 1,
      "status": "FT",
      "minute": null,
      "stage": "",
      "league_id": 24,
      "league_name": "Premier League",
      "league_geo": "GB-ENG",
      "league_zone": "England",
      "home_team": "Arsenal",
      "home_short": "Arsenal",
      "home_logo": "espn-359.png",
      "home_geo": "",
      "away_team": "Leeds United",
      "away_short": "Leeds",
      "away_logo": "espn-357.png",
      "away_geo": "",
      "penalty_home": null,
      "penalty_away": null,
      "winner": "home"
    }
  ]
}
GET/api/fixtures/{id}

Obter informações detalhadas sobre uma partida específica, incluindo eventos da partida.

ParâmetroTipoDescrição
idintegerID da partida
Testar+
curl "https://sportapi.ai/api/fixtures/13596176" \
  -H "X-Api-Key: YOUR_API_KEY"
Exemplo de resposta
{
  "success": true,
  "fixture": {
    "id": 13596176,
    "home_id": 311,
    "away_id": 352,
    "date": "2026-10-10",
    "datetime": "2026-10-10 13:30:00",
    "kickoff_utc": "2026-10-10T11:30:00Z",
    "updated_at": "2026-10-11T01:43:09Z",
    "home_score": 2,
    "away_score": 1,
    "ht_home": 0,
    "ht_away": 0,
    "result": 1,
    "status": "FT",
    "minute": null,
    "stage": "",
    "league_id": 24,
    "league_name": "Premier League",
    "league_geo": "GB-ENG",
    "league_zone": "England",
    "home_team": "Arsenal",
    "home_short": "Arsenal",
    "home_logo": "espn-359.png",
    "home_geo": "",
    "home_stadium": "Emirates Stadium",
    "home_city": "London",
    "home_coach": "Mikel Arteta",
    "home_founded": 1886,
    "away_team": "Leeds United",
    "away_short": "Leeds",
    "away_logo": "espn-357.png",
    "away_geo": "",
    "away_stadium": "Elland Road",
    "away_city": "Leeds",
    "away_coach": "Daniel Farke",
    "away_founded": 1919,
    "penalty_home": null,
    "penalty_away": null,
    "winner": "home",
    "events": [
      {
        "event_type": "goal",
        "team_side": "away",
        "player_name": "J. Justin",
        "minute": "55'",
        "extra_info": "Goal"
      },
      {
        "event_type": "yellow_card",
        "team_side": "away",
        "player_name": "A. Tanaka",
        "minute": "36'",
        "extra_info": null
      }
    ]
  }
}
GET/api/fixtures/{id}/events

Obter apenas os eventos de uma partida específica (gols, cartões, substituições).

ParâmetroTipoDescrição
idintegerID da partida
Testar+
curl "https://sportapi.ai/api/fixtures/13596176/events" \
  -H "X-Api-Key: YOUR_API_KEY"
Exemplo de resposta
{
  "success": true,
  "fixture_id": 13596176,
  "data": [
    {
      "id": 19194470,
      "event_type": "goal",
      "team_side": "away",
      "player_name": "J. Justin",
      "player_urn": "urn:bbc:sportsdata:football:player:s-6icypdqtfk2k81ax0i49j5xpl",
      "minute": "55'",
      "extra_info": "Goal"
    },
    {
      "id": 18933975,
      "event_type": "yellow_card",
      "team_side": "away",
      "player_name": "A. Tanaka",
      "player_urn": "urn:bbc:sportsdata:football:player:s-28ucbvor6b0yxreoieehudfc9",
      "minute": "36'",
      "extra_info": null
    }
  ]
}
GET/api/fixtures/{id}/stats

Obter estatísticas da partida para uma partida: chutes, passes, faltas, desarmes, defesas e cartões amarelos por time.

ParâmetroTipoDescrição
idintegerID da partida
Testar+
curl "https://sportapi.ai/api/fixtures/13596176/stats" \
  -H "X-Api-Key: YOUR_API_KEY"
Exemplo de resposta
{
  "success": true,
  "fixture_id": 13596176,
  "available": true,
  "data": {
    "home": {
      "shots": 13,
      "shots_on_target": 6,
      "shots_off_target": 7,
      "fouls": 12,
      "total_passes": 512,
      "pass_accuracy": 85.3,
      "tackles": 12,
      "tackle_success": 66.7,
      "saves": 4,
      "yellow_cards": 1
    },
    "away": {
      "shots": 11,
      "shots_on_target": 5,
      "shots_off_target": 6,
      "fouls": 20,
      "total_passes": 356,
      "pass_accuracy": 78.9,
      "tackles": 10,
      "tackle_success": 60,
      "saves": 4,
      "yellow_cards": 4
    }
  }
}
GET/api/fixtures/{id}/lineups

Obter escalações da partida, incluindo titular e reservas de ambos os times.

ParâmetroTipoDescrição
idintegerID da partida
Testar+
curl "https://sportapi.ai/api/fixtures/13596176/lineups" \
  -H "X-Api-Key: YOUR_API_KEY"
Exemplo de resposta
{
  "success": true,
  "fixture_id": 13596176,
  "available": true,
  "data": {
    "home": {
      "starters": [
        {
          "name": "David Raya",
          "position": "Goalkeeper",
          "shirt": 1,
          "is_captain": false,
          "mins_played": 90
        },
        {
          "name": "B. White",
          "position": "Defender",
          "shirt": 4,
          "is_captain": false,
          "mins_played": 63
        }
      ],
      "subs": [
        {
          "name": "P. Hincapié",
          "position": "Substitute",
          "shirt": 5,
          "is_captain": false,
          "mins_played": 8
        }
      ]
    },
    "away": {
      "starters": [
        {
          "name": "J. Trafford",
          "position": "Goalkeeper",
          "shirt": 1,
          "is_captain": false,
          "mins_played": 90
        },
        {
          "name": "J. Bogle",
          "position": "Midfielder",
          "shirt": 2,
          "is_captain": false,
          "mins_played": 86
        }
      ],
      "subs": [
        {
          "name": "S. Longstaff",
          "position": "Substitute",
          "shirt": 8,
          "is_captain": false,
          "mins_played": 0
        }
      ]
    }
  }
}

Times

Acesse informações dos times, incluindo detalhes, elenco, partidas e histórico de troféus.

GET/api/teams/{id}

Obter informações do time com partidas recentes e ligas.

ParâmetroTipoDescrição
idintegerID do time
Testar+
curl "https://sportapi.ai/api/teams/311" \
  -H "X-Api-Key: YOUR_API_KEY"
Exemplo de resposta
{
  "success": true,
  "team": {
    "id": 311,
    "name": "Arsenal",
    "short_name": "Arsenal",
    "league_id": 24,
    "geo": "GB-ENG",
    "country": "England",
    "city": "London",
    "coach_name": "Mikel Arteta",
    "stadium_name": "Emirates Stadium",
    "founded_year": 1886,
    "logo_file": "espn-359.png"
  },
  "matches": [
    {
      "id": 16096707,
      "home_id": 311,
      "away_id": 10165,
      "date": "2026-11-07",
      "home_score": null,
      "away_score": null,
      "result": null,
      "status": "Scheduled",
      "league_id": 24,
      "league_name": "Premier League",
      "home_team": "Arsenal",
      "away_team": "Hull City"
    },
    {
      "id": 15868670,
      "home_id": 162,
      "away_id": 311,
      "date": "2026-11-04",
      "home_score": null,
      "away_score": null,
      "result": null,
      "status": "Scheduled",
      "league_id": 18,
      "league_name": "UEFA Champions League",
      "home_team": "Slavia Prague",
      "away_team": "Arsenal"
    }
  ],
  "leagues": [
    {
      "id": 24,
      "name": "Premier League"
    },
    {
      "id": 18,
      "name": "UEFA Champions League"
    }
  ]
}
GET/api/teams/{id}/logo

Obter imagem do logotipo do time. Retorna PNG/SVG ou escudo de placeholder.

ParâmetroTipoDescrição
idintegerID do time
Testar+
curl "https://sportapi.ai/api/teams/311/logo" \
  -H "X-Api-Key: YOUR_API_KEY" \
  -o logo.png
Exemplo de resposta
Content-Type: image/png
Binary image data
GET/api/teams/slug/{slug}

Obter um time pelo slug da URL, com sua liga, últimos resultados, próximas partidas e elenco.

ParâmetroTipoDescrição
slugstringSlug do time
Testar+
curl "https://sportapi.ai/api/teams/slug/arsenal" \
  -H "X-Api-Key: YOUR_API_KEY"
Exemplo de resposta
{
  "success": true,
  "team": {
    "id": 311,
    "name": "Arsenal",
    "short_name": "Arsenal",
    "slug": "arsenal",
    "country": "England",
    "city": "London",
    "geo": "GB-ENG",
    "founded_year": 1886,
    "coach_name": "Mikel Arteta",
    "stadium_name": "Emirates Stadium",
    "logo_file": "espn-359.png",
    "league": {
      "id": 24,
      "name": "Premier League",
      "slug": "premier-league"
    }
  },
  "results": [
    {
      "id": 13596176,
      "date": "2026-10-10",
      "home_score": 2,
      "away_score": 1,
      "status": "FT",
      "result": 1,
      "home_team": "Arsenal",
      "home_slug": "arsenal",
      "away_team": "Leeds United",
      "away_slug": "leeds-united",
      "league_name": "Premier League",
      "league_slug": "premier-league"
    }
  ],
  "upcoming": [
    {
      "id": 13596702,
      "date": "2026-10-13",
      "datetime": "2026-10-13 21:00:00",
      "status": "Scheduled",
      "home_team": "Arsenal",
      "home_slug": "arsenal",
      "away_team": "Lille",
      "away_slug": "lille",
      "league_name": "UEFA Champions League"
    }
  ],
  "squad": [
    {
      "full_name": "David Raya",
      "position": "Goalkeeper",
      "jersey_number": 1,
      "nationality": "ES",
      "slug": "david-raya"
    },
    {
      "full_name": "Kepa Arrizabalaga",
      "position": "Goalkeeper",
      "jersey_number": 13,
      "nationality": "ES",
      "slug": "kepa-arrizabalaga"
    }
  ]
}
GET/api/teams/{id}/squad

Obter o elenco de jogadores do time organizado por posição.

ParâmetroTipoDescrição
idintegerID do time
Testar+
curl "https://sportapi.ai/api/teams/311/squad" \
  -H "X-Api-Key: YOUR_API_KEY"
Exemplo de resposta
{
  "success": true,
  "squad": [
    {
      "id": 4904,
      "full_name": "David Raya",
      "position": "Goalkeeper",
      "jersey_number": 1,
      "nationality": "ES",
      "date_of_birth": "1995-09-15",
      "height": null,
      "weight": null
    },
    {
      "id": 4903,
      "full_name": "Kepa Arrizabalaga",
      "position": "Goalkeeper",
      "jersey_number": 13,
      "nationality": "ES",
      "date_of_birth": "1994-10-03",
      "height": null,
      "weight": null
    }
  ]
}
GET/api/teams/{id}/trophies

Obter histórico de troféus e campeonatos do time.

ParâmetroTipoDescrição
idintegerID do time
Testar+
curl "https://sportapi.ai/api/teams/311/trophies" \
  -H "X-Api-Key: YOUR_API_KEY"
Exemplo de resposta
{
  "success": true,
  "trophies": [
    {
      "year": 1994,
      "position": 1,
      "tournament_id": 26,
      "name": "1994 UEFA Cup Winners' Cup Final",
      "short_name": null,
      "type": "domestic_league",
      "country": null
    },
    {
      "year": 1993,
      "position": 1,
      "tournament_id": 24,
      "name": "1987 Football League Cup Final",
      "short_name": null,
      "type": "domestic_league",
      "country": null
    }
  ]
}

Classificação

Obtenha tabelas de classificação e forma dos times.

GET/api/standings/leagues

Obter lista de todas as ligas disponíveis com dados de classificação.

Testar+
curl "https://sportapi.ai/api/standings/leagues" \
  -H "X-Api-Key: YOUR_API_KEY"
Exemplo de resposta
{
  "success": true,
  "data": [
    {
      "id": 24,
      "name": "Premier League",
      "slug": "premier-league",
      "zone": "England",
      "geo": "GB-ENG"
    },
    {
      "id": 1,
      "name": "Spanish La Liga",
      "slug": "spanish-la-liga",
      "zone": "Spain",
      "geo": "ES"
    }
  ]
}
GET/api/standings/{leagueId}

Obter a tabela atual da liga. A lista de forma lista as últimas 6 partidas, mais antigas primeiro. Você também pode passar o slug da liga (ex: /api/standings/premier-league); a resposta então inclui a liga.

ParâmetroTipoDescrição
leagueIdintegerID da liga (ou slug)
Testar+
curl "https://sportapi.ai/api/standings/24" \
  -H "X-Api-Key: YOUR_API_KEY"
Exemplo de resposta
{
  "success": true,
  "data": [
    {
      "position": 1,
      "team": {
        "id": 324,
        "name": "Manchester City",
        "short_name": "Man City",
        "slug": "manchester-city",
        "logo": "espn-382.png"
      },
      "played": 5,
      "won": 5,
      "draw": 0,
      "lost": 0,
      "goals_for": 13,
      "goals_against": 5,
      "goal_difference": 8,
      "points": 15,
      "form": [
        {
          "result": "W",
          "date": "2026-09-13",
          "home_team": "Manchester United",
          "away_team": "Manchester City",
          "home_score": 0,
          "away_score": 1,
          "is_home": false
        },
        {
          "result": "W",
          "date": "2026-09-20",
          "home_team": "Manchester City",
          "away_team": "Sunderland",
          "home_score": 5,
          "away_score": 3,
          "is_home": true
        }
      ]
    },
    {
      "position": 2,
      "team": {
        "id": 311,
        "name": "Arsenal",
        "short_name": "Arsenal",
        "slug": "arsenal",
        "logo": "espn-359.png"
      },
      "played": 6,
      "won": 5,
      "draw": 0,
      "lost": 1,
      "goals_for": 10,
      "goals_against": 5,
      "goal_difference": 5,
      "points": 15,
      "form": [
        {
          "result": "L",
          "date": "2026-09-19",
          "home_team": "Brighton & Hove Albion",
          "away_team": "Arsenal",
          "home_score": 3,
          "away_score": 0,
          "is_home": false
        },
        {
          "result": "W",
          "date": "2026-10-10",
          "home_team": "Arsenal",
          "away_team": "Leeds United",
          "home_score": 2,
          "away_score": 1,
          "is_home": true
        }
      ]
    }
  ]
}

Ligas

Acesse informações das ligas, incluindo artilheiros, assistências, cartões e histórico de confrontos.

GET/api/leagues

Obter todas as ligas agrupadas por país com informações de cobertura de dados.

Testar+
curl "https://sportapi.ai/api/leagues" \
  -H "X-Api-Key: YOUR_API_KEY"
Exemplo de resposta
{
  "success": true,
  "data": [
    {
      "country": "England",
      "geo": "GB-ENG",
      "leagues": [
        {
          "id": 53,
          "name": "Championship",
          "geo": "GB-ENG",
          "domestic": 1,
          "has_standings": true,
          "has_fixtures": true,
          "fixtures_count": 737,
          "teams_count": 24
        },
        {
          "id": 26,
          "name": "English Community Shield",
          "geo": "GB-ENG",
          "domestic": 1,
          "has_standings": true,
          "has_fixtures": true,
          "fixtures_count": 2,
          "teams_count": 0
        }
      ]
    }
  ]
}
GET/api/leagues/{id}

Obter detalhes da liga com times, partidas futuras e resultados recentes.

ParâmetroTipoDescrição
idintegerID da liga
Testar+
curl "https://sportapi.ai/api/leagues/24" \
  -H "X-Api-Key: YOUR_API_KEY"
Exemplo de resposta
{
  "success": true,
  "id": 24,
  "name": "Premier League",
  "geo": "GB-ENG",
  "country": "England",
  "domestic": 1,
  "teams": [
    {
      "id": 370,
      "name": "AFC Bournemouth",
      "logo_file": "espn-349.png"
    },
    {
      "id": 311,
      "name": "Arsenal",
      "logo_file": "espn-359.png"
    }
  ],
  "upcoming_fixtures": [
    {
      "id": 13596518,
      "date": "2026-10-11",
      "datetime": "2026-10-11 15:00:00",
      "home_team": "Crystal Palace",
      "away_team": "Nottingham Forest"
    }
  ],
  "recent_results": [
    {
      "id": 13596181,
      "date": "2026-10-10",
      "home_team": "Manchester United",
      "away_team": "Tottenham Hotspur",
      "home_score": 1,
      "away_score": 1
    }
  ]
}
GET/api/leagues/{id}/topscorers

Obter os artilheiros de uma liga específica. Temporada atual por padrão.

ParâmetroTipoDescrição
idintegerID da liga
limitintegerLinhas para retornar, 1-100 (padrão 20)
seasonstringall = todas as temporadas em vez da temporada atual
Testar+
curl "https://sportapi.ai/api/leagues/24/topscorers?limit=20" \
  -H "X-Api-Key: YOUR_API_KEY"
Exemplo de resposta
{
  "success": true,
  "season_from": "2026-08-21",
  "data": [
    {
      "rank": 1,
      "player_name": "E. Haaland",
      "player_urn": "urn:bbc:sportsdata:football:player:s-atzboo800gv7gic2rgvgo0kq1",
      "team_id": 324,
      "team_name": "Manchester City",
      "goals": 5,
      "penalties": 0
    },
    {
      "rank": 1,
      "player_name": "João Pedro",
      "player_urn": "urn:bbc:sportsdata:football:player:s-eaqqezw2ed1u0tt3zc128mr1m",
      "team_id": 322,
      "team_name": "Chelsea",
      "goals": 5,
      "penalties": 0
    }
  ]
}
GET/api/leagues/{id}/topassists

Obter os maiores assistentes de uma liga específica. Temporada atual por padrão.

ParâmetroTipoDescrição
idintegerID da liga
limitintegerLinhas para retornar, 1-100 (padrão 20)
seasonstringall = todas as temporadas em vez da temporada atual
Testar+
curl "https://sportapi.ai/api/leagues/24/topassists?limit=20" \
  -H "X-Api-Key: YOUR_API_KEY"
Exemplo de resposta
{
  "success": true,
  "season_from": "2026-08-21",
  "data": [
    {
      "rank": 1,
      "player_name": "A. Semenyo",
      "player_urn": "",
      "team_id": 324,
      "team_name": "Manchester City",
      "assists": 3
    },
    {
      "rank": 1,
      "player_name": "C. Palmer",
      "player_urn": "",
      "team_id": 322,
      "team_name": "Chelsea",
      "assists": 3
    }
  ]
}
GET/api/leagues/{id}/topcards

Obter jogadores com mais cartões (amarelos/vermelhos) em uma liga. Temporada atual por padrão.

ParâmetroTipoDescrição
idintegerID da liga
limitintegerLinhas para retornar, 1-100 (padrão 20)
seasonstringall = todas as temporadas em vez da temporada atual
Testar+
curl "https://sportapi.ai/api/leagues/24/topcards?limit=20" \
  -H "X-Api-Key: YOUR_API_KEY"
Exemplo de resposta
{
  "success": true,
  "season_from": "2026-08-21",
  "data": [
    {
      "rank": 1,
      "player_name": "A. Fatawu",
      "player_urn": "urn:bbc:sportsdata:football:player:s-6cx5c6bzp1hq6c1vui53mxzx0",
      "team_id": 10158,
      "team_name": "Ipswich Town",
      "yellow_cards": 3,
      "red_cards": 1,
      "total_cards": 4
    },
    {
      "rank": 1,
      "player_name": "V. Janelt",
      "player_urn": "urn:bbc:sportsdata:football:player:s-9k8gysrsy1a261nhcszo4aoyx",
      "team_id": 366,
      "team_name": "Brentford",
      "yellow_cards": 4,
      "red_cards": 0,
      "total_cards": 4
    }
  ]
}
GET/api/fixtures/h2h/{team1}/{team2}

Obter histórico de confrontos diretos entre dois times.

ParâmetroTipoDescrição
team1integerID do primeiro time
team2integerID do segundo time
Testar+
curl "https://sportapi.ai/api/fixtures/h2h/311/312" \
  -H "X-Api-Key: YOUR_API_KEY"
Exemplo de resposta
{
  "success": true,
  "team1": 311,
  "team2": 312,
  "data": [
    {
      "id": 604,
      "home_id": 311,
      "away_id": 312,
      "date": "2026-01-08",
      "home_score": 0,
      "away_score": 0,
      "result": 0,
      "status": "FT",
      "home_team": "Arsenal",
      "away_team": "Liverpool",
      "league_name": "Premier League"
    },
    {
      "id": 577,
      "home_id": 312,
      "away_id": 311,
      "date": "2025-08-31",
      "home_score": 1,
      "away_score": 0,
      "result": 1,
      "status": "FT",
      "home_team": "Liverpool",
      "away_team": "Arsenal",
      "league_name": "Premier League"
    }
  ]
}

Jogadores

Acesse estatísticas dos jogadores e desempenho por partida.

GET/api/players/{slug}

Obter perfil do jogador: biografia, time e liga atuais, estatísticas de carreira e temporada atual, partidas recentes e a próxima partida.

ParâmetroTipoDescrição
slugstringSlug do jogador
Testar+
curl "https://sportapi.ai/api/players/bukayo-saka" \
  -H "X-Api-Key: YOUR_API_KEY"
Exemplo de resposta
{
  "success": true,
  "player": {
    "id": 4928,
    "full_name": "Bukayo Saka",
    "slug": "bukayo-saka",
    "position": "Forward",
    "nationality": "GB-ENG",
    "date_of_birth": "2001-09-05",
    "height": null,
    "weight": null,
    "photo_url": null,
    "jersey_number": 7,
    "team_id": 311
  },
  "team": {
    "id": 311,
    "full_name": "Arsenal",
    "slug": "arsenal",
    "country": "England",
    "geo": "GB-ENG",
    "league_id": 24
  },
  "league": {
    "id": 24,
    "name": "Premier League",
    "slug": "premier-league"
  },
  "linked": false,
  "career": null,
  "season": null,
  "rank": null,
  "matches": [],
  "recent": [],
  "next_match": {
    "date": "2026-10-13",
    "datetime": "2026-10-13 21:00:00",
    "home_team": "Arsenal",
    "home_slug": "arsenal",
    "away_team": "Lille",
    "away_slug": "lille",
    "league_name": "UEFA Champions League"
  },
  "squad": [
    {
      "full_name": "David Raya",
      "slug": "david-raya",
      "position": "Goalkeeper",
      "jersey_number": 1
    }
  ]
}
GET/api/players/stats

Obter estatísticas por partida e totais de carreira de um jogador. Busca por nome do jogador e ID do time.

ParâmetroTipoDescrição
namestringNome completo do jogador
team_idintegerID do time do qual o jogador faz parte
shirt_numberintegerOpcional — ajuda a desambiguar jogadores com nomes semelhantes
Testar+
curl "https://sportapi.ai/api/players/stats?name=Bukayo%20Saka&team_id=311&shirt_number=7" \
  -H "X-Api-Key: YOUR_API_KEY"
Exemplo de resposta
{
  "success": true,
  "player": {
    "shirt_number": 7,
    "position": "Forward",
    "nationality": "GB-ENG",
    "team": {
      "id": 311,
      "name": "Arsenal"
    }
  },
  "totals": {
    "appearances": 46,
    "goals": 12,
    "assists": 6,
    "mins_played": 2775,
    "shots_total": 96,
    "total_passes": 957,
    "tackles": 42,
    "saves": 0
  },
  "matches": [
    {
      "goals": 0,
      "assists": 0,
      "mins_played": 90,
      "shots_total": 2,
      "total_passes": 34,
      "tackles": 1,
      "saves": 0,
      "position": "Attacking Midfielder",
      "shirt_number": 7,
      "is_starter": 1,
      "date": "2026-10-10",
      "home_score": 2,
      "away_score": 1,
      "home_id": 311,
      "away_id": 352,
      "home_team": "Arsenal",
      "away_team": "Leeds United",
      "league_name": "Premier League"
    }
  ]
}

Endpoints de autenticação

Endpoints para registro e login de usuários.

POST/api/auth/register

Registrar uma nova conta de usuário.

ParâmetroTipoDescrição
emailstringE-mail do usuário (obrigatório)
passwordstringSenha do usuário (obrigatório)
namestringNome de exibição (opcional)
Testar+
curl -X POST "https://sportapi.ai/api/auth/register" \
  -H "Content-Type: application/json" \
  -d '{"email":"[email protected]","password":"YOUR_PASSWORD","name":"John Doe"}'
Exemplo de resposta
{
  "success": true,
  "token": "eyJhbGciOiJIUzI1NiIs...",
  "user": { "id": 1, "email": "[email protected]" }
}
POST/api/auth/login

Fazer login com e-mail e senha.

ParâmetroTipoDescrição
emailstringE-mail do usuário (obrigatório)
passwordstringSenha do usuário (obrigatório)
Testar+
curl -X POST "https://sportapi.ai/api/auth/login" \
  -H "Content-Type: application/json" \
  -d '{"email":"[email protected]","password":"YOUR_PASSWORD"}'
Exemplo de resposta
{
  "success": true,
  "token": "eyJhbGciOiJIUzI1NiIs...",
  "user": { "id": 1, "email": "[email protected]" }
}
GET/api/auth/me

Obter usuário autenticado atual.

Requer autenticação
Testar+
curl "https://sportapi.ai/api/auth/me" \
  -H "Authorization: Bearer YOUR_LOGIN_TOKEN"
Exemplo de resposta
{
  "success": true,
  "user": { "id": 1, "email": "[email protected]", "name": "John" }
}
GET/api/auth/google

Obter URL de autorização do Google OAuth.

Testar+
curl "https://sportapi.ai/api/auth/google"
Exemplo de resposta
{
  "success": true,
  "url": "https://accounts.google.com/o/oauth2/v2/auth?..."
}

Endpoints de usuário

Endpoints para perfil e contato do usuário.

GET/api/profile

Obter o perfil do usuário atual.

Requer autenticação
Testar+
curl "https://sportapi.ai/api/profile" \
  -H "Authorization: Bearer YOUR_LOGIN_TOKEN"
Exemplo de resposta
{
  "success": true,
  "user": { "id": 1, "email": "[email protected]", "name": "John" }
}
POST/api/profile

Atualizar perfil do usuário.

Requer autenticação
ParâmetroTipoDescrição
namestringNovo nome de exibição
Testar+
curl -X POST "https://sportapi.ai/api/profile" \
  -H "Authorization: Bearer YOUR_LOGIN_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"New Name"}'
Exemplo de resposta
{
  "success": true,
  "message": "Profile updated successfully"
}
POST/api/contact

Enviar solicitação de formulário de contato.

ParâmetroTipoDescrição
namestringSeu nome (obrigatório)
emailstringSeu e-mail (obrigatório)
subjectstringAssunto (opcional)
messagestringSua mensagem (obrigatório)
Testar+
curl -X POST "https://sportapi.ai/api/contact" \
  -H "Content-Type: application/json" \
  -d '{"name":"John Doe","email":"[email protected]","subject":"API Question","message":"Your message..."}'
Exemplo de resposta
{
  "success": true,
  "message": "Contact request submitted successfully"
}

WebSocket

Conecte-se ao servidor WebSocket da SportAPI para receber atualizações de placares ao vivo enviadas ao seu cliente em tempo real — sem necessidade de polling.

Conexão

URL do WebSocket
wss://sportapi.ai/ws?key=YOUR_API_KEY

Autentique-se passando sua chave de API como parâmetro de consulta. A conexão será rejeitada com uma mensagem de erro se a chave estiver ausente ou inválida.

Latência da atualização

As atualizações de placar são enviadas em aproximadamente 30–60 segundos após um gol. Isso reflete o intervalo de atualização da nossa fonte de dados ao vivo.

Mensagens do cliente

Após a conexão, envie mensagens JSON para se inscrever em partidas:

Inscrever-se em todas as partidas ao vivo
{ "action": "subscribe_all" }
Inscrever-se em uma partida específica
{ "action": "subscribe", "fixture_id": 12345 }
Cancelar assinatura de uma partida
{ "action": "unsubscribe", "fixture_id": 12345 }
Ping
{ "action": "ping" }

Mensagens do servidor

Atualização de placar
{
  "type": "score_update",
  "fixture_id": 12345,
  "home_score": 2,
  "away_score": 1,
  "home_pen": null,
  "away_pen": null,
  "status": "LIVE",
  "minute": "67'"
}

Valores status: Scheduled, LIVE, FT, AET, PENS, Postponed, Cancelled, Suspended. No intervalo, o status permanece LIVE e minute é "HT". home_pen/away_pen armazenam o placar de pênaltis quando houver (os endpoints REST chamam de penalty_home/penalty_away).

Exemplo em JavaScript

JavaScript
const ws = new WebSocket('wss://sportapi.ai/ws?key=YOUR_API_KEY')

ws.onopen = () => {
  // Subscribe to all live matches
  ws.send(JSON.stringify({ action: 'subscribe_all' }))

  // Or subscribe to a specific fixture
  ws.send(JSON.stringify({ action: 'subscribe', fixture_id: 12345 }))
}

ws.onmessage = (event) => {
  const msg = JSON.parse(event.data)
  if (msg.type === 'score_update') {
    console.log(`Fixture ${msg.fixture_id}: ${msg.home_score}–${msg.away_score} (${msg.status})`)
  }
}

ws.onclose = () => console.log('Disconnected')
ws.onerror = (err) => console.error('WebSocket error', err)