Skip to content

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:

json
{
  "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).

json
{
  "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 (0 if 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.

json
{
  "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 (see ban_create for 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.

json
{
  "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 (see ban_create for 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: false once the ban has been removed.

Checks ​

check_started ​

Triggered when a player check is initiated.

json
{
  "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, or null while 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.

json
{
  "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.

json
{
  "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.

json
{
  "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.

json
{
  "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, queued or afk.
    • 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.

json
{
  "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.

json
{
  "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 and created_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.

json
{
  "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.

json
{
  "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.

json
{
  "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.

json
{
  "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 on action (e.g. deposite payments include method and an external transaction_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 (null when money enters/leaves the system rather than another wallet).
  • payload.data.transaction.amount: The transaction amount.
  • payload.data.transaction.type: in for deposits, out for 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.

json
{
  "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.

json
{
  "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.

json
{
  "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.

json
{
  "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; for StaffEdit this includes target_client_id and the permissions added/removed.
  • payload.data.created_at: ISO 8601 timestamp of the event.

player_kill_create ​

Triggers when a player is killed.

json
{
  "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 with attacker_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.

json
{
  "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.

json
{
  "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 (null for 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.

json
{
  "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 on type (e.g. custom_api alerts include a free-form msg, structured data, and an optional custom_icon; see below for the join_with_ip_ban shape).
  • 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 (null while unresolved).

Another example, triggered when a player connects using the IP of an existing IP ban:

json
{
  "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.

json
{
  "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 its name, group, template commands (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 it success-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.