Lo básico
- Las respuestas son JSON. Envía la cabecera
Accept: application/jsonen cada petición. - No hace falta autenticación.
- Límite: 30 peticiones por minuto por dirección IP.
- Todas las horas están en UTC.
- Un jugador puede votar por un servidor una vez al día, y un servidor puede recibir como máximo 30 votos al día.
El UUID de tu servidor
Cada servidor de la lista tiene un UUID permanente que lo identifica en la API, así que sigue funcionando aunque cambie la dirección del servidor. Los dueños ven el UUID en la página del servidor. Si no lo encuentras, contacta con nosotros indicando la dirección de tu servidor y te lo enviaremos.
Listar votos
GET https://mcserverscout.com/api/servers/{uuid}/votes
Devuelve los votos del servidor, del más reciente al más antiguo. Los votos anónimos (sin nick) no se incluyen.
Parámetros de consulta
Todos los parámetros son opcionales.
| Parámetro | Tipo | Descripción |
|---|---|---|
| nick | string | Solo los votos con este nick exacto (distingue mayúsculas y minúsculas, de 2 a 128 caracteres). |
| date_from | date | Votos emitidos en esta fecha o después, YYYY-MM-DD. |
| date_to | date | Votos emitidos hasta el final de esta fecha, inclusive, YYYY-MM-DD. |
| limit | integer | Resultados por página, de 1 a 200. Por defecto, 100. |
| page | integer | Número de página, de 1 a 100. |
Ejemplo de petición
curl -H "Accept: application/json" \
"https://mcserverscout.com/api/servers/9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d/votes?nick=Steve&date_from=2026-10-23"
Ejemplo de respuesta
{
"data": [
{
"nick": "Steve",
"created_at": "2026-10-23T14:30:00+00:00"
}
],
"links": {
"first": "https://mcserverscout.com/api/servers/9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d/votes?page=1",
"last": "https://mcserverscout.com/api/servers/9b1deb4d-3b7d-4bad-9bdd-2b0d7b3dcb6d/votes?page=1",
"prev": null,
"next": null
},
"meta": {
"current_page": 1,
"from": 1,
"last_page": 1,
"per_page": 100,
"to": 1,
"total": 1
}
}
Usa links.next o el parámetro page para obtener las páginas siguientes. El objeto meta también contiene los campos de paginación estándar path y links.
Errores
- 404: no hay ningún servidor con este UUID. Comprueba que has copiado el UUID completo.
- 422: un parámetro no es válido, por ejemplo
limit=500. El objetoerrorsde la respuesta indica el parámetro y qué le pasa. - 429: más de 30 peticiones en un minuto. Espera el tiempo indicado en la cabecera
Retry-After.
Recompensar los votos en un plugin
La forma más sencilla: cuando un jugador ejecute un comando como /vote claim, pregunta a la API si ese nick ha votado hoy y entrega la recompensa si lo ha hecho y todavía no la ha reclamado. Guarda la fecha de reclamación de cada jugador para que un voto no se pueda canjear dos veces.
Una comprobación mínima para un plugin de Paper o Spigot (Java 11+), ejecutada fuera del hilo principal:
// Returns true if the player has voted today (UTC).
CompletableFuture<Boolean> hasVotedToday(String nick) {
String today = LocalDate.now(ZoneOffset.UTC).toString();
URI uri = URI.create(API_URL
+ "?limit=1&date_from=" + today
+ "&nick=" + URLEncoder.encode(nick, StandardCharsets.UTF_8));
HttpRequest request = HttpRequest.newBuilder(uri)
.header("Accept", "application/json")
.build();
return HttpClient.newHttpClient()
.sendAsync(request, HttpResponse.BodyHandlers.ofString())
.thenApply(response -> response.statusCode() == 200
&& !response.body().contains("\"data\":[]"));
}
Asigna a API_URL el valor https://mcserverscout.com/api/servers/{uuid}/votes con el UUID de tu servidor. Entrega la recompensa de vuelta en el hilo principal, por ejemplo con Bukkit.getScheduler().runTask(...). Si prefieres recompensar a los jugadores automáticamente, consulta la API cada pocos minutos con date_from igual a la fecha de hoy y procesa los nicks que todavía no hayas visto. Mantente muy por debajo del límite de 30 peticiones por minuto.