Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Loading...
Welcome to the official documentation for FiveRoster, the ultimate web-based platform designed to simplify roster management for your game server communities! Accessible at fiveroster.com, FiveRoster empowers users to create, manage, and share department rosters seamlessly, all while leveraging the power of Discord for secure authentication and roster creation.
Whether you're organizing a gaming clan, managing a roleplay server, or coordinating teams for your community, FiveRoster provides an intuitive and efficient solution to keep your rosters organized and accessible. This documentation is your go-to resource for getting started, mastering features, and troubleshooting any questions you may have.
FiveRoster is a user-friendly platform that allows you to:
Create Department Rosters: Build structured rosters for your game server’s departments, such as moderators, admins, or in-game factions, with ease.
Integrate with Discord: Authenticate securely using your Discord account and pull relevant server membership data to streamline roster creation.
Manage Teams Efficiently: Organize, update, and share rosters to keep your community aligned and informed.
Ensure Security:
FiveRoster was created by to address the needs of FiveM server administrators and community leaders looking for a reliable and modern roster management tool away from having to use very manual cumbersome spreadsheets.
Ready to dive in? This documentation will guide you through every step of using FiveRoster. Here’s what you can explore:
FiveRoster is more than just a tool—it’s a community of game server administrators, moderators, and players working together to create unforgettable gaming experiences. Connect with us and other users on our official Discord server to share ideas, get support, or suggest new features.
Have questions or need help? Contact our support team via our official Discord server, accessible through . We’re here to ensure your experience with FiveRoster is nothing short of exceptional.
The first step in getting setup with FiveRoster is to invite our bot to your Discord server. You can do this by being prompted via the dashboard, homepage or alternatively visit .
Once you've clicked the link, you'll be shown a dialog like the one below, simply choose your server from the dropdown list and click the "Continue" button.
Once you've clicked the "Continue" button, you'll then be prompted to choose what permissions to give the FiveRoster bot. For full working functionality make sure that all of the permissions are selected and then click the "Authorize" button to add the bot to your server 🎉

Inviting the Discord Bot to your Discord Server

Logging in and accessing the FiveRoster Dashboard

Creating your first department roster
If you have any difficulties inviting the Discord bot to your server, please feel free to open a support ticket via the official FiveRoster Discord server and one of the team will be glad to assist!


The last thing you want to worry about is ex-players still having access to your department rosters. That's why with FiveRoster, we've made the process easier for both granting players access and also restricting outsiders.
Even though your roster link is publicly accessible, only members of your Discord server itself can access your rosters by default. This prevents ex-players/malicious actors from still having access to your information.
Along with only server members being able to access your rosters you can go a step further and only allow members with specific Discord roles to view your rosters. This works well if you have multiple departments (LSPD, BCSO, SASP) as well as individual Discord roles for each department.
To do this, click on your server in the dashboard and then click on the "Edit" button to be taken to the roster editor page. From here, scroll down to the bottom right where you see a "Access Controls & Logs" section. From the first dropdown, you can add/remove Discord roles you want players to have before they can view your specific roster.
Once you've selected the roles you'd like, click on the "Save Changes" button at the bottom right of the page to update your roster.
Within FiveRoster there are two distinct types of roster rank callsigns, Static and Dynamic.
When a rank is created with a static callsign, this means that at any given time only one singular player can be assigned to this specific rank.
e.g. (Creating a Undersheriff rank for a Sheriff department roster. I only want one player to be Undersheriff so I will set the rank to use a static callsign of 02 with a prefix of S-).
Given this example above, when the roster is viewed publicly, only S-02 will be displayed under the "Undersheriff" rank.
When a rank is created with a dynamic callsign, this means that more than one player can be assigned to this specific rank but with a different numerical callsign.
e.g. (Creating a Deputy rank for a Sheriff department roster. I only want 50 available callsigns to be generated for the rank of Deputy. I will set the rank to use a dynamic callsign with a range of 50-100 with a prefix of S-)
Given this example above, when the roster is viewed publicly, S-50, S-51, S-52, S-53... will be displayed under the "Deputy" rank.
If you have any further questions regarding how rank callsigns work, please feel free to reach out to us on our official Discord server.

