Overview
Our chat message API returns bits of stats as complete, pre-built messages. Messages are build using data from one of our data sources and predefined templates.
Message templates#
After we fetch the required data from a source, we construct a messages using the data and a predefined template. A template contains some static text as well as placeholders for the data. Here is what a simple template looks like on our end: {{{name}}} has died {{value}} times so far this round. However, you never interact with the templates directly, as all you need you to do is request a message based on a template via the API.
Some templates are generic, meaning that they apply to a number of different objects of the same type. For example, one generic template can be used to build messages for any weapon of a game. Another generic template can cover all vehicles, characters or similar. In order to use a generic template, you need to provide both the name of the template and the identifier of an object (the name of a gun for example).
Take a look at each game to find out what templates we offer for each one.
API location#
The chat message API is available at https://api.statbits.io/chatmsg/.
Message endpoints#
Even though message endpoints may differ slightly between games, they all follow the same general structure: https://api.statbits.io/chatmsg/{{game}}/{{source}}/{{platform}}/{{type}}/{{identifiers}}/{{template}}. If, for example, you want to get the current, in-round summary for the Battlefield 2 player MrRubert, you would use the following values for the placeholders:
| Parameter | Value |
|---|---|
| game | bf2 |
| source | live |
| platform | pc |
| type | players |
| identifiers | MrRubert (player name) |
| template | summary |
Putting the URL structure and the values together we get https://api.statbits.io/chatmsg/bf2/live/pc/players/MrRubert/summary, which would return MrRubert currently has 35 points, 11 kills, died 6 times and is playing with 42ms ping.
Generic template endpoints#
For generic templates, the object name needs to be provided in addition to the name of the generic template: https://api.statbits.io/chatmsg/{{game}}/{{source}}/{{platform}}/{{type}}/{{identifiers}}/{{template}}/{{object}}. To get a summary of the P90 weapon stats for a Battlefield 4 player, you would need to supply the following values:
| Parameter | Value |
|---|---|
| game | bf4 |
| source | stats |
| platform | pc |
| type | players |
| identifiers | 1547476679:aK-SpeedyHS (player id:player name) |
| template | weapon-summary |
| object | p90 |
The final URL for this example: https://api.statbits.io/chatmsg/bf4/stats/pc/players/1547476679:aK-SpeedyHS/weapon-summary/p90. Sending the request to that URL would return Using the P90, aK-SpeedyHS killed 232 enemies with 22.73% accuracy (5,214 shots fired, 1,185 shots hit, 50 headshots).
Error messages#
The chatmessage API always returns runtime error messages as plain text.
Query parameters#
The following optional query parameters can be used to customize the API response.
| Parameter | Type | Description |
|---|---|---|
| currentGame | string | Game you are currently streaming. If provided, this is validated against the game you are requesting live data from. If the values don't match, we will return an error message. |
| errMsg | string | If provided, this message will be used in case of runtime errors (source offline, player not online etc.) |
| forceOk | boolean | If set to a true-ish value, the API will return 200/OK even in case of an error |
| msgName | string | If provided, this name will be used in the message instead of the player name |
| lang | string | Language the message should be returned in, must be the ISO 639-1 code of one of the supported languages |