Actions
Every action step an event or Quick Deck pad can run, with its fields, ranges and defaults
Every step you can add under Do this in the event editor, or to a Quick Deck pad, with each field's range and default.
How a list runs
Run the steps appears once a list has more than one step.
| Choice | What happens |
|---|---|
| In order (the default) | One after another, each after its own delay |
| All at once | All start together; each still waits its own delay |
| One at random | One step, picked by weight. Each gift repeat picks again |
Every step also has these:
| Field | Range | Default |
|---|---|---|
| Wait first (ms) | 0–600,000 | 0 |
| Weight (One at random only) | 0–100; 0 is never picked | 1 |
| On/off switch | A switched-off step is skipped | On |
The editor will not save a switched-on step that is not set up, or a random pick whose steps all weigh 0. Right-click a step to duplicate it, move it, change it to another kind, or use Copy step and Paste step to carry it to another event or pad.
VTube Studio
These steps run only while VTube Studio is connected. Each one checks for itself, so the other steps in the list still run while it is closed.
| Step | Fields |
|---|---|
| Trigger a hotkey | VTS Hotkey; Duration (s) presses it again to switch it back off |
| Move Model | Position X, Position Y, Rotation (°), Size, Transition (s), Hold (s), Return to original position |
| VFX Preset | VFX Preset Name, Fade Time (seconds), Duration (seconds) |
| Set an expression | Expression, What it does, Fade (s), Turn off after (s) |
| Tint the model | What to paint, Colour, Opacity, Rainbow, Scene lighting, Reset after (s) |
| Place an item | What to place, Item file or Image, Position X, Position Y, Size, Layer, Fade (s), Pin to an ArtMesh, Pin spot, Remove after (s) |
| Switch the model | Model, Switch back after (s) |
| Move a parameter | Parameter, Value, How, For (s), Shape, Takeover |
Ranges
| Field | Range | Default |
|---|---|---|
| Position X, Position Y (Move Model) | −1 to 1; ±1 is the screen edge | 0 |
| Rotation (°) | −360 to 360; positive is clockwise | 0 |
| Size (Move Model) | −100 to 100; 0 keeps it | 0 |
| Transition (s) | 0–2 | 0.5 |
| Fade Time (seconds), Fade (s) | 0–2 | VTube Studio's own |
| Opacity | 0–255 | Opaque |
| Scene lighting | 0–1 | 1 |
| Size (Place an item) | 0–1, VTube Studio's item scale | — |
| Layer | −30 to 30; negative is behind the model | — |
| Value (Move a parameter) | −1,000,000 to 1,000,000 | 0 |
| For (s) | 0 or more | 0.4 |
| Takeover | 0–1 | — |
| Any duration, hold or "after" field | Up to 86,400 seconds (a day); empty keeps it on | Empty |
Choices
| Field | Choices |
|---|---|
| What it does (Set an expression) | Turn on, Turn off, Toggle |
| What to paint | The whole model, ArtMesh names containing, Tags containing, Picked in VTube Studio |
| What to place | An item from VTube Studio, An image of your own |
| Pin spot | The middle, A random spot |
| How | Add to face tracking, Take over from tracking |
| Shape | Hold, then stop, Fade out evenly, Drop off quickly, Wobble out |
An image of your own must be under 5 MB, and VTube Studio asks once whether Vfinity may load images as items. VTube Studio loads a model at most every 2 seconds. Takeover applies to Take over from tracking only.
Sound, speech and media
| Step | Field | Range | Default |
|---|---|---|---|
| Play a sound | Sound pool | Up to 10 sounds, each with a Weight | One sound |
| Volume | 0–100% | 100% | |
| Play through | OBS only, This app only, OBS and this app | This app only | |
| Wait until finished | Gives up after 30 seconds | Off | |
| Speak a custom line | Text to speak | Up to 300 characters, with variables | Empty |
| Voice ID override | A voice ID from your TTS provider | Your TTS voice | |
| Own volume and speed | On or off; off follows the Events volume and speed in SettingsAudioVoice | Off | |
| Volume | 0–100% | The Events volume | |
| Speed | −50% to +100%; some providers can't change speed | The Events speed | |
| Wait until finished | On or off | On | |
| Characters per minute (0 = unlimited) | 0–100,000 | 600 | |
| Show an image or video | Image, GIF or video | An uploaded image, GIF, WebP, WebM or MP4 | — |
| Show for (seconds; 0 = video length) | 0–300 | 5 | |
| Fit | Fit entire image, Fill frame | Fit entire image | |
| Mute video audio | On or off | On | |
| Video volume | 0–100% | 100% | |
| Accompanying sound | A sound, its volume and where it plays | None, OBS only | |
| Position & size, Animation | Placement, and how it comes and goes | Pop | |
| Wait until finished | On or off | Off |
With several sounds in the pool, one is picked per run by weight; a weight of 0 never plays. Characters per minute caps one event's speech across all viewers, which keeps a paid voice's bill in hand. A line's own Volume and Speed apply to that step only; chat keeps its own.
Media shows on the Actions media source in OBS
(#overlay-actions). A 0 duration plays a video to its end, up to two minutes.
A video's own sound plays in every copy of the source; use Accompanying
sound for audio that plays once.
Throwing
| Field | Range or choices | Default |
|---|---|---|
| Throw items | Configured item, Viewer avatar, Chat emote | Configured item |
| Throw configuration (optional) | A gift's throw setup from the Throwing tab | Default item |
| Item count | 1–50 | 1 |
| Show viewer name | On or off | On |
Other apps
| Step | Fields | Needs |
|---|---|---|
| Control OBS | What it does, then Scene, Source, Filter or Text source and Text; State; Put back after | OBS connected in SettingsConnectionsOBS Studio |
| HTTP webhook | URL / action ID, HTTP method, JSON body / arguments, Authorization header (kept out of shared backups) | Nothing |
| Streamer.bot action | URL / action ID, Refresh action list, JSON body / arguments | Streamer.bot connected |
| Press keys | Key combination, Hold for (milliseconds) | Allow Events to press keys in SettingsAutomation & rulesKeyboard actions |
| Field | Range or choices | Default |
|---|---|---|
| What it does (Control OBS) | Switch scene, Show or hide a source, Turn a filter on or off, Write into a text source | Switch scene |
| State | Turn on, Turn off, Toggle | Turn on |
| Put back after | Seconds; empty keeps the change | Empty |
| HTTP method | GET, POST, PUT, PATCH, DELETE | POST |
| JSON body / arguments | A JSON object, up to 32,768 characters; not sent with GET | {} |
| Key combination | Up to 5 keys: letters, digits, Ctrl, Alt, Shift, Meta, Enter, Escape, Tab, Space, Backspace, Delete, Home, End, Page Up, Page Down, the arrows, F1–F12 | — |
| Hold for (milliseconds) | 20–5,000 | 100 |
A webhook must be an http or https address and gives up after 10 seconds. The
OBS fields list your scenes, sources and filters while OBS is connected, and
take a typed name while it is not. Press keys sends keys to whichever app has
focus; a panic releases any key still held.
Flow
| Step | Fields | Range | Default |
|---|---|---|---|
| Wait | Wait (s) | 0–600 | 1 |
| Group | The group runs | In order, All at once, One at random; up to 20 steps; no group inside a group | All at once |
| App command | App command, then Value, Value (JSON), Mapping to run or Choose a Quick Deck pad | Any command in Commands | — |
App command asks for the value its command needs. Events that set each other off stop after four hops, or once one trigger has set off twenty runs.
A Blueprint event runs every other step from an Action node, but has no Wait or Group: its Delay, Sequence, Parallel and Random nodes do that work.