API VoteServeur v1
Recompensas de votos para los 68 juegos del catálogo. Misma API en todas partes: server_token + un solo campo de identidad (usuario, Steam o Discord — detectado automáticamente).
URL base
https://voteserveur.fr/api/v1
JSON UTF-8. Límite de tasa IP: ~90 req / min en endpoints públicos de lectura; los claims son más estrictos.
Autenticación
El server_token (40–64 car.) solo lo ve el propietario (gestión del servidor). Mantenerlo secreto.
- Consulta:
?server_token=TOKEN - Cabecera:
X-Server-Token: TOKEN - Cabecera:
Authorization: Bearer TOKEN
Sin token válido → 404 (no revela si el slug existe).
Recorrido del jugador (paso a paso)
- Crea tu ficha en /es/serveurs/nouveau.
- Descarga el pack en /es/plugins/{game} (token ya inyectado).
- Instala el plugin / arranca el poller (ver
INSTALL.txten el ZIP). Intervalo recomendado: 10 minutos. - El jugador vota con la casilla de recompensa marcada e introduce un solo identificador (usuario / Discord / Steam) — recibe un código claim (ej.
/vsclaim ABC123). - Tu script llama
GET /votes/pendingy luegoGET /votes/claim?identity=…→ siclaimed = 1, otorga la recompensa una sola vez. O el jugador reclama víaclaim-code. - Opcional:
votes/playerpara niveles mensuales (5 / 10 / 30 votos…).
GET /votes/claim (recomendado)
Claim unificado: un solo parámetro identity. La API detecta auto usuario / SteamID64 / Discord. Los endpoints claim-username / claim-steam / claim-discord siguen disponibles (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
Mismo esquema claimed 0 / 1 / 2 que los claims históricos.
GET /votes/claim-username
Reclama un voto de las últimas 2 horas vía usuario o nombre-apellido. No se puede inyectar un 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— ningún voto elegibleclaimed: 1— reclamado ahora → otorga la recompensaclaimed: 2— ya reclamado
Las variantes de usuario (Bob, Bob!, B o b, Jean Dupont / JeanDupont) se fusionan (mismo jugador).
GET /votes/claim-steam
GET https://voteserveur.fr/api/v1/votes/claim-steam?server_token=TOKEN&steam_id=76561198000000000
Mismo esquema de respuesta que claim-username.
GET /votes/claim-discord
Reclama vía ID de Discord (snowflake 17–20 dígitos). Útil para Discord, Habbo vinculado a Discord, bots, etc.
GET https://voteserveur.fr/api/v1/votes/claim-discord?server_token=TOKEN&discord_id=123456789012345678
También acepta el formato mención <@123…>. Mismo esquema de respuesta que claim-username.
GET /votes/claim-code
Reclama vía el código de un solo uso mostrado tras votar (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
Mismo esquema claimed 0/1/2. Si el voto tenía usuario, la respuesta puede incluir playername.
GET /votes/check
Comprueba sin consumir: 0 no votó · 1 ya reclamado · 2 votó sin 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 si la IP del cliente HTTP tiene un voto reciente (antiabuso en el plugin). Token obligatorio.
GET https://voteserveur.fr/api/v1/votes/check-ip?server_token=TOKEN
GET /votes/last
Últimos votos (ventana ~1 h) — depuración / overlay Discord.
GET https://voteserveur.fr/api/v1/votes/last?server_token=TOKEN
GET /votes/pending
Votos no reclamados en la ventana de claim (2 h), casilla de recompensa marcada. Una sola petición para todo el servidor — sondear cada ~10 minutos — la API devuelve de golpe a todos los votantes no 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 }
]
}
Luego llama claim?identity=… por cada jugador en línea correspondiente.
GET /votes/top
Ranking de jugadores 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 un jugador (mes / total) — útiles para los niveles del 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 de la ficha vinculada al 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 y errores
200— OK (incluso si claimed: 0)400— parámetros faltantes / inválidos404— token desconocido429— límite de tasa
Scripts y plugins
Pack ZIP generado para cada juego (nativo y/o poller universal), token inyectado, solo propietario:
- Índice de plugins — una guía de instalación por juego
- GTA: FiveM + RageMP + SA-MP en el mismo ZIP
- Guías de servidor paso a paso: /es/guides
Ejemplo curl
# Claim
curl -s -H 'X-Server-Token: TOKEN' \
'https://voteserveur.fr/api/v1/votes/claim-username?playername=Nayvroxi'
# Stats del mes (niveles)
curl -s -H 'X-Server-Token: TOKEN' \
'https://voteserveur.fr/api/v1/votes/player?playername=Nayvroxi'