For controller developers

WRKarma API

Read map ratings. Send player votes from your server.

OpenAPI JSON ↓

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

MethodEndpointPurpose
GET/api/v1/karma/healthStatus and version.
GET/api/v1/karma/mapsSearch 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/authenticateCreate a temporary server session.
POST/api/v1/karma/votesSet or withdraw a vote. Requires a server session.
GET/api/v1/karma/player-voteRead 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|LOGIN

The 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=0

Supported games: TMN and TMF. Read the OpenAPI specification for exact fields and limits.