Documentação da API
Todas as chamadas são GET, retornam JSON e usam um token que você gera no site.
Autenticação
Envie o token no header X-API-Token (recomendado) ou na query string ?token=.
curl -H "X-API-Token: SEU_TOKEN" https://apitofinal.fun/api/futebol/hoje
Prefira o header. Tokens na URL aparecem em logs de servidores e no histórico do navegador.
Endpoints
| Rota | O que retorna | Produto | Atualização |
|---|---|---|---|
/api/futebol/hoje | Jogos do dia, placar, canais e escudos | Esportes | a cada 1 min |
/api/futebol/amanha | Jogos do dia seguinte | Esportes | a cada 1 min |
/api/futebol/live | Placares ao vivo. Aceita ?ligas= com códigos separados por vírgula | Esportes | a cada 1 min |
/api/ufc | Card do próximo evento | Esportes | a cada hora |
/api/nba | Próximos jogos e placar ao vivo (também em /api/nba/hoje) | Esportes | a cada 2 min |
/api/wnba | Jogos da WNBA (também em /api/wnba/hoje) | Esportes | a cada 2 min |
/api/nfl | Jogos da semana da NFL, com placar ao vivo e canais (também em /api/nfl/semana) | Esportes | a cada 2 min |
/api/f1 | Próximo GP (ou fim de semana em andamento) com horário de cada sessão em Brasília (também em /api/f1/proxima) | Esportes | a cada 6 h |
/api/f1/resultado | Resultado completo da última corrida | Esportes | a cada 10 min |
/api/f1/classificacao | Campeonato de pilotos e de construtores | Esportes | a cada 10 min |
/api/status | Plano, validade e uso do seu token | Qualquer token | na hora |
/api/jogadores | Lista de jogadores com fotos | Jogadores | diária |
Esportes e Jogadores são produtos separados. Um token do plano Pro não acessa /api/jogadores, e um token de Jogadores não acessa as rotas de esportes.
Exemplos
curl -H "X-API-Token: SEU_TOKEN" https://apitofinal.fun/api/futebol/hoje
$ch = curl_init('https://apitofinal.fun/api/futebol/hoje');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['X-API-Token: SEU_TOKEN'],
CURLOPT_TIMEOUT => 15,
]);
$jogos = json_decode(curl_exec($ch), true);
foreach ($jogos as $j) {
echo "{$j['time1']} x {$j['time2']} às {$j['horario']}\n";
}
import requests
r = requests.get(
"https://apitofinal.fun/api/futebol/hoje",
headers={"X-API-Token": "SEU_TOKEN"},
timeout=15,
)
r.raise_for_status()
for j in r.json():
print(j["time1"], "x", j["time2"], j["horario"])
const r = await fetch("https://apitofinal.fun/api/futebol/hoje", {
headers: { "X-API-Token": "SEU_TOKEN" },
});
if (!r.ok) throw new Error((await r.json()).error);
const jogos = await r.json();
jogos.forEach(j => console.log(`${j.time1} x ${j.time2} às ${j.horario}`));
Formato da resposta
Exemplo abreviado de /api/futebol/hoje. Cada item da lista é um jogo.
[
{
"time1": "Portugal",
"time2": "Nigéria",
"horario": "16:45",
"competicao": "Amistosos Seleções",
"status": "ao vivo",
"placar_time1": 1,
"placar_time2": 0,
"img_time1_url": "https://…/img.php?id=abc",
"canais": [ { "nome": "SPORTV" } ]
}
]
Jogos que ainda não começaram não trazem placar. Trate placar_time1 e placar_time2 como opcionais no seu código.
API de Jogadores
Rota https://apitofinal.fun/api/jogadores, com token do plano Jogadores. Parâmetros opcionais:
| Parâmetro | Descrição |
|---|---|
q | Busca por nome |
letra | Filtra pela inicial do nome (ex.: M) |
slug | Retorna um jogador específico (ex.: aaron-anselmino) |
page, per_page | Paginação. Padrão 48 por página, máximo 200 |
formato | completo (padrão), simples (jogador e lista de URLs) ou flat (uma linha por imagem) |
pretty=1 | JSON indentado, útil para testes |
curl -H "X-API-Token: SEU_TOKEN" "https://apitofinal.fun/api/jogadores?q=messi&formato=simples"
A resposta traz ok, meta (totais, página, filtros) e data.
Erros
Erros retornam o status HTTP correto e um corpo no formato {"error": "mensagem"}.
| Status | Quando acontece | O que fazer |
|---|---|---|
401 | Token ausente, inválido ou conta desativada | Confira o header X-API-Token e o valor copiado |
403 | Plano expirado, ou token sem acesso àquele produto | Renove no painel ou assine o produto correto |
404 | Rota inexistente | A mensagem lista as rotas disponíveis |
405 | Método diferente de GET | Use GET |
Boas práticas
- Guarde a resposta em cache no seu servidor pelo tempo da tabela de endpoints. Consultar mais vezes só devolve o mesmo dado.
- Chame a API pelo seu back-end, não pelo navegador do visitante. Assim o token não fica exposto no código da página.
- Use
/api/statuspara avisar seus clientes antes do token expirar. - Defina um timeout nas suas requisições e trate os erros da tabela acima.
Testar agora
Cole seu token e escolha uma rota. A chamada sai do seu navegador direto para a API; o token não é enviado a nenhum outro lugar.
A resposta aparece aqui.