Vote API Documentation
Integrate the voting system into your game server. Check player votes, get character name, game world, IP address and automatically distribute rewards.
https://mmoprime.com/api/v1
Authentication
Generate a token in your project dashboard: My Servers → Edit.
Pass it as the server_token.
Endpoints
Universal endpoint. If character — checks whether the character voted in the last 24 hours. Otherwise it returns a paginated list.
| Parameter | Type | Description | |
|---|---|---|---|
server_token |
string | required | Your server token |
character |
string | optional | Character name — checks specific vote |
world |
string | optional | Game world / realm name. Works in both modes: in the listing it keeps only that realm’s votes. |
period |
string | optional | today yesterday week month all |
page |
integer | optional | Default: 1 |
per_page |
integer | optional | Max 100. Default: 50 |
{
"success": true,
"voted_at": "2025-07-20T15:30:00+03:00",
"character": "Arthas",
"server_world": "Lordaeron",
"server_id": 123
}
{
"success": false,
"message": "No vote found for this character"
}
{
"success": true,
"data": [
{
"id": 1,
"character_name": "Arthas",
"server_world": "Lordaeron",
"server_name": "WoW Classic x5",
"ip_address": "192.168.1.10",
"voted_at": "2025-07-20 15:30:00"
}
],
"meta": {
"current_page": 1,
"last_page": 5,
"per_page": 50,
"total": 243,
"server_info": {
"id": 123,
"name": "WoW Classic x5",
"game": "World of Warcraft"
}
}
}
Vote Object Fields
| Field | Type | Description |
|---|---|---|
id | integer | Unique vote ID |
character_name | string | Character name |
server_world | string|null | Game world / realm |
server_name | string | Server name |
ip_address | string | Voter IP address |
voted_at | string | Vote timestamp, Moscow time (UTC+3) |
Integration Examples
$token = 'your_server_token';
$character = 'Arthas';
$world = 'Lordaeron'; // optional
$url = "https://mmoprime.com/api/v1/votes/by-token?"
. http_build_query([
'server_token' => $token,
'character' => $character,
'world' => $world,
]);
$data = json_decode(file_get_contents($url), true);
if ($data['success']) {
$votedAt = $data['voted_at'];
$world = $data['server_world'];
// Grant reward
}
const checkVote = async (token, character, world = null) => {
const params = new URLSearchParams({
server_token: token,
character: character,
});
if (world) params.set('world', world);
const res = await fetch(
`https://mmoprime.com/api/v1/votes/by-token?${params}`
);
const data = await res.json();
if (data.success) {
console.log('World:', data.server_world);
// Grant reward
}
};
use Illuminate\Support\Facades\Http;
public function checkVote(string $character, ?string $world = null): bool
{
$params = [
'server_token' => config('services.mmovibe.token'),
'character' => $character,
];
if ($world) $params['world'] = $world;
$response = Http::get(
'https://mmoprime.com/api/v1/votes/by-token',
$params
);
if ($response->successful() && $response->json('success')) {
// $response->json('server_world')
// Grant reward
return true;
}
return false;
}
Automated Rewards
- 1Create a cron job that runs every 5-15 minutes
- 2Request today's votes via the API
- 3Compare with your local database of processed votes
- 4Grant rewards for new votes and save the record
Monthly Vote Reset
Important: All votes are automatically cleared on the 1st of every month at 00:00 Moscow time. Counters reset to zero. Process all outstanding votes before the end of each month.
Integration Tips
- Do not poll the API more than once a minute. The hard limit is 120 requests a minute; past that you get a 429.
- Store reward history to avoid double-granting
- Handle network errors and API downtime gracefully
- Always use HTTPS
server_worldis optional — use it if your server has multiple realms