From Mania Tech Wiki
Revision as of 08:24, 12 May 2019 by Maxoufox (talk | contribs) (Edited GetConnectionAndGameParams responses)

Jump to: navigation, search

Basic concepts

TrackMania uses a XML-RPC-like API to authenticate players, load server lists, load rankings, etc... Here is some documentation about what has been reversed engineered. A lot is still left to be documented.

The game sends unencrypted POST requests to

to communicate with the API.

It sets two headers: User-Agent: GameBox and Accept: */*, and uses the following format as request body :

<?xml version="1.0" encoding="UTF-8"?>

Here is a description of the parameters :

  • root
    • game
      • name: the client you are using. Known values: TmForever
      • version: Version of the client
      • distro: Unknown. Set to MOLUX
      • lang: lang of the client, as ISO 639-1
    • author
      • login: is not set when calling GetConnectionAndGameParams
      • session: obtained by calling GetConnectionAndGameParams. Unset when calling that function.
    • request:
      • name: Name of the requested function.
      • param: Parameters for the call.

The server responds with XML, which has obfurscated names:

<?xml version="1.0" encoding="UTF-8"?>
  <e>execution time : 0.0010 s</e>

Here is a description of the return:

  • r
    • r
      • n: The name of the called function
      • c: The return data
    • e: A string giving the execution time.

Functions calls



  • dedicated
Set to 0 with TMF. Purpose is unknown. Maybe for servers.
  • download
Max P2P download speed, as set in game config, in B/s
  • upload
Max P2P upload speed, as set in game config, in B/s


  • a
    • b : Full game name (Set to "Trackmania United Forever for TMNF and TMUF)
    • c : Set to "game.trackmaniaforever.com" or "game2.trackmaniaforever.com". Server the client should use to continue talking with the API.
    • d : ?. Set to "online_game"
    • e : Set to 443. Maybe HTTPS port?
    • f : Set to 80. Maybe HTTP port?
    • g : Set to "World". Maybe base region?
    • h : ?. Set to 1
    • i : ?. Set to 1


Used to check if login is already used for account creation.


  • l
Player login.


  • e
Set to 1 if login is used, otherwise 0.
  • p
 ?. Set to 0.