Roster flags can be added to your roster for a range of different purposes. Flags are either yes or no and can be toggled by authorised players within the roster itself.
You could use these flags to mark off leave of absence, whether or not the player is an FTO or if the player assigned to the rank is part of any sub-divisions i.e. (SWAT, K9, HEAT).
Once you have invited the FiveRoster bot to your Discord server, you'll be able to click on the "Manage" button on your server panel on the dashboard. By clicking this button, you'll then be taken to view your existing rosters and also create new ones.
Once you've clicked the create button, you'll then be taken to the roster creation page. From here you can provide your roster name and also select the specific theme for your roster. Don't worry too much about your chosen theme as you can change this at any time.
This would be where you could provide "Los Santos Police Department" or "Blaine County Sheriff's Office".
After you've provided a name and selected your theme, click on the "Create Roster" button in the bottom right.
We've partnered with Patreon to facilitate premium subscriptions. Upon successfully purchasing premium membership via Patreon, you will be automatically assigned the "Premium" role in the FiveRoster Discord server. This role is crucial for unlocking the benefits of premium on the platform.
You can purchase premium membership here.
Note: You'll need to log out of FiveRoster and log back in after receiving your Premium role for the changes to take effect.
Enrolling players onto your roster can be done easily via the roster page itself. Only Administrators and Managers can enrol players onto the roster.
API keys are managed on a per Discord server basis. When you add FiveRoster to your Discord server you'll have the option to generate API keys for your specific use within that server.
The data requested through the API will only be for the corresponding server and the rosters created within. If you attempt to retrieve roster information with an API key that isn't tied to the rosters Discord server then you will receive an error.
To create a new API key, you'll need to head to the server page in FiveRoster and click on the "Settings" tab. From here, you'll see a section titled "API Key Management". Then, click on the "Create API Key" button in the top right to be shown a modal to provide a name for your key and also set an optional expiry.
Your API key is to be kept secret as anyone with it can pull information from your rosters including player information and ranks.

Your roster has specific access levels that determine what a player accessing the roster can do depending on their assigned roster rank. You can add/remove roles from ranks at any time and you can learn how to make those changes by clicking here.
Administrators have access to amend the roster completely. They can clear ranks, assign players to specific ranks, promote/demote players and manage player strikes. Ranks with the access of Administrator are unrestricted.
Managers cannot change the roster itself but can clear ranks, assign players to specific ranks, promote/demote players and manage player strikes.
Players with read-only access can only view the roster. They cannot manage ranks or players on the roster.
We plan to release a wide range of different themes and styles to really personalise your department rosters within FiveRoster. There will be plenty of themes to choose from and some themes will be exclusive to premium members.
Before themes are added to FiveRoster, a vote will be held in our official Discord server so you the community can choose if it's worth adding to the platform.
We also have plans to release a Theme Builder which allows you to become a theme creator publishing your creations to the Theme Marketplace for other members to use on their rosters. You can read more about this here.
In order to become a theme creator and publish your themes to the Theme Marketplace you'll need to make sure you have an active Premium subscription.
Opening theme creation to the community is very exciting for us and this is something we are actively working on to get this ready for everyone. Stay tuned for updates via our official Discord server.



Promoting/demoting players in your roster can be done easily via the roster page itself. Only Administrators and Managers can promote/demote players.
From this screen, you'll be able to use the dropdown to select the rank to promote your selected player to. FiveRoster will automatically determine promotable ranks for this player by looking at your roster structure. In this case, the only viable rank that this player can be promoted to is "Deputy Director" as all other ranks above are occupied.
Dynamic callsign stretching
FiveRoster will automatically stretch dynamic callsign ranges if you still want to promote a player to a rank that is fully occupied. An example of this would be say Sergeant, all 10 Sergeant ranks are occupied so the platform will extend the max range to 11, create the callsign X-11 and then promote the player to that rank.
Player notes can be managed easily via the roster page itself. Only Administrators and Managers can add player notes to the roster.
To access the FiveRoster dashboard, you can visit . If you are not already logged in, you'll be asked to login via Discord. Once you've logged in you'll be automatically redirected to the dashboard page.
You'll see all the Discord servers you are currently a member of and whether or not you have permission to install the FiveRoster bot.
If you've already invited the bot to your Discord server, you'll have the option to "Manage" your rosters.





