For controller developers
WRKarma API
Read map ratings. Send player votes from your server.
Original ManiaKarma 2.0.1
Keep the original plugin and change the two service URLs. Setup → · Original package ↓
The compatibility endpoint is /api/tmforever-trackmania-v4.php. It accepts the original XML protocol, including POST requests with the literal none body.
Legacy sessions carry map votes only. They do not prove server or player ownership and cannot access Records credentials. Old Webaccess requires HTTP; TLS-capable clients can use HTTPS.
JSON API
The previous WRKarma connector and custom controllers use the authenticated endpoints below. The service version remains 1.0.0, independent of the original plugin's 2.0.1.
Base URL: https://karma.wrmania.net
| Method | Endpoint | Purpose |
|---|---|---|
GET | /api/v1/karma/health | Status and version. |
GET | /api/v1/karma/maps | Search maps; filter game, sort and paginate. |
GET | /api/v1/karma/maps/{game}/{uid} | Global ratings. Add ?server=LOGIN for local totals. |
POST | /api/v1/servers/authenticate | Create a temporary server session. |
POST | /api/v1/karma/votes | Set or withdraw a vote. Requires a server session. |
GET | /api/v1/karma/player-vote | Read one player's current vote. Requires a server session. |
Server authentication
Send the dedicated account's game, login, nation and credentialProof as JSON. The proof is HMAC-SHA256, using the dedicated password as the key and this message:
WRMania-v1|GAME|LOGINThe response supplies a temporary token. Send it as Authorization: Bearer TOKEN on private requests. Keep passwords, proofs and tokens out of URLs and public logs.
Registration pins the proof on first use; it is not Nadeo account verification. A controller attests which player voted. The API does not independently prove a real player or a finish.
Vote format
Send game, map metadata, player.login, vote, a random UUID operationId and Unix milliseconds castAt. Use the same operation ID and payload when retrying.
Votes are −3, −2, −1, +1, +2, +3. Zero withdraws a vote. One current global vote counts per player, game and map UID. A newer vote replaces the previous one; an older queued vote cannot undo it.
Events may be at most seven days old or two minutes ahead. Honour Retry-After on rate limits and temporary errors. The successful response contains the authoritative current vote, not necessarily the old queued value.
Public results
Public requests need no sign-in and return aggregate ratings, never voter lists. Ratings average the six levels: 0, 20, 40, 60, 80 and 100. No votes means rating: null.
GET /api/v1/karma/maps?q=Stadium&game=TMF&sort=votes&limit=30&offset=0Supported games: TMN and TMF. Read the OpenAPI specification for exact fields and limits.