Callback integration
Build the vote link your players click, then handle the request RSPS List sends your server after each confirmed vote. Two steps. Rewards fire automatically.
When a player clicks Vote in your game client, redirect them here. Swap your-server for your listing slug and fill in the two parameters dynamically from your session.
https://rspslist.com/server/your-server/vote/?callback=anything&username=ZezimacallbackstringrequiredDelivered to your callback endpoint exactly as you set it. Put whatever your game server needs here: a character name, a session token, or any other value your reward system uses to identify the voter.
usernamestringrequiredThe player's in-game name. Must be included for the vote to count.
When username is in the vote link, the player lands directly on the vote page with their name pre-filled. Servers with at least 3 total votes also unlock the review and vouch system, so eligible players get the chance to leave feedback alongside their vote.
After a vote clears, RSPS List sends a GET request to the callback URL you entered in your listing settings. Grab your secret key from the dashboard before you go live.
Check secret first, then use callback to reward the voter, then return HTTP 200.
GET https://yourdomain.com/vote?callback=anything&ip=1.2.3.4&secret=YOUR_SECRETcallbackstringoptionalThe value you put in the vote link. Use it to look up and reward the player in your game.
ipstringoptionalThe IP address of the voter. Handy for logging and spotting abuse.
secretstringrequiredYour private key from the dashboard. Reject every request where this does not match. It is the only thing proving the call came from RSPS List.
<?php
$secret = "YOUR_SECRET_KEY";
if (!isset($_GET['secret']) || $_GET['secret'] !== $secret) {
http_response_code(403);
exit("Unauthorized");
}
$player = $_GET['callback'] ?? 'unknown';
$ip = $_GET['ip'] ?? 'unknown';
// give the player their in-game vote reward here
// giveReward($player);
http_response_code(200);
echo "ok";
?>import express from "express";
const app = express();
const SECRET = "YOUR_SECRET_KEY";
app.get("/vote", (req, res) => {
const { callback, ip, secret } = req.query;
if (secret !== SECRET) {
return res.status(403).send("Unauthorized");
}
// give the player their in-game vote reward here
console.log(`Vote from ${callback} (IP ${ip})`);
res.status(200).send("ok");
});
app.listen(3000);@RestController
public class VoteCallbackController {
private static final String SECRET = "YOUR_SECRET_KEY";
@GetMapping("/vote")
public ResponseEntity<String> onVote(
@RequestParam String callback,
@RequestParam String ip,
@RequestParam String secret
) {
if (!SECRET.equals(secret)) {
return ResponseEntity.status(403).body("Unauthorized");
}
// give the player their in-game vote reward here
System.out.println("Vote from " + callback);
return ResponseEntity.ok("ok");
}
}Fire a test request from your terminal and confirm you get HTTP 200 back and your reward logic runs:
curl "https://yourdomain.com/vote?callback=TestPlayer&ip=1.2.3.4&secret=YOUR_SECRET_KEY"