Skip to main content

Overview

ReAdmin ships with a built-in topbar button players use to request support or report a player. Those requests become live Calls your staff work from the dashboard, with two-way chat in-game. Sometimes you want to trigger that flow yourself — from your own button, a proximity prompt, a keybind, an NPC, or an automated rule — without using the ReAdmin topbar. This page covers the three ways to do that:
You want to…UseRuns on
Open ReAdmin’s built-in support / report form from your own UIClient APIopenSupport / openReportClient
Start a call directly (no form), e.g. from a “Talk to staff” buttonClient APIcreateCallClient
Start a call from trusted server logic (NPC, rule, command)Server APIReAdmin.StartSupportChatServer
All three create the exact same ticket the topbar does: it appears in your Calls queue, every message is run through Roblox text filtering, and a player can only ever have one open ticket at a time.
Calls must be enabled for your workspace. Turn it on under Remote Admin settings and make sure the Activity Tracking module is installed.

Client API

When the Activity Tracking module loads, the ReAdmin client publishes a BindableFunction named ReAdminClientAPI into ReplicatedStorage. Because it’s a BindableFunction, only your own LocalScripts on the same client can reach it — it adds no new network surface for exploiters.
local ReplicatedStorage = game:GetService("ReplicatedStorage")
local ReAdminClient = ReplicatedStorage:WaitForChild("ReAdminClientAPI")
Use WaitForChild — your LocalScript may run before the ReAdmin client has finished setting up. WaitForChild simply yields until it’s ready.

Open the built-in form

Open ReAdmin’s polished support panel from your own button instead of the topbar:
-- "Request Support" form
ReAdminClient:Invoke("openSupport")

-- "Report a Player" form (with the in-server player auto-fill picker)
ReAdminClient:Invoke("openReport")
There’s also a generic open action if you’d rather pass the view as an option:
ReAdminClient:Invoke("open", { view = "report" }) -- or view = "support"
If the player already has an active call, opening the form jumps straight to the live chat instead.

Start a call directly

Skip the form entirely and start a call straight from your own UI. The player’s live chat window opens automatically so they can talk to your staff:
-- Support call
local ticket = ReAdminClient:Invoke("createCall", {
    reason = "I need a hand with my base",
})

-- Report call
ReAdminClient:Invoke("createCall", {
    callType  = "report",
    reporting = "Builderman",        -- username being reported
    reason    = "Exploiting near spawn",
})
createCall returns the ticket on success. If the player already has an open call, it returns that existing ticket instead of creating a duplicate.

Helpers

-- Is the player currently in a support call?
local inCall = ReAdminClient:Invoke("isInCall") -- boolean

-- End the player's current call
ReAdminClient:Invoke("endCall")

Client API reference

ActionOptionsReturnsDescription
openSupporttrueOpens the built-in Request Support form.
openReporttrueOpens the built-in Report a Player form.
open{ view = "support" | "report" }trueOpens the requested form (defaults to support).
createCall{ reason, callType, reporting }ticketStarts a call without the form and opens live chat.
isInCallbooleanWhether the player has an active call.
endCalltrueEnds the player’s current call.
createCall options
OptionTypeDefaultDescription
reasonstring""What the player needs help with / what they’re reporting.
callType"support" | "report""support"The kind of call to create.
reportingstringFor report calls, the username being reported.

Server API

The loader returns a ReAdmin table. Keep a handle to it and you can start a support chat from trusted server code — an NPC interaction, a proximity prompt, or an automated rule — without the player touching any UI. Their chat window opens automatically and they can reply just like a normal call.
local ReAdmin = require(YOUR_LOADER_ASSET_ID)({
    loaderId = "your-loader-id-here",
    afkTime = 45,
})

-- Start a support chat with a player from server code
local ticket, err = ReAdmin.StartSupportChat(player, {
    reason = "Our team noticed you may need help with the tutorial",
})

if not ticket then
    warn("Could not start support chat:", err)
end
The server API is intentionally server-only — it’s not exposed as a client-invokable remote, so exploiters can’t spam it. Call it from code you trust.

Methods

-- Start a chat. options = { reason: string?, callType: string?, reporting: boolean? }
-- Returns (ticket, nil) on success or (nil, errorMessage) on failure.
local ticket, err = ReAdmin.StartSupportChat(player, { reason = "…" })

-- Is the player currently in a support chat? -> boolean
local inChat = ReAdmin.IsInSupportChat(player)

-- End the player's chat. Returns (true, nil) or (false, errorMessage).
local ok, err = ReAdmin.EndSupportChat(player)
MethodParametersReturns
StartSupportChatplayer, options?ticket, nil or nil, errorMessage
IsInSupportChatplayerboolean
EndSupportChatplayertrue, nil or false, errorMessage
StartSupportChat options
OptionTypeDefaultDescription
reasonstringWhat the chat is about. Shown to staff in the queue.
callType"support" | "report""support"The kind of call to create.
reportingbooleanfalseMarks the call as a report.

Good to know

  • One open ticket per player. Starting a call when the player already has an open ticket returns the existing ticket rather than creating a duplicate.
  • Everything is filtered. Every message is run through Roblox text filtering before it’s shown to anyone.
  • It all lands in Calls. However a call is started, it shows up in your live Calls queue for staff to claim, chat, and resolve.