API VoteServeur v1
Recompensas de votos para os 68 jogos do catálogo. Mesma API em todo o lado: server_token + um único campo de identidade (utilizador, Steam ou Discord — detetado automaticamente).
URL base
https://voteserveur.fr/api/v1
JSON UTF-8. Rate-limit IP: ~90 req / min nos endpoints públicos de leitura; os claims são mais estritos.
Autenticação
O server_token (40–64 car.) só é visível para o proprietário (gestão do servidor). Manter em segredo.
- Consulta:
?server_token=TOKEN - Cabeçalho:
X-Server-Token: TOKEN - Cabeçalho:
Authorization: Bearer TOKEN
Sem token válido → 404 (não revela se o slug existe).
Percurso do jogador (passo a passo)
- Cria a tua ficha em /pt/serveurs/nouveau.
- Descarrega o pack em /pt/plugins/{game} (token já injetado).
- Instala o plugin / inicia o poller (ver
INSTALL.txtno ZIP). Intervalo recomendado: 10 minutos. - O jogador vota com a caixa de recompensa marcada e introduz um único identificador (utilizador / Discord / Steam) — recebe um código claim (ex.
/vsclaim ABC123). - O teu script chama
GET /votes/pendinge depoisGET /votes/claim?identity=…→ seclaimed = 1, dá a recompensa uma só vez. Ou o jogador reclama viaclaim-code. - Opcional:
votes/playerpara níveis mensais (5 / 10 / 30 votos…).
GET /votes/claim (recomendado)
Claim unificado: um único parâmetro identity. A API deteta auto utilizador / SteamID64 / Discord. Os endpoints claim-username / claim-steam / claim-discord continuam disponíveis (compat).
GET https://voteserveur.fr/api/v1/votes/claim?server_token=TOKEN&identity=Pseudo
GET https://voteserveur.fr/api/v1/votes/claim?server_token=TOKEN&identity=76561198000000000
GET https://voteserveur.fr/api/v1/votes/claim?server_token=TOKEN&identity=123456789012345678
Mesmo esquema claimed 0 / 1 / 2 que os claims históricos.
GET /votes/claim-username
Reclama um voto das últimas 2 horas via utilizador ou nome-apelido. Impossível injetar um voto.
GET https://voteserveur.fr/api/v1/votes/claim-username?server_token=TOKEN&playername=Pseudo
GET https://voteserveur.fr/api/v1/votes/claim-username?server_token=TOKEN&playername=Jean%20Dupont
{
"code": 200,
"success": true,
"claimed": 1,
"message": "Voto reclamado"
}
claimed: 0— nenhum voto elegívelclaimed: 1— reclamado agora → dá a recompensaclaimed: 2— já reclamado
As variantes de utilizador (Bob, Bob!, B o b, Jean Dupont / JeanDupont) são fundidas (mesmo jogador).
GET /votes/claim-steam
GET https://voteserveur.fr/api/v1/votes/claim-steam?server_token=TOKEN&steam_id=76561198000000000
Mesmo esquema de resposta que claim-username.
GET /votes/claim-discord
Reclama via ID Discord (snowflake 17–20 dígitos). Útil para Discord, Habbo ligado ao Discord, bots, etc.
GET https://voteserveur.fr/api/v1/votes/claim-discord?server_token=TOKEN&discord_id=123456789012345678
Também aceita o formato menção <@123…>. Mesmo esquema de resposta que claim-username.
GET /votes/claim-code
Reclama via o código de uso único mostrado após o voto (6 car., válido 2 h). Comando in-game recomendado: /vsclaim ABC123.
GET https://voteserveur.fr/api/v1/votes/claim-code?server_token=TOKEN&code=ABC123
Mesmo esquema claimed 0/1/2. Se o voto tinha utilizador, a resposta pode incluir playername.
GET /votes/check
Verifica sem consumir: 0 não votou · 1 já reclamado · 2 votou sem reclamar.
GET https://voteserveur.fr/api/v1/votes/check?server_token=TOKEN&playername=Pseudo
GET /votes/check-steam
GET https://voteserveur.fr/api/v1/votes/check-steam?server_token=TOKEN&steam_id=7656119…
GET /votes/check-discord
GET https://voteserveur.fr/api/v1/votes/check-discord?server_token=TOKEN&discord_id=123456789012345678
GET /votes/check-ip
Indica se o IP do cliente HTTP tem um voto recente (antiabuso no plugin). Token obrigatório.
GET https://voteserveur.fr/api/v1/votes/check-ip?server_token=TOKEN
GET /votes/last
Últimos votos (janela ~1 h) — debug / overlay Discord.
GET https://voteserveur.fr/api/v1/votes/last?server_token=TOKEN
GET /votes/pending
Votos não reclamados na janela de claim (2 h), caixa de recompensa marcada. Um único pedido para todo o servidor — fazer poll a cada ~10 minutos — a API devolve de uma vez todos os votantes não reclamados.
GET https://voteserveur.fr/api/v1/votes/pending?server_token=TOKEN&limit=50
{
"success": true,
"votes": [
{ "id": "…", "playername": "Pseudo", "steam_id": null, "discord_id": "123…", "created_at": "…", "created_ts": 1710000000 }
]
}
Depois chama claim?identity=… para cada jogador online correspondente.
GET /votes/top
Ranking de jogadores agregado. Params: period=month|day|all, limit (máx. 50).
GET https://voteserveur.fr/api/v1/votes/top?server_token=TOKEN&period=month&limit=10
GET /votes/player (alias /votes/stats)
Stats de um jogador (mês / total) — úteis para os níveis do poller universal.
GET https://voteserveur.fr/api/v1/votes/player?server_token=TOKEN&playername=Pseudo
GET https://voteserveur.fr/api/v1/votes/stats?server_token=TOKEN&steam_id=7656119…
{
"success": true,
"player_name": "Pseudo",
"votes_month": 12,
"votes_total": 48
}
GET /server
Info pública da ficha ligada ao token.
GET https://voteserveur.fr/api/v1/server?server_token=TOKEN
GET /servers/{token}
Variante path: /servers/{token}, /full, /stats, /advices, /players-ranking.
GET https://voteserveur.fr/api/v1/servers/TOKEN
GET https://voteserveur.fr/api/v1/servers/TOKEN/full
GET https://voteserveur.fr/api/v1/servers/TOKEN/stats
GET https://voteserveur.fr/api/v1/servers/TOKEN/advices
GET https://voteserveur.fr/api/v1/servers/TOKEN/players-ranking
Códigos e erros
200— OK (mesmo se claimed: 0)400— parâmetros em falta / inválidos404— token desconhecido429— rate-limit
Scripts e plugins
Pack ZIP gerado para cada jogo (nativo e/ou poller universal), token injetado, só para o proprietário:
- Índice de plugins — um guia de instalação por jogo
- GTA: FiveM + RageMP + SA-MP no mesmo ZIP
- Guias de servidor passo a passo: /pt/guides
Exemplo curl
# Claim
curl -s -H 'X-Server-Token: TOKEN' \
'https://voteserveur.fr/api/v1/votes/claim-username?playername=Nayvroxi'
# Stats do mês (níveis)
curl -s -H 'X-Server-Token: TOKEN' \
'https://voteserveur.fr/api/v1/votes/player?playername=Nayvroxi'