From this screen, you'll be able to use the dropdown to select the rank to demote your selected player to. FiveRoster will automatically determine demote-able ranks for this player by looking at your roster structure.
After clicking on "Demote Player", the page will refresh and the player will have now been demoted to your chosen rank. If you have provided a roster announcement channel in Discord and checked the option to announce roster demotions, FiveRoster will also post this demotion in that channel.



From the dashboard, click "Manage" on the server panel where your roster resides to be taken to the roster editor page.
By clicking on this button, you'll be prompted with a window to fill out your rank information and add it to the roster.
Field Types
Name: This is the name of your rank i.e. (Director, Assistant Director, Trooper II)
Insignia: This is where you can choose a unique insignia for this rank. These are predefined and we are continually adding new ones. If you don't want to use an insignia, select "No Insignia" from the dropdown options.
Callsign Prefix: This is the prefix for your callsign i.e. (1L-, K-, FD-). The prefix is optional as callsign numerics are taken care of by FiveRoster.
Callsign Type: This is where you can choose if you want the rank to use a static callsign and be singular or use a dynamic callsign and have multiple positions open for the same rank.
Discord Roles: This dropdown contains a list of roles within your Discord server. This is what roles players will be given upon being promoted to this rank or being appointed to this rank.
Access Roles: This allows you choose what kind of access you want this rank to have on the public facing roster. To learn more about roster access levels,
Rank sections allow you to professionally organise your ranks into specific sections i.e. (Department Command, Lower Command, Supervisors).
To create a rank section, click on the "Add Section" button in the "Roster Ranks" area of the editor page and you'll be prompted to provide a name for your section.
Once you've added it to the roster you can move ranks and sections around by left clicking and dragging the three lines to the left of each row in the table.

Hover over the player row you'd like to add the player strike to and left click. You'll then be shown a dialog to manage the player. Click on the "Strikes" tab to access player strikes.















