Skip to main content

Submit a text report

POST /api/v1/msg

Every Guardyn report contains one required text value. The studio decides what its reporting interface collects and sends:

  • Reported message: Put the specific filtered chat or in-game text being reported in text. You may also include up to two messages before and two messages after it in context.
  • Written report: Put the player's complete written description in text and omit context. This is still one text report; do not split the statement into artificial chat messages.

In both cases, scoped_user_id identifies the player being reported. Guardyn receives only the fields that the studio's server chooses to submit.

Reported message example

{
"game_id": "game_ab12cd34",
"client_report_id": "8e894f17-73e4-4f2a-9d5e-038b52527698",
"scoped_user_id": "51028391",
"text": "reported filtered chat message",
"context": [
{ "position": "before-1", "text": "earlier filtered message" },
{ "position": "after-1", "text": "later filtered message" }
],
"priority": "normal",
"roblox_prompt_status": "shown"
}

Written report example

If the interface simply asks a player to write what happened, send that answer as the single text value:

{
"game_id": "game_ab12cd34",
"client_report_id": "d8185287-b044-432d-a22a-130839515822",
"scoped_user_id": "51028391",
"text": "This player repeatedly followed me between rooms and continued insulting me after I asked them to stop.",
"priority": "normal",
"roblox_prompt_status": "shown"
}

No context array is needed for this type of report.

Fields

FieldRequiredNotes
game_idYesGuardyn game ID, not the Roblox universe ID
client_report_idRecommended1-128 URL-safe characters; makes retries idempotent
scoped_user_idYesIdentifier from Player.User.Id in this game
textYesOne filtered text value, 1-1,000 characters: either the reported message or the reporter's written statement
contextNoUp to four related chat messages; omit this for a standalone written report. Guardyn stores every context participant as Redacted
priorityNonormal or high; defaults to normal
roblox_prompt_statusNoshown, accepted, or dismissed; defaults to shown

Guardyn does not accept or store the reporter's scoped identifier because it is not needed to review the submitted report text.

Accepted response

{
"case_id": "GDN-2026-000184",
"status": "accepted",
"roblox_report_prompt": "required_in_game"
}

During the three-day grace period, status is collected_view_only.

Idempotent retry

Reusing the same client_report_id for the same workspace and game returns the original case without creating another report:

{
"case_id": "GDN-2026-000184",
"status": "accepted",
"duplicate": true,
"roblox_report_prompt": "required_in_game"
}