Commands
Send a command with POST /api/actions/<command> (HTTP) or with a trigger message (WebSocket).
Main window: the command needs the main MyHUD window to be open and signed in. If it is closed, the command fails with 503 unavailable.
To get this list from MyHUD itself, with the JSON Schema of each payload, call GET /api/actions.
HUD
| Command | Payload | Effect |
|---|---|---|
toggle_scoreboard | — | Opens or closes the scoreboard, like the hotkey (F9 by default). |
show_scoreboard / hide_scoreboard | — | Shows or hides the scoreboard. |
toggle_veto | — | Opens or closes the veto panel, like the hotkey (F7 by default). |
show_veto / hide_veto | — | Shows or hides the veto panel. |
toggle_stats | — | Opens or closes the stats of the player set in MyHUD. |
show_stats / hide_stats | — | Shows or hides the stats of the player set in MyHUD. |
show_player_stats | see below | Shows the stats of a player by HUD slot. |
toggle_overlay | — | Opens or closes the HUD overlay window. |
show_overlay / hide_overlay | — | Opens or closes the HUD overlay window. |
reload_overlay | — | Reloads the HUD overlay window. |
set_color_preset | { presetId } | Applies a color preset. Ids come from GET /api/presets. |
The show_* and hide_* commands do nothing when the panel is already in that state.
show_player_stats
| Field | Type | Required | Description |
|---|---|---|---|
slot | number, 0 to 9 | yes | HUD slot: 1 to 9, and 0 for the tenth player. |
provider | faceit, leetify, live | no | Source of the stats. |
durationMs | number | no | How long the panel stays open, in milliseconds. |
name | string | no | A note for you. MyHUD does not use it. |
Veto
All veto commands need the main window. See the Veto guide.
| Command | Payload | Result |
|---|---|---|
import_match_veto | see below | { provider, teamA, teamB, boFormat, steps, matchTime?, applied, shown } |
veto_reveal | { mode?, instant? } | { revealed, total, instant } |
reset_veto | — | { cleared: true } |
veto_start | see below | session status |
veto_select | { map } | session status |
veto_undo | — | session status |
veto_status | — | session status |
veto_cancel | — | { active: false } |
veto_set | see below | { complete: true, steps } |
import_match_veto
| Field | Type | Default | Description |
|---|---|---|---|
url | string | — | FACEIT room URL or HLTV match URL. |
faceitMatchId | string | — | FACEIT match id. Send url or faceitMatchId, not both. |
apply | boolean | true | false reads the veto without changing the match. |
show | boolean | false | true opens the veto panel after the import. |
Answers 409 conflict while the veto is not available yet.
veto_reveal
| Field | Values | Description |
|---|---|---|
mode | next, prev, reset, all | Shows the next step, hides the last one, hides all, or shows all. |
instant | boolean | true shows all the steps at once. false turns the progressive reveal on. |
Send at least one field.
veto_start
| Field | Type | Required | Description |
|---|---|---|---|
boFormat | bo1, bo3, bo5 | yes | Series format. |
teamA, teamB | { name, logo? } | yes | The two teams. |
firstBanner | A, B | no | Team that bans first. Default: A. |
mapPool | array of map names | no | Default: the map pool of the veto page. |
Starting a session replaces the session in progress.
Session status
veto_start, veto_select, veto_undo and veto_status return:
{
"active": true,
"boFormat": "bo3",
"teamA": { "name": "Vitality" },
"teamB": { "name": "NAVI" },
"complete": false,
"nextStep": { "type": "pick", "team": "A" },
"remainingMaps": ["de_anubis", "de_dust2", "de_inferno", "de_mirage", "de_train"],
"steps": [
{ "type": "ban", "team": "A", "map": "de_nuke" },
{ "type": "ban", "team": "B", "map": "de_ancient" }
]
}nextStep is null when the veto is complete. Without a session, the status is { "active": false }.
MyHUD answers with the full map names (de_mirage). You can send mirage or de_mirage.
veto_set
| Field | Type | Description |
|---|---|---|
boFormat | bo1, bo3, bo5 | Series format. |
teamA, teamB | { name, logo? } | The two teams. |
steps | array | Each step: { type: "ban" | "pick" | "decider", team?: "A" | "B", map }. No team for the decider. |
Match
All match commands need the main window. They return the match summary, like get_match. See the Teams and scores guide.
| Command | Payload |
|---|---|
get_match | — |
set_teams | { teamA: { name, logo? }, teamB: { name, logo? }, boFormat? } |
set_map_result | { map, scoreA, scoreB, finished? } |
set_event_name | { name } (120 characters max) |
set_team_format | { format }: auto, 1v1, 2v2, 3v3, 5v5 |
- Team names: 64 characters max.
map: map number in the series (1 to 5) or map name (mirage).scoreA,scoreB: 0 to 99.
Scenes and production
See the HUD, scenes and replay guide.
| Command | Payload | Main window | Result |
|---|---|---|---|
show_sen_scene | { scene }: versus, talents, sponsors, mapRecap | no | { scene } |
hide_sen_scene | — | no | { scene: null } |
set_sponsor_overlay | { enabled?, position? } | yes | { enabled, position } |
set_event_badge | { enabled?, position? } | yes | { enabled, position } |
set_smart_observer | { enabled?, mode?, cinematicEnabled? } | yes | { enabled, mode, cinematicEnabled } |
save_replay | — | no | { saving: true } |
position:top-left,top-center,top-right,bottom-left,bottom-center,bottom-right.mode:autoorsuggest.- For
set_sponsor_overlay,set_event_badgeandset_smart_observer, send at least one field. set_smart_observerwithenabled: trueneeds an active subscription.save_replayneeds OBS to be connected.
