
First we are looking for the request we want to make. You can find your exact request type in the VTS API documentation. In our example, we'll do a [**ExpressionStateRequest**](https://github.com/DenchiSoft/VTubeStudio?tab=readme-ov-file#requesting-current-expression-state-list).
We create the subaction `Integrations -> VStudio -> Send Raw Request`. The `Request` field of the subaction gets the `messageType` key shown in the documentation. That's the area marked in orange.


3. Data key
The actual big input area is the `data` key, marked in yellow. But here we only copy everything within (and including) the curly brackets.
::tip
If the request shown in the documentation doesn't have a `data` key (like the [**CurrentModelRequest**](https://github.com/DenchiSoft/VTubeStudio?tab=readme-ov-file#getting-the-currently-loaded-model)), then you just do empty curly brackets as the input: `{}`
::
4. Replace eventual placeholders
For the `ExpressionStateRequest`, we are looking for a specific expression of ours which is just called `test`, so we replace `myExpression_optional_1.exp3.json` with `test.exp3.json`. So in case you have to specify certain values, make sure to replace the placeholders.
5. Test action
Now we are ready to test the request by either hitting "Test" on the subaction or just running the entire action *(running the entire action would populate `%variables%` if we used any in the request)*.


6. Check response variables
We can check the populated variables in the response of the subaction or in the Action History after running the action.
7. Done!
Name of the raw request (optional)
Prefix of the populated variables, vtsRaw by default. For example vtsRaw.data.modelName
Exact name of the request
The JSON request
| Name | Type | Description |
|---|---|---|
Example Value: GenericUserdisplay name of the warned user | ||
Variables generated by all triggers and available within all action executions. |
public string VTubeStudioSendRawRequest(string requestType, string data)