In order to authenticate with the FiveRoster API, you'll need to provide the API key you have generated in the header of the request under "X-API-KEY". The API may return a variety of different error messages:
The API has several protections in place to prevent API spam and misuse. By default, the API will rate limit IP addresses that attempt to make more than 50 requests per minute.
GET /api/v1/rosters
This endpoint is used to retrieve all roster information for a given Discord server and is returned in a JSON format. Rank information and flags are not omitted at this point for all rosters.
Headers
Example Response (200 OK)
GET /api/v1/rosters/{roster_uuid}
This endpoint is used to retrieve specific roster information for a given Discord server and is returned in a JSON format. Rank information and flags IS omitted at this point for the roster.
Headers
Example Response (200 OK)
GET /api/v1/rosters/{roster_uuid}/players
This endpoint is used to retrieve all roster player information for a given roster and is returned in a JSON format. This only includes players enrolled actively on the roster itself.
Headers
Example Response (200 OK)
Here are some examples of how to request information from the FiveRoster API.
announce_demotions
Boolean if FiveRoster will announce demotion events
announce_demotion_channels
Array of Discord channels that will receive roster demotion alerts
announce_strikes
Boolean if FiveRoster will announce strike events
announce_strikes_channels
Array of Discord channels that will receive roster strike alerts
created_by
Discord user ID of the individual who created the roster
Content-Type
application/json
X-API-KEY
Generated API Key
id
The unique roster UUID
name
Name of the roster
guild_id
The Discord server ID
active_players
Count of players within the roster
role_access
Array of Discord roles that have access to view the specific roster
announcement_channels
Array of Discord channels that will receive roster notifications (appointments, promotions)
Content-Type
application/json
X-API-KEY
Generated API Key
Content-Type
application/json
X-API-KEY
Generated API Key
{
"error": [
"code": "missing_api_key",
"message": "API key missing"
]
}{
"error": [
"code": "invalid_api_key",
"message": "Invalid API key"
]
}{
"error": [
"code": "expired_api_key",
"message": "API key expired"
]
}{
"error": [
"code": "rate_limit_exceeded",
"message": "Too many requests. Try again in 60 seconds."
]
}{
"data": [
{
"id": "47fcc2eb-624a-4eb8-83c2-18de03152v46",
"name": "Los Santos Police Department",
"guild_id": "1367933128899865454",
"active_players": 19,
"role_access": "[\"13678763030299115823\"]",
"announcement_channels": "[\"1868017104954533704\"]",
"announce_demotions": 0,
"announce_demotions_channels": "[]",
"announce_strikes": 0,
"announce_strikes_channels": "[]",
"created_by": "494901188844847121"
},
...
]
}{
"data": {
"id": "47fcc2eb-624a-4eb8-83c2-18de03152v46",
"name": "Los Santos Police Department",
"guild_id": "1367933128899865454",
"active_players": 32,
"role_access": "[\"1367946303022911583\"]",
"flags": [{
"id": 1,
"name": "K-9",
"attached_roles": ["1368538350297295944"],
"access_roles": null
}, {
"id": 2,
"name": "FTO",
"attached_roles": ["1368538350297295944"],
"access_roles": ["2"]
// Access roles are for the roster management
// [1] = Read Only
// [2] = Manager
// [3] = Administrator
}, {
"id": 4,
"name": "Air Unit",
"attached_roles": ["1368538350297295944"],
"access_roles": null
},
...],
"ranks": [{
"id": "4b3a1990-3b3a-48j8-8354-091a05f73fb5",
"name": "Chief of Police",
"discord_roles": "[\"1368537558136651874\"]",
"access_roles": "[\"3\"]",
"is_dynamic": 0,
"callsign_prefix": "R-",
"callsign_range": "0,0",
"static_callsign": "01",
"shortcode": "Chief"
}, {
"id": "af879926-135d-46d5-850c-78a9a5ec66324",
"name": "Assistant Chief",
"discord_roles": "[\"1368537558136651874\"]",
"access_roles": "[\"3\"]",
"is_dynamic": 0,
"callsign_prefix": "R-",
"callsign_range": "0,0",
"static_callsign": "02",
"shortcode": "AsstC"
}, {
"id": "bc307a3f-0219-43d8-b7aa-375009153",
"name": "Deputy Chief",
"discord_roles": "[\"1368537558136651874\"]",
"access_roles": "[\"3\"]",
"is_dynamic": 0,
"callsign_prefix": "R-",
"callsign_range": "0,0",
"static_callsign": "03",
"shortcode": "DepC"
},
{
"id": "a7937764-0193-459e-89b4-1b196b84ea19",
"name": "Lieutenant",
"discord_roles": "[\"1368537558136651874\"]",
"access_roles": "[\"1\"]",
"is_dynamic": 1,
"callsign_prefix": "R-",
"callsign_range": "21,26",
"static_callsign": "0",
"shortcode": "LT"
},
...
],
"announcement_channels": "[\"1368537558136651874\"]",
"announce_demotions": 0,
"announce_demotions_channels": "[]",
"announce_strikes": 0,
"announce_strikes_channels": "[]",
"created_by": "494901188844847121"
}
}{
"data": [{
"player_id": 494901138843847227,
"player_name": "Ryneide",
"rank": "Chief of Police",
"callsign": "R-01",
"status": "Active",
"flags": [1],
"strikes": [{
"strike_info": "Player was driving erratically and not following department guidelines.",
"issued_by": "494901138843847227",
"issued_date": "2025-06-27T04:02:24.000000Z"
}],
"notes": "Example notes here.",
"promoted_at": "2025-06-18T02:09:01.000000Z"
},
...]
}fetch('https://fiveroster.com/api/v1/rosters', {
headers: {
'X-API-KEY': 'YOUR_API_KEY_HERE'
}
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://fiveroster.com/api/v1/rosters");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'X-API-KEY: YOUR_API_KEY_HERE'
]);
$response = curl_exec($ch);
if(curl_errno($ch)){
echo 'Error:' . curl_error($ch);
} else {
$data = json_decode($response, true);
print_r($data);
}
curl_close($ch);
import requests
headers = {
'X-API-KEY': 'YOUR_API_KEY_HERE'
}
response = requests.get('https://fiveroster.com/api/v1/rosters', headers=headers)
if response.ok:
data = response.json()
print(data)
else:
print("Error:", response.status_code)
using System;
using System.Net.Http;
using System.Threading.Tasks;
class Program {
static async Task Main() {
HttpClient client = new HttpClient();
client.DefaultRequestHeaders.Add("X-API-KEY", "YOUR_API_KEY_HERE");
var response = await client.GetAsync("https://fiveroster.com/api/v1/rosters");
if (response.IsSuccessStatusCode) {
string data = await response.Content.ReadAsStringAsync();
Console.WriteLine(data);
} else {
Console.WriteLine("Error: " + response.StatusCode);
}
}
}