Webhook Payloads
When you configure a webhook integration, RustApp sends an HTTP POST request to your endpoint for every enabled event. This page documents the payload structure for each event type, grouped the same way they appear in the integration settings panel.
Envelope
Every webhook request shares the same top-level envelope:
{
"project_id": 1000,
"type": "<event_type>",
"payload": { }
}project_id: The ID of the project (server group) that triggered the event.type: A unique identifier for the event, see the sections below for possible values.payload: Event-specific data, described for each event type below.
Bans
ban_create
Triggered when a player receives a ban. payload.data is an array because bans can be created in bulk (e.g. banning multiple accounts at once, grouped by ban_group_uuid).
{
"project_id": 1000,
"type": "ban_create",
"payload": {
"data": [
{
"id": 900001,
"project_id": 1000,
"client_id": 501,
"ban_group_uuid": "11111111-2222-3333-4444-555555555555",
"steam_id": "76561198000000001",
"server_ids": [],
"reason": "Cheat",
"comment": "",
"proofs": ["ban-proofs/1700000000000-example1.png"],
"ban_ip": "203.0.113.10",
"ban_ip_active": true,
"edit_time": 1787240327641,
"edit_client_id": 501,
"created_at": 1787240327641,
"computed_is_active": true
},
{
"id": 900002,
"project_id": 1000,
"client_id": 501,
"ban_group_uuid": "11111111-2222-3333-4444-555555555555",
"steam_id": "76561198000000002",
"server_ids": [],
"reason": "Teammate",
"comment": "",
"proofs": ["ban-proofs/1700000000000-example1.png"],
"ban_ip": "203.0.113.10",
"ban_ip_active": true,
"edit_time": 1787240327641,
"edit_client_id": 501,
"created_at": 1787240327641,
"computed_is_active": true
}
]
}
}payload.data[].id: The unique ID of the ban.payload.data[].project_id: The ID of the project the ban belongs to.payload.data[].client_id: The ID of the staff member who created the ban (0if created via console/system).payload.data[].ban_group_uuid: Groups bans that were created together in the same action.payload.data[].steam_id: The SteamID64 of the banned player.payload.data[].server_ids: The server IDs the ban applies to (empty = all servers).payload.data[].reason: The ban reason.payload.data[].comment: An optional internal comment.payload.data[].proofs: An array of proof file paths/URLs attached to the ban.payload.data[].ban_ip: The IP address associated with the ban.payload.data[].ban_ip_active: Whether the IP ban is currently active.payload.data[].edit_time: Unix timestamp (ms) of the last edit.payload.data[].edit_client_id: The ID of the staff member who last edited the ban.payload.data[].created_at: Unix timestamp (ms) when the ban was created.payload.data[].computed_is_active: Whether the ban is currently active.
ban_edit
Triggered when a player's ban details are modified.
{
"project_id": 1000,
"type": "ban_edit",
"payload": {
"opts": {
"client_id": 501,
"ban_id": 900003,
"ban_ip_active": true,
"proofs": [],
"reason": "Cheat",
"server_ids": [],
"comment": "Ban via console",
"expired_at": 1789832365620
},
"data": {
"id": 900003,
"project_id": 1000,
"client_id": 0,
"steam_id": "76561198000000003",
"server_ids": [],
"reason": "Cheat",
"comment": "Ban via console",
"proofs": [],
"ban_ip": "203.0.113.11",
"ban_ip_active": true,
"edit_time": 1787240370174,
"edit_client_id": 501,
"created_at": 1787237024713,
"expired_at": 1789832365620,
"computed_is_active": true,
"sync_should_kick": true,
"send_notification": false
}
}
}payload.opts: The set of fields that were submitted for the edit.payload.opts.client_id: The ID of the staff member who performed the edit.payload.opts.ban_id: The ID of the ban that was edited.payload.opts.expired_at: Unix timestamp (ms) the ban is set to expire at, if changed.payload.data: The full ban object after the edit was applied (seeban_createfor shared fields).payload.data.expired_at: Unix timestamp (ms) when the ban expires.payload.data.sync_should_kick: Whether the affected player should be kicked as part of syncing this change.payload.data.send_notification: Whether a notification should be sent about this change.
ban_delete
Triggered when a player's ban is removed.
{
"project_id": 1000,
"type": "ban_delete",
"payload": {
"opts": {
"client_id": 501,
"ban_id": 900004,
"comment": ""
},
"data": {
"id": 900004,
"project_id": 1000,
"client_id": 501,
"steam_id": "76561198000000004",
"server_ids": [],
"reason": "Cheat",
"comment": "",
"proofs": [],
"ban_ip": "203.0.113.12",
"ban_ip_active": false,
"edit_time": 1787240448579,
"edit_client_id": 501,
"unban_time": 1787240459546,
"unban_client_id": 501,
"unban_comment": "",
"created_at": 1787240448579,
"computed_is_active": false,
"sync_should_kick": true,
"send_notification": false
}
}
}payload.opts.client_id: The ID of the staff member who removed the ban.payload.opts.ban_id: The ID of the ban that was removed.payload.opts.comment: An optional comment explaining the removal.payload.data: The full ban object after removal (seeban_createfor shared fields).payload.data.unban_time: Unix timestamp (ms) when the ban was removed.payload.data.unban_client_id: The ID of the staff member who removed the ban.payload.data.unban_comment: An optional comment explaining the removal.payload.data.computed_is_active:falseonce the ban has been removed.
Checks
check_started
Triggered when a player check is initiated.
{
"project_id": 1000,
"type": "check_started",
"payload": {
"data": {
"id": 700001,
"client_id": 501,
"project_id": 1000,
"suspect_steam_id": "76561198000000005",
"suspect_team": ["76561198000000006", "76561198000000007"],
"status": "Pending",
"contact": null,
"verdict": null,
"comment": null,
"bans": [],
"created_at": "2026-08-20T15:42:26.090Z",
"updated_at": "2026-08-20T15:42:26.090Z",
"finished_at": null
}
}
}payload.data.id: The unique ID of the check.payload.data.client_id: The ID of the staff member who started the check.payload.data.project_id: The ID of the project.payload.data.suspect_steam_id: The SteamID64 of the player being checked.payload.data.suspect_team: SteamID64s of the suspect's teammates at the time of the check.payload.data.status: The current status of the check (e.g.Pending,Canceled).payload.data.contact: Contact information provided for the check, if any.payload.data.verdict: The check's verdict, if decided.payload.data.comment: An optional comment.payload.data.bans: Bans created as a result of this check.payload.data.created_at/updated_at: ISO 8601 timestamps for creation and last update.payload.data.finished_at: ISO 8601 timestamp when the check finished, ornullwhile pending.
check_finished
Triggered when a player check is completed. Shares the same payload.data shape as check_started, with status and finished_at updated.
{
"project_id": 1000,
"type": "check_finished",
"payload": {
"data": {
"id": 700001,
"client_id": 501,
"project_id": 1000,
"suspect_steam_id": "76561198000000005",
"suspect_team": ["76561198000000006", "76561198000000007"],
"status": "Canceled",
"contact": null,
"verdict": null,
"comment": "",
"bans": [],
"created_at": "2026-08-20T15:42:26.090Z",
"updated_at": "2026-08-20T15:42:26.090Z",
"finished_at": "2026-08-20T15:42:35.778Z"
}
}
}Mutes
mute_create
Triggered when a player is muted.
{
"project_id": 1000,
"type": "mute_create",
"payload": {
"opts": {
"client_id": 501,
"reason": "Toxic",
"comment": "",
"expired_at": 1787242287700,
"proofs": [],
"chat_broadcast": false,
"target_steam_id": "76561198000000004"
}
}
}payload.opts.client_id: The ID of the staff member who issued the mute.payload.opts.reason: The mute reason.payload.opts.comment: An optional internal comment.payload.opts.expired_at: Unix timestamp (ms) when the mute expires.payload.opts.proofs: An array of proof file paths/URLs attached to the mute.payload.opts.chat_broadcast: Whether the mute was announced in chat.payload.opts.target_steam_id: The SteamID64 of the muted player.
mute_delete
Triggered when a player's mute is removed.
{
"project_id": 1000,
"type": "mute_delete",
"payload": {
"opts": {
"client_id": 501,
"chat_broadcast": true
},
"data": {
"id": 800001,
"project_id": 1000,
"client_id": 501,
"related_message": null,
"target_steam_id": "76561198000000004",
"reason": "Toxic",
"comment": "",
"proofs": [],
"created_at": "2026-08-20T15:41:36.145Z",
"expired_at": "2026-08-20T16:11:27.700Z",
"deleted_client_id": null,
"deleted_at": null
}
}
}payload.opts.client_id: The ID of the staff member who removed the mute.payload.opts.chat_broadcast: Whether the removal was announced in chat.payload.data.id: The unique ID of the mute.payload.data.related_message: The chat message that triggered the mute, if any.payload.data.target_steam_id: The SteamID64 of the muted player.payload.data.reason/comment/proofs: The mute's reason, comment, and proofs.payload.data.created_at/expired_at: ISO 8601 timestamps for creation and expiry.payload.data.deleted_client_id/deleted_at: Who removed the mute and when, if applicable.
Reports
report_create
Triggered when a report is submitted. payload.data.initiator and payload.data.target contain the full player profiles of the reporter and the reported player.
{
"project_id": 1000,
"type": "report_create",
"payload": {
"data": {
"id": 600001,
"server_id": 100,
"reason": "Cheating",
"message": "",
"initiator_steam_id": "76561198000000008",
"initiator": {
"steam_id": "76561198000000008",
"steam_name": "PlayerOne",
"steam_avatar": "https://avatars.akamai.steamstatic.com/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa_full.jpg",
"project_id": 1000,
"server_id": 100,
"ip": "203.0.113.13",
"ip_details": {
"country_code": "RU",
"country_name": "Russia",
"city": "Perm",
"provider": "PJSC \"Vimpelcom\"",
"proxy": false,
"updated_at": 1787155677813
},
"team": [],
"player_team": null,
"status": "online",
"created_at": 1782130655249,
"last_online_at": 1786902202508,
"last_no_license": false,
"last_language": "ru",
"steam": {
"avatar_update_time": 1787225920489,
"profile_private": false,
"profile_hours": 287,
"profile_update_time": 1787225920489,
"profile_next_update_time": 1787225920489
},
"steam_data": {
"avatar_hash": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
"profile_filled": true,
"avatar_small_url": "https://avatars.akamai.steamstatic.com/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa.jpg",
"avatar_medium_url": "https://avatars.akamai.steamstatic.com/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa_medium.jpg",
"avatar_full_url": "https://avatars.akamai.steamstatic.com/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa_full.jpg",
"visible": true,
"signed_at": 1731854268000,
"ban_data": {
"vac_ban": { "count": 0, "exists": false },
"game_ban": { "count": 0, "exists": false },
"community_ban": false,
"days_since_last_ban": 0
},
"hours_total": 287,
"hours_2week": 49,
"rust_hours_total": 287,
"rust_hours_2week": 49,
"created_at": 1780912647225,
"updated_at": 1787225920489
}
},
"target_steam_id": "76561198000000009",
"target": {
"steam_id": "76561198000000009",
"steam_name": "PlayerTwo",
"steam_avatar": "https://avatars.akamai.steamstatic.com/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb_full.jpg",
"project_id": 1000,
"server_id": 100,
"ip": "203.0.113.14",
"ip_details": {
"country_code": "KZ",
"country_name": "Kazakhstan",
"city": "Almaty",
"provider": "Kar-Tel LLC",
"proxy": false,
"updated_at": 1787233710154
},
"team": [],
"player_team": null,
"status": "online",
"created_at": 1743171650368,
"last_online_at": 1787235835838,
"last_no_license": false,
"last_language": "ru",
"steam": {
"avatar_update_time": 1787235898143,
"profile_private": true,
"profile_update_time": 1787235898143,
"profile_next_update_time": 1787235898143
},
"steam_data": {
"avatar_hash": "bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb",
"profile_filled": true,
"avatar_small_url": "https://avatars.akamai.steamstatic.com/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb.jpg",
"avatar_medium_url": "https://avatars.akamai.steamstatic.com/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb_medium.jpg",
"avatar_full_url": "https://avatars.akamai.steamstatic.com/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb_full.jpg",
"visible": false,
"signed_at": 1668334031000,
"ban_data": {
"vac_ban": { "count": 0, "exists": false },
"game_ban": { "count": 0, "exists": false },
"community_ban": false,
"days_since_last_ban": 0
},
"hours_closed_at": 1733411708145,
"created_at": 1733411708145,
"updated_at": 1787235898143
}
},
"total_reports": 1,
"total_reports_unique": 1,
"active_check_id": null,
"created_at": 1787240737551
}
}
}payload.data.id: The unique ID of the report.payload.data.server_id: The ID of the server the report was submitted from.payload.data.reason/message: The report reason and an optional additional message.payload.data.initiator_steam_id/target_steam_id: SteamID64 of the reporter and the reported player.payload.data.initiator/target: Full player profiles, including:steam_id,steam_name,steam_avatar: Steam identity info.ip,ip_details: The player's last known IP and geolocation/provider info.team,player_team: The player's current in-game team.status:online,offline,joining,queuedorafk.created_at,last_online_at: When the player was first seen and last online.last_no_license,last_language: License status and client language on last connect.steam,steam_data: Cached Steam profile data, including playtime and VAC/game/community ban history.
payload.data.total_reports/total_reports_unique: Total reports (and unique reporters) against the target.payload.data.active_check_id: The ID of an active check on the target, if any.payload.data.created_at: Unix timestamp (ms) when the report was created.
report_delete
Triggered when a report is deleted.
{
"project_id": 1000,
"type": "report_delete",
"payload": {
"opts": {
"target_steam_id": "76561198000000010",
"report_id": 600002
}
}
}payload.opts.target_steam_id: The SteamID64 of the player the report was about.payload.opts.report_id: The ID of the deleted report.
Signs
signage_create
Triggered when a sign is placed by a player. Shares the same shape as signage_delete; destroyed_at and related fields are null until the sign is removed.
{
"project_id": 1000,
"type": "signage_create",
"payload": {
"data": [
{
"project_id": 1000,
"server_id": 100,
"net_id": "123456",
"created_at": "2026-08-20T14:50:29.821Z",
"updated_at": "2026-08-20T15:52:17.286Z",
"destroyed_at": null,
"position": "(471.04,40.49,656.61)",
"square": "Q9",
"type": "sign.medium.wood",
"destroyed_client_id": null,
"wiped_at": null,
"liked_at": null,
"liked_by_client_id": null,
"variants": [
{
"id": 200001,
"project_id": 1000,
"server_id": 100,
"net_id": "123456",
"steam_id": "76561198000000011",
"url": "plugin-signs/1700000000001-example2.png",
"created_at": "2026-08-20T14:50:29.824"
},
{
"id": 200002,
"project_id": 1000,
"server_id": 100,
"net_id": "123456",
"steam_id": "76561198000000011",
"url": "plugin-signs/1700000000002-example3.png",
"created_at": "2026-08-20T15:52:17.29"
}
],
"players": [
{
"steam_id": "76561198000000011",
"project_id": 1000,
"created_at": "2025-01-29T15:43:19.248",
"last_server_id": 100,
"last_ip": "203.0.113.15",
"last_online_at": "2026-08-20T08:14:10.537",
"last_name": "PlayerFour",
"last_team": [],
"last_no_license": false,
"id": 300001,
"last_language": "ru"
}
],
"steam_datas": [
{
"steam_id": "76561198000000011",
"avatar_hash": "cccccccccccccccccccccccccccccccccccccccc",
"visible": true,
"signed_at": "2024-11-03T18:41:26",
"ban_data": {
"vac_ban": { "count": 0, "exists": false },
"game_ban": { "count": 0, "exists": false },
"community_ban": false,
"days_since_last_ban": 0
},
"rust_hours_total": 2804,
"rust_hours_2week": 147,
"created_at": "2026-02-08T06:33:10.242",
"updated_at": "2026-08-20T09:37:20.507",
"profile_filled": true
}
]
}
]
}
}payload.data[].variants: One entry per image drawn on the sign; a sign edited multiple times has multiple variants, each with its own artist andcreated_at.
See signage_delete below for the remaining field descriptions (shared shape).
signage_delete
Triggered when a sign is removed. payload.data is an array of the affected signs.
{
"project_id": 1000,
"type": "signage_delete",
"payload": {
"data": [
{
"project_id": 1000,
"server_id": 102,
"net_id": "654321",
"created_at": "2026-08-18T08:32:21.247Z",
"updated_at": "2026-08-18T08:32:21.247Z",
"destroyed_at": "2026-08-20T15:46:08.886Z",
"position": "(-1176.19,13.01,-1594.46)",
"square": "F24",
"type": "spinner.wheel.deployed",
"destroyed_client_id": null,
"wiped_at": null,
"liked_at": null,
"liked_by_client_id": null,
"variants": [
{
"id": 200003,
"project_id": 1000,
"server_id": 102,
"net_id": "654321",
"steam_id": "76561198000000012",
"url": "plugin-signs/1700000000003-example4.png",
"created_at": "2026-08-18T08:32:21.251"
}
],
"players": [
{
"steam_id": "76561198000000012",
"project_id": 1000,
"created_at": "2026-02-28T06:30:15.703",
"last_server_id": 101,
"last_ip": "203.0.113.16",
"last_online_at": "2026-08-19T13:07:38.903",
"last_name": "PlayerThree",
"last_team": [],
"last_no_license": false,
"id": 300002,
"last_language": "ru"
}
],
"steam_datas": [
{
"steam_id": "76561198000000012",
"avatar_hash": "dddddddddddddddddddddddddddddddddddddddd",
"visible": true,
"signed_at": "2025-07-14T10:14:43",
"ban_data": {
"vac_ban": { "count": 0, "exists": false },
"game_ban": { "count": 0, "exists": false },
"community_ban": false,
"days_since_last_ban": 0
},
"created_at": "2026-01-05T09:25:56.25",
"updated_at": "2026-08-19T12:22:10.856",
"hours_closed_at": "2026-01-05T09:25:56.25",
"profile_filled": true
}
]
}
]
}
}payload.data[].net_id: The in-game network ID of the sign.payload.data[].server_id: The ID of the server the sign was placed on.payload.data[].position/square: The world coordinates and grid square of the sign.payload.data[].type: The Rust prefab of the sign entity.payload.data[].created_at/updated_at/destroyed_at: Timestamps for placement, last edit, and removal.payload.data[].destroyed_client_id: The staff member who removed the sign via the panel, if applicable.payload.data[].wiped_at: When the sign's image was wiped, if applicable.payload.data[].liked_at/liked_by_client_id: Whether/when a staff member liked the sign.payload.data[].variants: The image(s) drawn on the sign, with the SteamID64 of the artist and the image URL.payload.data[].players: Cached profile info for the players involved (artists).payload.data[].steam_datas: Cached Steam profile data (avatar, ban history) for those players.
Staff
staff_edit
Triggered when a staff member's details are modified.
{
"project_id": 1000,
"type": "staff_edit",
"payload": {
"opts": {
"client_id": 502,
"permissions": ["Court_AuditRead"],
"is_immutable": false
}
}
}payload.opts.client_id: The ID of the staff member whose details were edited.payload.opts.permissions: The staff member's permission set after the edit.payload.opts.is_immutable: Whether the staff member's role is protected from further edits.
staff_delete
Triggered when a staff member is removed.
{
"project_id": 1000,
"type": "staff_delete",
"payload": {
"opts": {
"client_id": 502,
"initiator_client_id": 501
}
}
}payload.opts.client_id: The ID of the staff member who was removed.payload.opts.initiator_client_id: The ID of the staff member who performed the removal.
Payments
wallet_deposit
Triggered when the wallet is topped up.
{
"project_id": 1000,
"type": "wallet_deposit",
"payload": {
"opts": {
"amount": 100,
"reason": "Test",
"meta": {
"action": "deposite",
"method": "tinkoff",
"client_id": 501,
"project_id": 1000,
"transaction_id": 900200
}
},
"data": {
"wallet": {
"id": "11111111-1111-1111-1111-111111111111",
"amount": 101,
"created_at": "2023-12-21T14:38:06.729Z"
},
"transaction": {
"id": "22222222-2222-2222-2222-222222222222",
"wallet_from_id": null,
"wallet_to_id": "11111111-1111-1111-1111-111111111111",
"amount": 100,
"type": "in",
"reason": "Test",
"meta": {
"action": "deposite",
"method": "tinkoff",
"client_id": 501,
"project_id": 1000,
"transaction_id": 900200
},
"success": true,
"created_at": "2026-08-20T16:41:45.668Z"
}
}
}
}payload.opts.amount: The amount deposited.payload.opts.reason: The reason for the deposit.payload.opts.meta: Free-form metadata about how the deposit was made; shape depends onaction(e.g.depositepayments includemethodand an externaltransaction_id).payload.data.wallet.id: The unique ID of the wallet.payload.data.wallet.amount: The wallet's balance after the deposit.payload.data.wallet.created_at: When the wallet was created.payload.data.transaction.id: The unique ID of the transaction.payload.data.transaction.wallet_from_id/wallet_to_id: The source and destination wallet IDs (nullwhen money enters/leaves the system rather than another wallet).payload.data.transaction.amount: The transaction amount.payload.data.transaction.type:infor deposits,outfor withdrawals.payload.data.transaction.success: Whether the transaction succeeded.payload.data.transaction.created_at: When the transaction occurred.
wallet_withdraw
Triggered when funds are debited from the wallet. Shares the same shape as wallet_deposit, with wallet_from_id set and type set to out.
{
"project_id": 1000,
"type": "wallet_withdraw",
"payload": {
"opts": {
"type": "out",
"amount": 100,
"reason": "Test",
"meta": {
"type": "plus",
"action": "renewal",
"target": "court",
"project_id": 1000,
"renewal_interval": 24
}
},
"data": {
"wallet": {
"id": "11111111-1111-1111-1111-111111111111",
"amount": 1,
"created_at": "2023-12-21T14:38:06.729Z"
},
"transaction": {
"id": "33333333-3333-3333-3333-333333333333",
"wallet_from_id": "11111111-1111-1111-1111-111111111111",
"wallet_to_id": null,
"amount": 100,
"type": "out",
"reason": "Test",
"meta": {
"type": "plus",
"action": "renewal",
"target": "court",
"project_id": 1000,
"renewal_interval": 24
},
"success": true,
"created_at": "2026-08-20T16:41:55.189Z"
}
}
}
}Sessions
player_session_started
Fires when a player logs into the server. payload.data is an array since multiple sessions can start in the same batch.
{
"project_id": 1000,
"type": "player_session_started",
"payload": {
"data": [
{
"project_id": 1000,
"server_id": 100,
"steam_id": "76561198000000013",
"steam_name": "PlayerFive",
"client_type": "official",
"language": "ru"
}
]
}
}payload.data[].server_id: The ID of the server the player joined.payload.data[].steam_id/steam_name: The player's SteamID64 and current Steam name.payload.data[].client_type: The Rust client used to connect (e.g.official).payload.data[].language: The client's configured language.
player_session_ended
Fires when a player leaves the server.
{
"project_id": 1000,
"type": "player_session_ended",
"payload": {
"data": {
"project_id": 1000,
"server_id": 100,
"steam_id": "76561198000000014",
"ip": "203.0.113.17",
"is_license": true,
"connected_at": "2026-08-20T15:23:40.794Z",
"joined_at": "2026-08-20T15:24:43.631Z",
"disconnected_reason": "Timed Out",
"disconnected_status": "online",
"disconnected_at": "2026-08-20T15:49:44.781Z"
}
}
}payload.data.ip: The IP address the player connected from.payload.data.is_license: Whether the player owns a valid Rust license.payload.data.connected_at/joined_at: When the player connected and finished loading in.payload.data.disconnected_reason: The disconnect reason reported by the server (e.g.Timed Out).payload.data.disconnected_status: The player's status at the time of disconnect.payload.data.disconnected_at: When the session ended.
Other
audit_event
Triggered when an audit event is recorded in the system.
{
"project_id": 1000,
"type": "audit_event",
"payload": {
"data": {
"id": 400001,
"project_id": 1000,
"client_id": 501,
"type": "StaffEdit",
"meta": {
"target_client_id": 503,
"permissions_added": ["Court_PlayerReadDetails", "Court_PlayerBanRead"],
"permissions_removed": ["Court_PlayerReadDetails", "Court_PlayerBanRead", "Court_AuditRead"]
},
"created_at": "2026-08-20T15:51:42.993Z"
}
}
}payload.data.id: The unique ID of the audit log entry.payload.data.client_id: The staff member who performed the audited action.payload.data.type: The kind of action recorded (e.g.StaffEdit).payload.data.meta: Action-specific details; forStaffEditthis includestarget_client_idand the permissions added/removed.payload.data.created_at: ISO 8601 timestamp of the event.
player_kill_create
Triggers when a player is killed.
{
"project_id": 1000,
"type": "player_kill_create",
"payload": {
"data": {
"kill": {
"project_id": 1000,
"server_id": 101,
"initiator_steam_id": "76561198000000015",
"target_steam_id": "76561198000000016",
"distance": 9.976598,
"game_time": "14:41:00",
"kill_bone": "limbs",
"weapon": "rifle.ak",
"hit_history_id": "ea92ec8c-4468-4dec-8ae9-d2d37afa26ff",
"connected_steam_ids": ["76561198000000015", "76561198000000016"]
},
"hits": "[{\"time\":0,\"attacker_steam_id\":\"76561198000000015\",\"target_steam_id\":\"76561198000000016\",\"attacker\":\"player\",\"target\":\"you\",\"weapon\":\"ak47u\",\"ammo\":\"riflebullet\",\"bone\":\"right knee\",\"distance\":9.98,\"hp_old\":11,\"hp_new\":5.64,\"info\":\"killed\",\"proj_hits\":0,\"pi\":1,\"proj_travel\":0.0266042631,\"pm\":0,\"desync\":18,\"ad\":false}]"
}
}
}payload.data.kill.initiator_steam_id/target_steam_id: The SteamID64 of the killer and the victim.payload.data.kill.distance: The distance (meters) between killer and victim at the fatal hit.payload.data.kill.game_time: The in-game clock time when the kill occurred.payload.data.kill.kill_bone: The hitbox that caused the kill.payload.data.kill.weapon: The weapon prefab used.payload.data.kill.hit_history_id: An ID linking this kill to its detailed hit history.payload.data.kill.connected_steam_ids: SteamID64s of players connected/observing at the time (used for hit validation).payload.data.hits: A JSON-encoded string array of individual hit events leading up to the kill, each withattacker_steam_id,target_steam_id,weapon,ammo,bone,distance,hp_old,hp_new,info, and desync/projectile diagnostics.
sleeping_bag_create
Triggered when a player places a sleeping bag.
{
"project_id": 1000,
"type": "sleeping_bag_create",
"payload": {
"opts": {
"project_id": 1000,
"server_id": 100,
"initiator_steam_id": "76561198000000017",
"target_steam_id": "76561198000000018",
"position": "(-288.62,42.86,-564.82)",
"are_friends": false
}
}
}payload.opts.project_id: The ID of the project.payload.opts.server_id: The ID of the server where the bag was placed.payload.opts.initiator_steam_id: The SteamID64 of the player who placed the bag.payload.opts.target_steam_id: The SteamID64 of the player the bag belongs to.payload.opts.position: The in-game coordinates(x,y,z)where the bag was placed.payload.opts.are_friends: Whether the initiator and target are friends/teammates.
player_message_create
Triggered when a player sends a message. payload.data is an array of messages.
{
"project_id": 1000,
"type": "player_message_create",
"payload": {
"data": [
{
"unique_id": "a58ff74b035b",
"type": "team",
"project_id": 1000,
"server_id": 100,
"initiator_id": "76561198000000019",
"initiator_name": "PlayerSix",
"initiator_avatar": "https://avatars.akamai.steamstatic.com/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee.jpg",
"target_id": null,
"target_name": null,
"target_avatar": null,
"text": "1",
"created_at": "2026-08-20T15:52:36.700Z"
}
]
}
}payload.data[].unique_id: A unique ID for the message.payload.data[].type: The chat channel the message was sent in (e.g.team, direct messages use other values).payload.data[].server_id: The ID of the server the message was sent on.payload.data[].initiator_id/initiator_name/initiator_avatar: The sender's SteamID64, name, and avatar.payload.data[].target_id/target_name/target_avatar: The recipient's SteamID64, name, and avatar (nullfor non-direct messages).payload.data[].text: The message content.payload.data[].created_at: ISO 8601 timestamp when the message was sent.
player_alert_create
Triggered when an alert is created for a player.
{
"project_id": 1000,
"type": "player_alert_create",
"payload": {
"data": {
"id": 500001,
"custom_id": null,
"project_id": 1000,
"server_id": 101,
"type": "custom_api",
"category": "Trade • Трейды",
"meta": {
"msg": "76561198000000020 traded with 76561198000000021",
"data": {
"bulat#bloodrust": { "oretea.pure": 3 }
},
"custom_icon": "https://www.rustedit.io/images/imagelibrary/wrappedgift.png"
},
"hide_in_table": false,
"created_at": "2026-08-20T15:52:56.720Z",
"resolve_at": null
}
}
}payload.data.id: The unique ID of the alert.payload.data.custom_id: An external ID for the alert, if it was created via the custom API.payload.data.server_id: The ID of the server the alert relates to.payload.data.type: The alert source (e.g.custom_api,join_with_ip_ban).payload.data.category: The alert's display category.payload.data.meta: Alert-specific data, shape depends ontype(e.g.custom_apialerts include a free-formmsg, structureddata, and an optionalcustom_icon; see below for thejoin_with_ip_banshape).payload.data.hide_in_table: Whether the alert is hidden from the alerts table in the panel.payload.data.created_at/resolve_at: When the alert was created and resolved (nullwhile unresolved).
Another example, triggered when a player connects using the IP of an existing IP ban:
{
"project_id": 1000,
"type": "player_alert_create",
"payload": {
"data": {
"id": 500002,
"custom_id": null,
"project_id": 1000,
"server_id": 101,
"type": "join_with_ip_ban",
"category": "",
"meta": {
"ip": "203.0.113.18",
"ban_id": 900005,
"steam_id": "76561198000000022"
},
"hide_in_table": false,
"created_at": "2026-08-20T16:59:49.243Z",
"resolve_at": null
}
}
}payload.data.meta.ip: The IP address the player connected from.payload.data.meta.ban_id: The ID of the IP ban that matched.payload.data.meta.steam_id: The SteamID64 of the player who connected.
custom_action_execute
Triggered when a custom action is executed.
{
"project_id": 1000,
"type": "custom_action_execute",
"payload": {
"data": {
"request": {
"steam_id": "76561198000000009",
"command": {
"id": 2001,
"project_id": 1000,
"name": "Player Info",
"group": "Permissions",
"commands": ["grant.info {steam_id}"],
"allow_offline": true,
"allow_server_choose": true,
"force_confirmation": false,
"order": 14,
"active": true,
"access": "admin",
"created_at": "2025-06-14T15:36:23.423Z",
"deleted_at": null
},
"server_id": 100,
"args": {
"steam_id": "76561198000000009"
}
},
"response": {
"data": [
{
"success": true,
"command": "grant.info 76561198000000009",
"data": "Player data \"PlayerTwo (76561198000000009)\":\nGroups: none\nPrivileges: none"
}
],
"commands": ["grant.info 76561198000000009"],
"server_id": 100,
"command_history_id": 900100
}
}
}
}payload.data.request.steam_id: The SteamID64 the action was executed against.payload.data.request.command: The custom action's definition, including itsname,group, templatecommands(with{steam_id}placeholders), and access level.payload.data.request.server_id: The ID of the server the action was executed on.payload.data.request.args: The arguments used to fill the command template's placeholders.payload.data.response.data: The result of each executed command, including whether itsuccess-eded and any output.payload.data.response.commands: The fully resolved commands that were run.payload.data.response.command_history_id: An ID referencing this execution in the command history log.