FiveM setup guide

How to connect a FiveM server to Sentinel, give staff their tools, require Sentinel Live, and show players their link PIN from your own scripts.

1. Install the resource

  • Add your server at your servers and copy its key. It is shown once.
  • Copy the sentinel resource into your server's resources folder.
  • In server.cfg, add set sentinel_key "snl_..." and then ensure sentinel. Use set, never setr: setr sends the value to every player who joins.
  • Restart the server. The console prints Connected to Sentinel and your server page shows it online within about 30 seconds. sentinel status in the console says why if it does not.

Run the server with OneSync on (+set onesync on on the command line, or the txAdmin setting) so staff can go to and bring players.

2. Staff and the in-game menu

On your server page, open a player on the Players tab and choose Staff permissions. Tick what they may do; they open the menu in game with /sentinelmenu or F9.

PermissionWhat it allows
MessageSend a private message to a player
WarnSend a player a warning
FreezeHold a player in place and release them
KickRemove a player from the server
BanBan a player, for a time or for good
UnbanSee the ban list and lift bans
AnnounceSend a message to everyone
HealRestore a player to full health
ArmourGive a player full armour
TeleportTeleport a player to coordinates, go to a player, or bring one to you
  • The resource checks every action against these ticks. The menu only shows them.
  • Staff cannot kick, ban, freeze, teleport or bring another staff member.
  • Teleport coordinates are numbers inside the map: X -4500 to 6000, Y -6500 to 8500, Z -200 to 2800.
  • On the website, the owner and admins can also heal, give armour and teleport players from the Players tab. It reaches the server within about 5 seconds while the page is open.
  • Everything is in the activity log: who, to whom, what and when.

3. Sentinel Live

Sentinel Live is the SentinelLive-FiveM app players run on their PC. Each player picks your server in it. Set what happens on your server page, Sentinel Live tab:

  • Not required (the default): anyone can join.
  • Kick: players without a Sentinel Live session for your server are refused at the door and removed the moment it stops.
  • Allow but flag: they can join, and are marked on the Players tab and in the activity log.

A player whose Rockstar account is not linked to Sentinel yet does not need to type anything. The resource gets them a link PIN when they join, and on Kick the refusal reads:

Your account isn't linked to Sentinel yet. Go to sentinelpriv.com/fivem/link and enter PIN: ABC-123 (valid for 5 minutes). Then start SentinelLive-FiveM, pick this server, and rejoin.

If Sentinel cannot be reached, joining players are let in and logged, or kept out, as you set. Players already on your server are never removed because Sentinel is down.

4. Showing the PIN yourself

You can show the PIN in your own loading screen, phone script or Discord bot with the handover data, exports, event and web API below. A PIN is for that player alone. Whoever has it can link that player's Rockstar account to their own Sentinel account, so never post it in public chat or logs, and keep your server key secret: it can read your players' PINs.

PINs are 6 characters, work once, last 5 minutes, and a player can get at most 5 every 10 minutes. The website takes them with or without the dash.

5. Loading screen data

On Kick or Flag, a player who is let in arrives at your loading screen with window.nuiHandoverData.sentinel. A refused player never reaches the loading screen; they see the refusal message instead.

FieldTypeMeaning
mode"kick" or "flag"Your setting.
checkedbooleanfalse when Sentinel could not be reached and the player was let in anyway; the other fields are then missing.
linkedbooleanTheir Rockstar account is linked to Sentinel.
sessionActivebooleanSentinel Live is running for your server.
pinstring or missingOnly when not linked: 6 characters, no dash.
pinExpiresAtnumber or missingWhen the PIN stops working, unix seconds.
linkUrlstringsentinelpriv.com/fivem/link
// In your loading screen's script.
const sentinel = (window.nuiHandoverData || {}).sentinel;
if (sentinel && sentinel.pin) {
  const pin = sentinel.pin.slice(0, 3) + "-" + sentinel.pin.slice(3);
  document.getElementById("sentinel-pin").textContent =
    "Link your account at " + sentinel.linkUrl + " with PIN " + pin;
}

6. Exports

Server side. linked and sessionActive refresh on every heartbeat (30 seconds, or 5 while your server page is open), whatever the Sentinel Live setting.

-- What Sentinel last said about this player.
local status = exports.sentinel:GetLinkStatus(source)
-- {
--   known = true,           -- false until Sentinel has answered about them
--   linked = false,
--   sessionActive = false,
--   pin = "ABC123",         -- only while not linked and the PIN still works
--   expiresAt = 1761055200, -- unix seconds, with pin
--   linkUrl = "sentinelpriv.com/fivem/link", -- with pin
-- }

-- A fresh PIN for a player whose PIN ran out. Returns false if not asked
-- (unknown or already linked). The PIN arrives through the event.
exports.sentinel:RequestLinkPin(source)

7. Event

A server event. Listen with AddEventHandler, not RegisterNetEvent, so players' games cannot send it.

AddEventHandler('sentinel:linkStatus', function(source, status, reason)
    -- status: the same table as GetLinkStatus
    -- reason: 'join'    first status for this player (they arrived, or
    --                   the resource restarted)
    --         'pin'     a PIN was made for them
    --         'linked'  they linked their account on the website
    --         'session' Sentinel Live started or stopped for this server
    if reason == 'pin' and status.pin then
        TriggerClientEvent('myphone:notify', source, 'Sentinel PIN: ' .. status.pin)
    end
end)

8. Web API

For tools outside FiveM, such as a Discord bot. Authenticated with your server key, 60 requests a minute. Look a player up by one of playerId (their id on the server now), discord (Discord user id) or license (Rockstar license).

curl -H "Authorization: Bearer snl_..." \
  "https://sentinelpriv.com/api/fivem/resource/link-status?discord=123456789012345678"
{
  "ok": true,
  "player": { "id": 12, "name": "Fire" },
  "linked": false,
  "sessionActive": false,
  "pin": "ABC123",
  "pinExpiresAt": 1761055200,
  "linkUrl": "sentinelpriv.com/fivem/link"
}

Notes

  • player is there for playerId lookups.
  • pin only while the player is not linked and has a PIN made on your server. The API never makes one: they are made when a player joins a Kick or Flag server, or types /identify.
  • Unknown players answer 404 with NOT_FOUND.

Last updated: October 21, 2026