# Welcome

### HTTP & JSON Utility Plugin Documentation V4.7.0!

Welcome to the main hub for **HTTP & JSON Utility Plugin** Documentation! for Unreal Engine. This space provides access to all sections of the documentation. To begin, select a card below to view the desired documentation.

### Documentation selection

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td>General Utility</td><td></td><td></td><td><a href="/pages/cEHgDv7NGBquDGHeLyQ4">/pages/cEHgDv7NGBquDGHeLyQ4</a></td></tr><tr><td>JSON Utility</td><td></td><td></td><td><a href="/pages/WFglMhPKidrMjoTacMCw">/pages/WFglMhPKidrMjoTacMCw</a></td></tr><tr><td>JSON SET</td><td></td><td></td><td><a href="/pages/ebQQ7xLXZ1olxEkox4L1">/pages/ebQQ7xLXZ1olxEkox4L1</a></td></tr><tr><td>JSON GET</td><td></td><td></td><td><a href="/pages/EMxPMrxlROUWkerXxqio">/pages/EMxPMrxlROUWkerXxqio</a></td></tr><tr><td>JSON Pure</td><td></td><td></td><td><a href="/pages/0mPiGM0sEidNeMuppayF">/pages/0mPiGM0sEidNeMuppayF</a></td></tr><tr><td>HTTP</td><td></td><td></td><td><a href="/pages/BqY720ZGlp576fobevAq">/pages/BqY720ZGlp576fobevAq</a></td></tr><tr><td>WebSocket's</td><td></td><td></td><td><a href="/pages/dDE2x2ayBamSa5jRrFGu">/pages/dDE2x2ayBamSa5jRrFGu</a></td></tr><tr><td>Structures (Structs)</td><td></td><td></td><td><a href="/pages/5XCpSbm8inRgh38p8Goh">/pages/5XCpSbm8inRgh38p8Goh</a></td></tr></tbody></table>

{% hint style="info" %}

### Helpful Links

* **Youtube Tutorials -** [**https://www.youtube.com/@U-Forge/videos**](https://www.youtube.com/@U-Forge/videos)
* **Discord Server -** [**https://discord.gg/zjduQ7ZQNS**](https://discord.gg/zjduQ7ZQNS)
* **Showcase project download** - <https://drive.google.com/file/d/1YSVNfWrD7moux_NJgnvIY9q0uM-31KT1/view?usp=sharing>
* **Gumroad Product** - <https://uforge.gumroad.com/l/HTTPJSONUtility>
* **Fab Marketplace Product** - <https://www.fab.com/listings/0056a97e-71c9-4870-a82c-53fe1fce94b2>
  {% endhint %}


# General Utility

## ASYNC Nodes

### ASYNC Load Binary File From Disk

<div data-full-width="false"><figure><img src="/files/Rur2cLQMj6cAHXgVhCo3" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## ASYNC Load Binary File From Disk

## Overview

Warning: Previewing the "**Out Binary Data**" array may cause lag. The array can be extremely large, depending on the file size. This node lets you load any binary file from your machine into Unreal Engine as a binary array.

## Inputs

* [File Struct](/doc-http-json/structs#json-http-file-data) - The File struct contains details needed to load a file, including its **path** and **name**. Ensure the file name also includes its extension.
*

## Outputs

* **On Success** – Execute logic from here only when a file loads successfully
* **On Fail** – Execute logic from here only if file loading fails.
* **Success** – Indicates success status: true or false, based on file loading results.
* **Out Binary Data** – Provides the loaded binary data of the chosen file.
  {% endhint %}

***

### ASYNC Save Binary File To Disk

<div data-full-width="false"><figure><img src="/files/ERHsFuXBiuH3BGbKFDqZ" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## ASYNC Save Binary File To Disk

## Overview

Warning: Previewing the "**File Binary Data**" array may cause lag. The array can be extremely large, depending on the file size. This node lets you save any binary file from Unreal Engine directly to the users machine.

## Inputs

* **File Binary Data -** An array that contains the binary data of the file to be saved.
* [File Struct](/doc-http-json/structs#json-http-file-data) - The File struct contains details needed to load a file, including its **path** and **name**. Ensure the file name also includes its extension.

## Outputs

* **On Success** – Execute logic from here only when a file saves successfully
* **On Fail** – Execute logic from here only if file saving fails.
* **Success** – Indicates success status: true or false, based on file saving results.
  {% endhint %}

***

### ASYNC Load Text File From Disk

<div data-full-width="false"><figure><img src="/files/TaumkUNISkyVWQNz5FJJ" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## ASYNC Load Text File From Disk

## Overview

This node enables you to load any text file from the users machine directly into Unreal Engine as string data.

## Inputs

* [File Struct](/doc-http-json/structs#structs) - The File struct contains details needed to load a file, including its **path** and **name**. Ensure the file name also includes its extension.

## Outputs

* **On Success** – Execute logic from here only when a file loads successfully.
* **On Fail** – Execute logic from here only if file loading fails.
* **Success** – Indicates success status: true or false, based on file loading results.
* Loaded Data - The loaded text data of the specified text file.
  {% endhint %}

***

### ASYNC Save Text File To Disk

<div data-full-width="false"><figure><img src="/files/cfDhiSVXyKRtqO19Cz1C" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## ASYNC Save Text File To Disk

## Overview

This node allows you to save any string text data from Unreal&#x20;Engine directly to the user's machine.

## Inputs

* **raw data** - The string that will be saved to the user's machine, with the file type determined by the file extension specified in the "**File**" struct. This can be any data ranging from raw string, to JSON files.
* [File Struct](/doc-http-json/structs#structs) - The File struct contains details needed to load a file, including its **path** and **name**. Ensure the file name also includes its extension.

## Outputs

* **On Success** – Execute logic from here only when a file saves successfully.
* **On Fail** – Execute logic from here only if file saving fails.
* **Success** – Indicates success status: true or false, based on file save results.
  {% endhint %}

***

## General Nodes

### Load Binary File From Disk

<div data-full-width="false"><figure><img src="/files/ALMtS9Kc2NYJxlkmc1tV" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## Load Binary File From Disk

## Overview

Warning: Previewing the "**Out Binary Data**" array may cause lag. The array can be extremely large, depending on the file size. This node lets you load any binary file from your machine into Unreal Engine as a binary array.

As this is not a ASYNC node, meaning it will pause logic execution until the file successfully loads or fails.

## Inputs

* [File Struct](/doc-http-json/structs#json-http-file-data) - The File struct contains details needed to load a file, including its **path** and **name**. Ensure the file name also includes its extension.

## Outputs

* **Success** – Indicates success status: true or false, based on file loading results.
* **Out Binary Data** – Provides the loaded binary data of the chosen file.
  {% endhint %}

***

### Load Text File From Disk

<div data-full-width="false"><figure><img src="/files/rI8S3Zq9kUVu3o072Myf" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## Load Text File From Disk

## Overview

This node enables you to load any text file from the users machine directly into Unreal Engine as string data.

As this is not a ASYNC node, meaning it will pause logic execution until the file successfully loads or fails.

## Inputs

* [File Struct](/doc-http-json/structs#json-http-file-data) - The File struct contains details needed to load a file, including its **path** and **name**. Ensure the file name also includes its extension.

## Outputs

* **Success** – Indicates success status: true or false, based on file loading results.
* Loaded Data - The loaded text data of the specified text file.
  {% endhint %}

***

### Save Binary File To Disk

<div data-full-width="false"><figure><img src="/files/OjsFUYx6LcpaQ1QsNfdn" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## Save Binary File To Disk

## Overview

Warning: Previewing the "**File Binary Data**" array may cause lag. The array can be extremely large, depending on the file size. This node lets you save any binary file from Unreal Engine directly to the users machine.

As this is not a ASYNC node, meaning it will pause logic execution until the file successfully loads or fails.

## Inputs

* **File Binary Data -** An array that contains the binary data of the file to be saved.
* [File Struct](/doc-http-json/structs#json-http-file-data) - The File struct contains details needed to load a file, including its **path** and **name**. Ensure the file name also includes its extension.

## Outputs

* **Success** – Indicates success status: true or false, based on file saving results.
  {% endhint %}

***

### Save Text File To Disk

<div data-full-width="false"><figure><img src="/files/mHP0xqZQSTgFN4GljIXC" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## Save Text File To Disk

## Overview

This node allows you to save any string text data from Unreal&#x20;Engine directly to the user's machine.

As this is not a ASYNC node, meaning it will pause logic execution until the file successfully loads or fails.

## Inputs

* **raw data** - The string that will be saved to the user's machine, with the file type determined by the file extension specified in the "**File**" struct.
* [File Struct](/doc-http-json/structs#json-http-file-data) - The File struct contains details needed to load a file, including its **path** and **name**. Ensure the file name also includes its extension.

## Outputs

* **Success** – Indicates success status: true or false, based on file save results.
  {% endhint %}

***

### Delete File From Disk

<div data-full-width="false"><figure><img src="/files/yLNhxLZLkS9rVx9GgNVS" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Delete File From Disk

## Overview

This node allows you to delete files from the user's machin&#x65;**.** Use it responsibly and ensure that you only remove files that are safe and intended to be deleted. It is your responsibility to verify that each file is appropriate to remove.

## Inputs

* [File Struct](/doc-http-json/structs#json-http-file-data) - The File struct contains details about the file you wish to remove, including its **path** and **name**. Ensure the file name also includes its extension.
* **Must Exist** - Ensure that the file you intend to remove exists before attempting deletion. If the file does not exist on the user's machine, no action will be taken.
* **Even Read Only** - Decide whether you want to allow the removal of **read-only** files. When this option is enabled, files marked as read-only can also be deleted.
* **Quiet** - This option determines whether an error message should appear if the file deletion fails for any reason. When enabled, debug logs will be printed; when disabled, no output will be shown.

## Outputs

* **Success** – Indicates success status: true or false, based on if the file was deleted.
  {% endhint %}

***

## Pure Nodes

### Check If File Exists

<div data-full-width="false"><figure><img src="/files/KQc3aNNA5Nb82ppRYDv6" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## Check If File Exists

## Overview

This node lets you verify the existence of a specific file on the user's machine. It can be located anywhere, not limited to project files, as long as the file path and name of the file are valid.

## Inputs

* [File Struct](/doc-http-json/structs#json-http-file-data) - The File struct contains details needed to load a file, including its **path** and **name**. Ensure the file name also includes its extension.

## Outputs

* **Success** – Indicates success status: true or false, based on if the file was found and it exists.
  {% endhint %}

***

### Decode Base64 Encrypted Data To Binary

<div data-full-width="false"><figure><img src="/files/UJN8rbq1dciYUNdo4xmd" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## Decode Base64 Encrypted Data To Binary

## Overview

Warning: Previewing the "**Out Binary Data**" array may cause lag. The array can be extremely large, depending on the decoded file size. This node allows you to decode Base64 encoded binary data back into usable binary data (**Array**). Base64 encoding is a format designed to prevent errors during the transfer of binary information.

## Inputs

* **Base 64 Encrypted String** – The encrypted Base 64 string data you want to Decode into usable binary Data.

## Outputs

* **Success** – Indicates success status: true or false, based on if the data was decrypted successfully.
* **Out Binary Data** – Provides the decrypted binary data as an array from the encrypted Base64 string.
  {% endhint %}

***

### Encode Base64 Encrypted Data

<div data-full-width="false"><figure><img src="/files/QgS2btddAD2xcaJ8XCcP" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## Encode Binary To Base64 Encrypted Data

## Overview

Warning: Previewing the "**Binary Data**" array may cause lag. The array can be extremely large, depending on the file size you want to encrypt. This node allows you to encode raw binary data directly into Base64 encryption. Base64 encoding is a format designed to prevent errors during the transfer of binary information.

## Inputs

* **Binary Data** – The raw binary data you wish to encode into Base64 encryption.

## Outputs

* **Success** – Indicates success status: true or false, based on if the data was encrypted successfully.
* **Base64 Encrypted String** – A string that contains encrypted binary data encoded in Base64 format.
  {% endhint %}

***

### Binary To String Conversation

<div data-full-width="false"><figure><img src="/files/EZ6HZ1OCkyrd7SriXwG9" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## Binary To String Conversation

## Overview

Warning: Previewing the "**Binary Data**" array may cause lag. The array can be extremely large, depending on the data to Decode. This node converts raw binary data encoded in **UTF-8**, **UTF-16**, or similar **ASCII-range** formats into a usable string.

## Inputs

* **Binary Data**– The binary data to convert back into a readable string. Must be encoded in **UTF-8**, **UTF-16**, or a similar **ASCII-range** format.

## Outputs

* **Success** – Returns true if the binary data was successfully decoded into string data. Otherwise returns false.
* **Decoded String** – The usable string containing the decoded content of the provided binary data.
  {% endhint %}

***

### Binary To Texture2D

<div data-full-width="false"><figure><img src="/files/wiOEiEFmmNThxjG1M42D" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## Binary To Texture2D

## Overview

Warning: Previewing the "**Binary Data**" array may cause lag. The array can be extremely large, depending on the file size. This node converts raw image binary data directly into a usable **Texture2D** variable. Can be used directly with widgets or storing into variables.

## Inputs

* **Binary Data** – The raw binary image data to be converted into a **Texture2D** data type.

## Outputs

* **Success** – Returns true if the binary data was successfully converted into a **Texture2D** data type. Otherwise returns false.
* **Out Texture** – The resulting **Texture2D** containing the image data extracted from the binary input.
  {% endhint %}

***

### String To Binary Conversation

<div data-full-width="false"><figure><img src="/files/iBkOQpzB3HTmJTEl8cIY" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## String To Binary Conversation

## Overview

Warning: Previewing the "**Encoded Data**" array may cause lag. The array can be extremely large, depending on the data to encode. This node converts string data into binary data using **UTF-8** encoding.

## Inputs

* **Data To Encode** – The raw string to be encoded into **UTF-8** binary format.

## Outputs

* **Success** – Returns true if the binary data was successfully encoded into **UTF-8** binary data otherwise, returns false.
* **Encoded Data**  – The encoded result of the input string, returned as a binary array.
  {% endhint %}

***

### Value Truncate With Precision

<div data-full-width="false"><figure><img src="/files/EZ6HZ1OCkyrd7SriXwG9" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## Value Truncate With Precision

## Overview

A utility function that truncates a numeric value to a specified precision. By default, it uses an efficient method, with an optional slower but more accurate alternative.\
\
**Note:** Due to Unreal Engine’s internal handling, the result may occasionally be rounded up.

## Inputs

* **Value** – The input number you want to truncate to a specified precision.
* **Precision** – The number of decimal places to retain after truncation.
* **Alternative Calculation** - Enables a more accurate, but less optimized, truncation method.

## Outputs

* **Success** – Returns true if the truncation was successful. Otherwise returns false.
* **Out Value**  – The resulting value after truncation has been applied.
  {% endhint %}

***

### Percentage Based URL Encode

<div data-full-width="false"><figure><img src="/files/o9rnuOiJS5ogv5ZLWuf9" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## Percentage Based URL Encode

## Overview

A utility function, also known as **percent-encoding**, used to encode characters within a **URL** that are either not allowed or have special meaning.&#x20;

This method replaces such characters with a percent sign (`%`) followed by two hexadecimal digits representing the character’s **ASCII** or **Unicode value**.

## Inputs

* **Un Encoded URL** – The original URL containing characters that are not allowed or have special meaning.

## Outputs

* **Encoded URL**  – The resulting URL string, with the original content percent-encoded to safely represent characters that are otherwise illegal in URLs.
  {% endhint %}

***

### Percentage Based URL Decode

<div data-full-width="false"><figure><img src="/files/mYcJD5TUwIUs2JPj31Jz" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## Percentage Based URL Decode

## Overview

A utility function used to decode URLs that have been encoded using **percent-encoding**.\
This method identifies percent-encoded URLs (a `%` followed by two hexadecimal digits) and converts them back to their original characters based on their **ASCII** or **Unicode** values.

## Inputs

* **Encoded URL** – The **percent-encoded** URL string, containing characters in the **%XX** hexadecimal format.

## Outputs

* **Decoded URL**  – The resulting URL string with all percent-encoded characters converted back to their original readable form.
  {% endhint %}

***

### Get URL Base

<div data-full-width="false"><figure><img src="/files/RnFimAuaa1wJWT4UmBkt" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## Get URL Base

## Overview

A utility function used to extract the base part of a URL. This function removes any query parameters             (**?key=value**) and fragment identifiers (**#section**) from the input, returning only the base URL (**typically the scheme, domain, and path**).

### Example

**In URL**  – <https://example.com/products/item?id=123&ref=homepage#details>\
**URL Base**  – <https://example.com/products/item>

## Inputs

* **In URL** – The full URL string from which to extract the base. This may include query parameters or fragments.

## Outputs

* **URL Base**  – The base portion of the input URL, excluding any query parameters or fragment identifiers.
  {% endhint %}

***

### Get URL Domain

<div data-full-width="false"><figure><img src="/files/O00DsTjTJhcs65bmc6Ms" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## Get URL Domain

## Overview

A utility function that extracts the domain (**host**) portion from a given URL. This function returns only the domain name (**with or without subdomain**) and excludes the URL **scheme**, **path**, **query parameters** and **fragment identifiers**.

### Example

**In URL**  – <https://example.com/products/item?id=123&ref=homepage#details>\
**URL Base**  – example.com

## Inputs

* **In URL** – The full URL string from which the domain should be extracted.

## Outputs

* **URL Base**  – The domain portion of the input URL  without the scheme **https\://**, **path** or **parameters**.
  {% endhint %}

***

### Get File Mime Type

<div data-full-width="false"><figure><img src="/files/9eXPVpdeAYgl6QckF0Vp" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## Get URL Domain

## Overview

A utility function that determines the **MIME type** of a file based on its file extension. **MIME** types (**Multipurpose Internet Mail Extensions**) are used to indicate the nature and format of a file, which is useful for web requests, file uploads or content-type headers.

### Example

**In File path** – C:/Images/photo.png\
**Output Mime type** – image/png

## Inputs

* **In File Path** – The full file path and file name (**including extension**) of the file for which you want to determine the **MIME** type.

## Outputs

* **Out Mime Type**  – A string representing the detected **MIME** type of the file.
  {% endhint %}


# JSON GET

## JSON GET

### Try Get Bool Field

<div data-full-width="false"><figure><img src="/files/jdkxMMmBmeUD2EyU1Uu2" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Try Get Bool Field

## Overview

JSON functionality used to safely retrieve a Boolean value from a JSON object. This node attempts to extract the value of a specified field and interpret it as a Boolean. If the field is found and its value is a valid Boolean, the operation succeeds.

## Inputs

* **JSON Object** – The input JSON object from which you want to retrieve the Boolean value.
* **Field Name** – The name of the field (**as string**) to search for within the JSON object.

## Outputs

* **Success** – Returns true if the field exists and its value was successfully parsed as a Boolean. Otherwise, returns false.
* **Bool Data** – The Boolean value retrieved from the specified field.
  {% endhint %}

***

### Try Get Byte Field

<div data-full-width="false"><figure><img src="/files/NRXPd99i1xFMXoHfwNxc" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Try Get Byte Field

## Overview

JSON functionality used to safely retrieve a byte value from a JSON object. This node attempts to extract the value of a specified field and interpret it as a byte. If the field is found and its value is a valid number within the acceptable range, the operation succeeds.

## Inputs

* **JSON Object** – The input JSON object from which you want to retrieve the byte field.
* **Field Name** – The name of the field (**as string**) to search for within the JSON object.

## Outputs

* **Success** – Returns true if the field exists and its value was successfully parsed as a byte. Otherwise, returns false.
* **Number Data** – The numeric value retrieved from the specified field, interpreted as a byte.
  {% endhint %}

***

### Try Get Number Field

<div data-full-width="false"><figure><img src="/files/RpICnRCBM3JLnXs2rMM7" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Try Get Number Field

## Overview

JSON functionality used to safely retrieve a numeric value from a JSON object. This node attempts to extract the value of a specified field and interpret it as a number (**Float**). If the field is found and its value is a valid number, the operation succeeds.

## Inputs

* **JSON Object** – The input JSON object from which you want to retrieve the number field.
* **Field Name** – The name of the field (**as string**) to search for within the JSON object.

## Outputs

* **Success** – Returns true if the field exists and its value was successfully parsed as a number. Otherwise, returns false.
* **Number Data** - The numeric value retrieved from the specified field, interpreted as a float.
  {% endhint %}

***

### Try Get String Field

<div data-full-width="false"><figure><img src="/files/Wpd7eV4fXsq72HVVDDfD" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Try Get String Field

## Overview

JSON functionality used to safely retrieve a string value from a JSON object. This node attempts to extract the value of a specified field and interpret it as a string. If the field is found and its value is a valid string, the operation succeeds.

## Inputs

* **JSON Object** – The input JSON object from which you want to retrieve the string field.
* **Field Name** – The name of the field (**as string**) to search for within the JSON object.

## Outputs

* **Success** – Returns true if the field exists and its value was successfully parsed as a string. Otherwise, returns false.
* **String Data** - The string value retrieved from the specified field.
  {% endhint %}

***

### Try Get Rotator Field

<div data-full-width="false"><figure><img src="/files/5O3juCzC7X4uWMxdUVzq" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Try Get Rotator Field

## Overview

JSON functionality used to safely retrieve a Rotator structure from a JSON object. This node attempts to extract the value of a specified field and interpret it as a Rotator, typically composed of **Pitch**, **Yaw**, and **Roll** values. If the field is found and correctly formatted, the operation succeeds.

You must ensure that the rotator structure is formatted as shown below. Otherwise, the data will not be found. As a recommendation, use the "[**Set JSON Rotator Field**](/doc-http-json/json-set#set-json-rotator-field)" node to **guarantee** the structure is correctly formatted.

### Example

**{**\
&#x20;  **"PlayerRotation":  {**\
&#x20;     **"Roll": 0,**\
&#x20;     **"Pitch": 0,**\
&#x20;     **"Yaw": -90**\
&#x20;  **}**\
**}**

## Inputs

* **JSON Object** – The input JSON object from which you want to retrieve the rotator structure.
* **Field Name** – The name of the field (**as string**) to search for within the JSON object.

## Outputs

* **Success** – Returns true if the field exists and its value was successfully parsed as a rotator. Otherwise, returns false.
* **Rotator Data** - The Rotator value retrieved from the specified field. The JSON values for **Roll**, **Pitch**, and **Yaw** are extracted and converted into a valid Unreal Engine **Rotator** data type.
  {% endhint %}

***

### Try Get Vector Field

<div data-full-width="false"><figure><img src="/files/LQjMx5FzafO6krUpQJ1I" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Try Get Vector Field

## Overview

JSON functionality used to safely retrieve a Vector structure from a JSON object. This node attempts to extract the value of a specified field and interpret it as a Vector, typically composed of X, Y, and Z values. If the field is found and correctly formatted, the operation succeeds.

You must ensure that the vector structure is formatted in the expected way. Otherwise, the data will not be found. As a recommendation, use the [**Set JSON Vector Field**](/doc-http-json/json-set#set-json-vector-field) node to **guarantee** the structure is correctly formatted.

### Example

**{**\
&#x20;  **"PlayerLocation":  {**\
&#x20;     **"X": 123,**\
&#x20;     **"Y": 321,**\
&#x20;     **"Z": 45**\
&#x20;  **}**\
**}**

## Inputs

* **JSON Object** – The input JSON object from which you want to retrieve the vector structure.
* **Field Name** – The name of the field (**as string**) to search for within the JSON object.

## Outputs

* **Success** – Returns true if the field exists and its value was successfully parsed as a vector. Otherwise, returns false.
* **Vector Data** - The Vector value retrieved from the specified field. The JSON values for X, Y, and Z are extracted and converted into a valid Unreal Engine Vector data type.
  {% endhint %}

***

### Try Get Vector2D Field

<div data-full-width="false"><figure><img src="/files/gTaO6ntD2dwAHpzZ40pm" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Try Get Vector2D Field

## Overview

JSON functionality used to safely retrieve a 2D Vector structure (**Vector2D**) from a JSON object. This node attempts to extract the value of a specified field and interpret it as a Vector2D, typically composed of X and Y values. If the field is found and correctly formatted, the operation succeeds.

You must ensure that the vector structure is formatted in the expected structure. Otherwise, the data will not be found. As a recommendation, use the [**Set JSON Vector Field 2D**](/doc-http-json/json-set#set-json-vector-field-2d) node to **guarantee** the structure is correctly formatted.

### Example

**{**\
&#x20;  **"PlayerLocation2D":  {**\
&#x20;     **"X": 123,**\
&#x20;     **"Y": 321,**\
&#x20;  **}**\
**}**

## Inputs

* **JSON Object** – The input JSON object from which you want to retrieve the vector2D structure.
* **Field Name** – The name of the field (**as string**) to search for within the JSON object.

## Outputs

* **Success** – Returns true if the field exists and its value was successfully parsed as a vector2D. Otherwise, returns false.
* **Vector Data 2D** - The Vector2D value retrieved from the specified field. The JSON values for X, and Y are extracted and converted into a valid Unreal Engine Vector2D data type.
  {% endhint %}

***

### Try Get Transform Field

<div data-full-width="false"><figure><img src="/files/WC51AAkecKmA8rDWXBEn" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Try Get Transform Field

## Overview

JSON functionality used to safely retrieve a Transform structure from a JSON object. This node attempts to extract the value of a specified field and interpret it as a full Unreal Engine Transform, composed of a **Location** (**Vector**), **Rotation** (**Rotator**), and **Scale** (**Vector**). If the field is found and all components are properly formatted, the operation succeeds.

You must ensure that the Transform structure is formatted in the expected structure. Otherwise, the data will not be found. As a recommendation, use the [**Set JSON Transform Field**](/doc-http-json/json-set#set-json-transform-field) node to **guarantee** the structure is correctly formatted.

### Example

**{**\
&#x20;  **"PlayerTransform": {**\
&#x20;      **"X": 123,**\
&#x20;      **"Y": 43,**\
&#x20;      **"Z": 45,**\
&#x20;      **"Roll": 0,**\
&#x20;      **"Pitch": -0,**\
&#x20;      **"Yaw": 90,**\
&#x20;      **"Scale X": 1,**\
&#x20;      **"Scale Y": 1,**\
&#x20;      **"Scale Z": 1**\
&#x20;   **}**\
**}**

## Inputs

* **JSON Object** – The input JSON object from which you want to retrieve the Transform structure.
* **Field Name** – The name of the field (**as string**) to search for within the JSON object.

## Outputs

* **Success** – Returns true if the field exists and its value was successfully parsed as a transform. Otherwise, returns false.
* **Transform Data** - The full **Transform** value retrieved from the specified field, including **location**, **rotation**, and **scale**. and converted into a valid Unreal Engine **Transform** data type.
  {% endhint %}

***

### Try Get Color Field

<div data-full-width="false"><figure><img src="/files/EPJfSYevVG7FlzHlzVl2" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Try Get Color Field

## Overview

JSON functionality used to safely retrieve a Color structure from a JSON object. This node attempts to extract the value of a specified field and interpret it as an Unreal Engine Linear Color, composed of **R**, **G**, **B**, and **A** values. If the field is found and correctly formatted, the operation succeeds.

You must ensure that the color structure is formatted in the expected way. Otherwise, the data will not be found. As a recommendation, use the [**Set JSON Color Field**](/doc-http-json/json-set#set-json-color-field) node to **guarantee** the structure is correctly formatted.

### Example

**{**\
&#x20;  **"Torch Color": {**\
&#x20;      **"R": 255,**\
&#x20;      **"G": 0,**\
&#x20;      **"B": 50,**\
&#x20;      **"A": 255,**\\

&#x20;   **}**\
**}**

## Inputs

* **JSON Object** – The input JSON object from which you want to retrieve the color structure.
* **Field Name** – The name of the field (**as string**) to search for within the JSON object.

## Outputs

* **Success** – Returns true if the field exists and its value was successfully parsed as a color. Otherwise, returns false.
* **Color Data** - The Color value retrieved from the specified field. The **R**, **G**, **B**, and **A** components are extracted and converted into an Unreal Engine Linear color data type.
  {% endhint %}

***

### Try Get Object Field

<div data-full-width="false"><figure><img src="/files/NI6P5wRXWQAwTYF9il6T" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Try Get Object Field

## Overview

JSON functionality used to safely retrieve a nested JSON object from within a parent JSON structure. This node attempts to extract the value of a specified field and interpret it as a valid JSON object. If the field is found the operation succeeds.

## Inputs

* **JSON Object** – The input JSON object from which you want to retrieve a nested object field.
* **Field Name** – The name of the field (**as string**) to search for within the JSON object.

## Outputs

* **Success** – Returns true if the field exists and its value was successfully parsed as a JSON object. Otherwise, returns false.
* **JSON Object Field** – The nested JSON object retrieved from the specified field.
  {% endhint %}

***

### Try Get Array Field

<div data-full-width="false"><figure><img src="/files/RyOd0gBpldiIuLalbLvF" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Try Get Array Field

## Overview

JSON functionality used to safely retrieve an array from a JSON object. This node attempts to extract the value of a specified field and interpret it as a JSON array. If the field is found and its value is a valid array structure, the operation succeeds.

## Inputs

* **JSON Object** – The input JSON object from which you want to retrieve the array field.
* **Field Name** – The name of the field (**as string**) to search for within the JSON object.

## Outputs

* **Success** – Returns true if the field exists and its value was successfully parsed as a JSON array. Otherwise, returns false.
* **Out JSON Array** – The JSON array retrieved from the specified field.
  {% endhint %}

***

### Try Get All Object Field Names

<div data-full-width="false"><figure><img src="/files/q7bGcEcDFnD1X9OeGrkH" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Try Get All Object Field Names

## Overview

JSON functionality used to retrieve all the field (**key**) names from a JSON object. This node extracts a list of all keys within the given object, If the input is a valid JSON object, the operation succeeds.

## Inputs

* **JSON Object** – The input JSON object from which you want to extract all field names.

## Outputs

* **Success** – Returns true if the input was a valid JSON object and field names were successfully retrieved. Otherwise, returns false.
* **Field Names** – An array of strings containing all field names (**keys**) present inside the provided JSON object.
  {% endhint %}

***

### Try Get All Object Field Values

<div data-full-width="false"><figure><img src="/files/RF22RYqalbB3FMiULhcN" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Try Get All Object Field Values

## Overview

JSON functionality used to retrieve all field values from a JSON object and output them as an array. This node collects the values (**ignoring the keys**) in the provided JSON object. If the object is valid, it will return a JSON array containing each value as a JSON array.

**Note:** The Array Name input allows you to label or reference the returned array when accessing the values later. You can use the [**Try Get Array Field**](#try-get-array-field) node to access this data using the "**Array Name"**. Returns an empty array if the object is invalid or empty.

## Inputs

* **JSON Object** – The input JSON object from which you want to retrieve all field values.
* **Array Name** – The name under which the resulting value array will be stored or accessed. Useful for referencing in further operations.

## Outputs

* **Success** – Returns true if the input is a valid JSON object and the values were successfully collected into an array. Otherwise, returns false.
* **JSON Value** – A JSON object that contains a JSON array that holds all the found values from the provided "**Json object**".
  {% endhint %}


# JSON SET

## JSON SET

### Set New Json Object Field

<div data-full-width="false"><figure><img src="/files/gcX95m0V2G4gK2DeiRrT" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set New Json Object Field

## Overview

Creates a new, empty JSON object and inserts it into the specified field within an existing JSON object. This is typically used as a setup step for nesting further data inside a parent JSON. The newly created object is returned for further use and modification. **not the full original JSON object**.

**Note:** This node does not copy the entire structure forward. It only returns the newly created nested object so you can set data into it directly.

## Inputs

* **JSON Object** – The JSON object to which the new nested object should be added.
* **Field Name** – The name of the field (**as string**) to assign the new empty JSON object to.

## Outputs

* **Success** – Returns true if the empty object was successfully created and inserted. Otherwise false.
* **New Json Object** – The newly created empty object, returned for further editing (**not the full input object**).
  {% endhint %}

***

### Set Json Object Field

<div data-full-width="false"><figure><img src="/files/51cXDYds5QSOccJCiNIC" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set Json Object Field

## Overview

Adds or updates a nested JSON object field inside an existing parent JSON object. This node allows you to insert a fully constructed JSON object into another JSON object under a specified field name. If the field already exists, it will be overwritten with the new object.

Unlike [**Set New JSON Object Field**](#set-new-json-object-field), which creates a blank JSON object, this version accepts a fully built JSON object and appends it into a larger JSON.

### Examples

#### Parent Data

**{**\
&#x20; **"PlayerInfo": {**\
&#x20;   **"Name": "ShadowRogue",**\
&#x20;   **"Level": 12,**\
&#x20;   **"Class": "Assassin",**\
&#x20;   **"XP": 3450,**\
&#x20;   **"IsAlive": true**\
&#x20; **}**\
**}**

#### Data To Insert

**{**\
&#x20; **"PlayerStats": {**\
&#x20;   **"Health": 85,**\
&#x20;   **"Mana": 60,**\
&#x20;   **"Stamina": 40,**\
&#x20;   **"Armor": 25,**\
&#x20;   **"CriticalChance": 0.15**\
&#x20; **}**\
**}**

#### Combined Data

**{**\
&#x20; **"PlayerInfo": {**\
&#x20;   **"Name": "ShadowRogue",**\
&#x20;   **"Level": 12,**\
&#x20;   **"Class": "Assassin",**\
&#x20;   **"XP": 3450,**\
&#x20;   **"IsAlive": true**\
&#x20; **},**\
&#x20; **"PlayerStats": {**\
&#x20;   **"Health": 85,**\
&#x20;   **"Mana": 60,**\
&#x20;   **"Stamina": 40,**\
&#x20;   **"Armor": 25,**\
&#x20;   **"CriticalChance": 0.15**\
&#x20; **}**\
**}**

## Inputs

* **JSON Object** – The parent JSON object you want to modify.
* **Object Data** - The desired data to insert into the parent.
* **Field Name** – The name of the field (**as string**) under which the object should be stored.

## Outputs

* **Success** – Returns true if the nested object was successfully inserted. Otherwise false.
* **New Json Object** – The updated full JSON object, including the newly added or modified field.
  {% endhint %}

***

### Insert Json Object

<div data-full-width="false"><figure><img src="/files/u9IToGEKCuW2rB46XD7E" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Insert Json Object

## Overview

This node merges one JSON object into another by copying all fields from the **Data to Insert** object into the **JSON Object**. If any fields already exist in the target, they will be **overwritten** by values from the incoming object. The result is a single, combined JSON object containing fields from both inputs.

**Note:** This operation does not create a nested structure. All top-level fields from both objects are merged into a flat, unified JSON.

### Examples

#### Parent Data

**{**\
&#x20; **"PlayerInfo": {**\
&#x20;   **"Name": "ShadowRogue",**\
&#x20;   **"Level": 12,**\
&#x20;   **"Class": "Assassin",**\
&#x20;   **"XP": 3450**\
&#x20; **}**\
**}**

#### Data To Insert

**{**\
&#x20; **"PlayerStats": {**\
&#x20;   **"Health": 85,**\
&#x20;   **"Mana": 60,**\
&#x20;   **"Stamina": 40,**\
&#x20;   **"Armor": 25**\
&#x20; **}**\
**}**

#### Combined Data

**{**\
&#x20; **"PlayerInfo": {**\
&#x20;   **"Name": "ShadowRogue",**\
&#x20;   **"Level": 12,**\
&#x20;   **"Class": "Assassin",**\
&#x20;   **"XP": 3450,**\
&#x20;   **"Health": 85,**\
&#x20;   **"Mana": 60,**\
&#x20;   **"Stamina": 40,**\
&#x20;   **"Armor": 25**\
&#x20; **}**\
**}**

## Inputs

* **JSON Object** – The target JSON object that will receive the new fields.
* **Data To Insert** – The second JSON object whose fields will be inserted into the first.

## Outputs

* **Success** – Returns true if the merge was successful. Otherwise false.
* **Combined Json** – The resulting JSON object containing fields from both input objects.
  {% endhint %}

***

### Set Json Bool Field

<div data-full-width="false"><figure><img src="/files/b6RHjMXRIuXgYZNj21b4" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set Json Bool Field

## Overview

Adds or updates a Boolean field in a JSON object. This node sets a key–value pair where the value is a Boolean (**true** or **false**) and outputs a new JSON object containing the updated field.

**Note:** If the specified field already exists, its value will be overwritten. If it does not exist, it will be added.

## Inputs

* **JSON Object** – The input JSON object you want to modify.
* **Field Name** – The name of the field (**as string**) to add or update.
* **Value** - The Boolean value (**true or false**) to assign to the specified field.

## Outputs

* **Success** – Returns true if the field was successfully set in the object. Otherwise false.
* **New Json Object** – The updated JSON object with the Boolean field set.
  {% endhint %}

***

### Set Json Byte Field

<div data-full-width="false"><figure><img src="/files/eHBGoSBSq1oXi1en95yz" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set Json Byte Field

## Overview

Adds or updates a byte value field in a JSON object. This node sets a key–value pair where the value is treated as a byte and outputs a new JSON object containing the updated data.

**Note:** If the specified field already exists, its value will be overwritten. If it does not exist, it will be added.

## Inputs

* **JSON Object** – The input JSON object you want to modify.
* **Field Name** – The name of the field (**as string**) to add or update.
* **Value** - The byte value (**0–255**) to assign to the specified field.

## Outputs

* **Success** – Returns true if the field was successfully set in the object. Otherwise false.
* **New Json Object** – The updated JSON object with the new or modified byte field.
  {% endhint %}

***

### Set Json Number Field

<div data-full-width="false"><figure><img src="/files/lisd9YDxp5LPz1iOt6nA" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set Json Number Field

## Overview

Adds or updates a numeric field (**Float**) in a JSON object. This node sets a key–value pair where the value is a number (**float**), and outputs a new JSON object with the updated content.

**Note:** If the specified field already exists, its value will be overwritten. If it does not exist, it will be added.

## Inputs

* **JSON Object** – The input JSON object you want to modify.
* **Field Name** – The name of the field (**as string**) to add or update.
* **Value** - The numeric value (**float**) to assign to the specified field.

## Outputs

* **Success** – Returns true if the field was successfully set in the object. Otherwise false.
* **New Json Object** – The updated JSON object with the number (**float**) field added or changed.
  {% endhint %}

***

### Set Json String Field

<div data-full-width="false"><figure><img src="/files/sB04UYwn7iHujgaZ80TU" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set Json String Field

## Overview

Adds or updates a string field in a JSON object. This node sets a key–value pair where the value is a string and outputs a new JSON object containing the updated or newly created field.

**Note:** If the specified field already exists, its value will be overwritten. If it does not exist, it will be added.

## Inputs

* **JSON Object** – The input JSON object you want to modify.
* **Field Name** – The name of the field (**as string**) to add or update.
* **Value** - The string value to assign to the specified field.

## Outputs

* **Success** – Returns true if the field was successfully set in the object. Otherwise false.
* **New Json Object** – The updated JSON object with the string field included.
  {% endhint %}

***

### Set Json Rotator Field

<div data-full-width="false"><figure><img src="/files/HgDCMTb0sn0w3cjW1MC9" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set Json Rotator Field

## Overview

JSON functionality used to add or update a **Rotator** field in a JSON object. This node sets a specified field using Unreal Engine **Rotator**, composed of **Roll**, **Pitch**, and **Yaw** values. Ensuring the structure is correctly formatted for JSON serialization.

You must ensure the rotator structure is stored in the expected format. (**As seen in example below**) This node automatically applies the proper formatting, making it the **recommended** way to write rotator data into JSON for compatibility with other JSON utility nodes.

### Example

**{**\
&#x20;  **"PlayerRotation":  {**\
&#x20;     **"Roll": 0,**\
&#x20;     **"Pitch": 0,**\
&#x20;     **"Yaw": -90**\
&#x20;  **}**\
**}**

## Inputs

* **JSON Object –** The JSON object you want to modify.
* **Field Name** – The name of the field (**as string**) to create or update.
* **Rotator Data -** The Unreal Engine **Rotator** value you wish to set.

## Outputs

* **Success** – Returns true if the **rotator** field was successfully added or updated. Otherwise false.
* **New Json Object** - The resulting JSON object with the correctly formatted **rotator** field.
  {% endhint %}

***

### Set Json Vector Field

<div data-full-width="false"><figure><img src="/files/hU7zjZfGKRYNaEnUrGNM" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set Json Vector Field

## Overview

JSON functionality used to add or update a **Vector field** in a JSON object. This node takes an Unreal Engine Vector (**composed of X, Y, and Z values**) and assigns it to a specified field within a JSON object using the correct structure.

You must ensure the vector structure is stored in the expected format. (**As seen in example below**) This node automatically applies the proper formatting, making it the **recommended** way to write vector data into JSON for compatibility with other JSON utility nodes.

### Example

**{**\
&#x20;   **"SpawnLocation": {**\
&#x20;   **"X": 120.0,**\
&#x20;   **"Y": 450.0,**\
&#x20;   **"Z": 300.0**\
&#x20; **}**\
**}**

## Inputs

* **JSON Object –** The JSON object you want to modify.
* **Field Name** – The name of the field (**as string**) to create or update.
* **Vector Data -** The Unreal Engine **Vector** value you want to assign, composed of  **X**, **Y**, and **Z**.

## Outputs

* **Success** – Returns true if the **vector** field was successfully written to the JSON object. Otherwise false.
* **New Json Object** - The resulting JSON object with the new or updated **vector** field.
  {% endhint %}

***

### Set Json Vector Field 2D

<div data-full-width="false"><figure><img src="/files/Db0vDwgLNeX8cpVYhW0S" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set Json Vector Field 2D

## Overview

JSON functionality used to safely write a **2D Vector** structure (**Vector2D**) into a JSON object. This node sets the value of a specified field using a **Vector2D**, composed of **X** and **Y** values, and ensures it is formatted correctly for later use.

You must ensure the Vector2D structure is stored in the expected format. (**As seen in example below**) This node automatically applies the proper formatting, making it the **recommended** way to write vector2D data into JSON for compatibility with other JSON utility nodes.

### Example

**{**\
&#x20;   **"PlayerLocation2D": {**\
&#x20;   **"X": 123,**\
&#x20;   **"Y": 321**\
&#x20; **}**\
**}**

## Inputs

* **JSON Object –** The JSON object you want to modify.
* **Field Name** – The name of the field (**as string**) to create or update.
* **Vector Data 2D -** The **Vector2D** value to assign. The **X** and **Y** components will be written into the JSON structure.

## Outputs

* **Success** – Returns true if the field was successfully written into the JSON object. Otherwise, returns false.
* **New Json Object** - The resulting JSON object with the **Vector2D** field added or updated using the correct format.
  {% endhint %}

***

### Set Json Transform Field

<div data-full-width="false"><figure><img src="/files/mY1nPI9pRDacMNreySSq" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set Json Transform Field

## Overview

JSON functionality used to safely write a **Transform** structure into a JSON object. This node sets a specified field using a **Unreal Engine Transform**, composed of a **Location (X, Y, Z)**, **Rotation (Roll, Pitch, Yaw)**, and **Scale** (**Scale X, Scale Y, Scale Z**), all flattened into a single-level JSON format.

You must ensure that the **Transform** structure is stored in the expected format. This node guarantees correct formatting and is the **recommended** way to serialize **Transform** data into JSON.

### Example

**{**\
&#x20;   **"PlayerTransform": {**\
&#x20;   **"X": 123,**\
&#x20;   **"Y": 43,**\
&#x20;   **"Z": 45,**\
&#x20;   **"Roll": 0,**\
&#x20;   **"Pitch": -0,**\
&#x20;   **"Yaw": 90,**\
&#x20;   **"Scale X": 1,**\
&#x20;   **"Scale Y": 1,**\
&#x20;   **"Scale Z": 1**\
&#x20; **}**\
**}**

## Inputs

* **JSON Object –** The JSON object you want to modify.
* **Field Name** – The name of the field (**as string**) to create or update.
* **Transform Data -** The Unreal Engine **Transform** value, including **Location**, **Rotation**, and **Scale** components.

## Outputs

* **Success** – Returns true if the Transform field was successfully written into the JSON object. Otherwise false.
* **New Json Object** - The resulting JSON object with the flattened **Transform** structure added or updated.
  {% endhint %}

***

### Set Json Color Field

<div data-full-width="false"><figure><img src="/files/FD95Ajfq5TZHyu3EGIqc" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set Json Color Field

## Overview

JSON functionality used to add or update a color structure in a JSON object. This node takes an Unreal Engine **Linear Color** (**composed of R, G, B, and A values**) and sets it as the value of a specified object field in the JSON object.

You must ensure the **Linear Color** structure is stored in the expected format. (**As seen in example below**) This node automatically applies the proper formatting, making it the **recommended** way to write **Linear Color** data into JSON for compatibility with other JSON utility nodes.

### Example

**{**\
&#x20;   **"Torch Color": {**\
&#x20;   **"R": 255,**\
&#x20;   **"G": 0,**\
&#x20;   **"B": 50,**\
&#x20;   **"A": 255**\
&#x20; **}**\
**}**

## Inputs

* **JSON Object –** The input JSON object you want to modify.
* **Field Name** – The name of the field (**as string**) to add or update.
* **New Color -** The Unreal Engine **Linear Color** you want to assign to the specified field.

## Outputs

* **Success** – Returns true if the field was successfully written to the object. Otherwise, returns false.
* **New Json Object** - The resulting JSON object with the properly formatted color structure added or updated.
  {% endhint %}

***

### Set Json Array Field

<div data-full-width="false"><figure><img src="/files/6z1n8hkPpMP0XRAyhCr8" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set Json Array Field

## Overview

JSON functionality used to add or update an array field in a JSON object. This node sets a field to hold a JSON array, which can contain values of any type (**Numbers, strings, objects, or nested arrays**), and ensures it is properly formatted for serialization.

## Inputs

* **JSON Object** – The JSON object you want to modify.
* **Field Name** – The name of the field (**as string**) to assign the array to.
* **Root Level JSON** – If **true**, all array entries are placed together into a single object where each entry shares the **same structure** (i.e. same fields, with different values). If **false**, each array entry is placed into its **own individual JSON object**, typically with only one field per object.
* **Array Data** – The array of values to insert into the JSON object.

### Examples

**Root Level JSON = false**

**{**\
&#x20;    **"Inventory": \[**\
&#x20;   **{**\
&#x20;     **"Name": "Health Potion"**\
&#x20;   **},**\
&#x20;   **{**\
&#x20;    **"Type": "Weapon"**\
&#x20;   **},**\
&#x20;   **{**\
&#x20;    **"Effect": "Fireball"**\
&#x20;   **}**\
&#x20;  **]**\
**}**

**Root Level JSON = true**

**\[**\
&#x20;  **{**\
&#x20;   **"Name": "Health Potion",**\
&#x20;   **"Type": "Consumable",**\
&#x20;   **"Effect": "Restore 50 HP"**\
&#x20;  **},**\
&#x20;  **{**\
&#x20;   **"Name": "Iron Sword",**\
&#x20;   **"Type": "Weapon",**\
&#x20;   **"Effect": "Ice walking"**\
&#x20;  **},**\
&#x20;  **{**\
&#x20;   **"Name": "Magic Scroll",**\
&#x20;   **"Type": "Spell",**\
&#x20;   **"Effect": "Fireball"**\
&#x20;  **}**\
**]**

## Outputs

* **Success** – Returns true if the array was successfully added or updated in the JSON object. Otherwise, returns false.
* **Out Array Data** – The JSON array that was written to the specified field or to the root, depending on the configuration.
  {% endhint %}


# JSON PURE

## JSON PURE

### Try Get Json Length

<div data-full-width="false"><figure><img src="/files/XyqEJ5H4A8ZC1ggS2cwL" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Try Get Json Length

## Overview

Attempts to determine the number of key-value pairs inside a given JSON object. This is a pure function that inspects the structure and returns how many fields are present at the top level of the object. Commonly used when iterating through dynamic or unknown JSON data lengths and a length is required.

## Inputs

* **JSON Object** – The JSON object whose length (**number of fields**) you want to retrieve.

## Outputs

* **Length** – An integer representing the number of fields (**keys**) in the provided JSON object.
  {% endhint %}

***

### Try Get Json Value

<div data-full-width="false"><figure><img src="/files/IjJ5JQAoh9GlCdw3nwbW" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set Json Object Field

## Overview

This node is a universal “[**Try Get**](/doc-http-json/json-get)” function that combines the functionality of all individual JSON “[**Try Get**](/doc-http-json/json-get)”  nodes into one pure function. It dynamically determines the type of value to retrieve based on the variable type connected to the **Out Data** output pin. This allows developers to fetch Booleans, strings, numbers, objects and more using one flexible node.

**Note**: The wildcard pin must be set before execution. The node will search for the field based on the data type connected to **Out Data**.

## Inputs

* **JSON Object** – The JSON object to search within.
* **Field Name** - The name of the field (**as string**) to find and retrieve the data of.

## Outputs

* **Out Data (Wildcard)** – The resulting value found from the JSON object.
  {% endhint %}

***

### Try Get First Json Field Value

<div data-full-width="false"><figure><img src="/files/Ll0b6p08MPba6ewpEbUP" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Try Get First Json Field Value

## Overview

This node retrieves the value of the first field found in a JSON object. The type of the value to be retrieved is determined by the variable connected to the **Out Data** pin (**Wildcard**). This is useful when you want to inspect or access the first entry of a JSON structure without knowing the field data type.

## Inputs

* **JSON Object** – The JSON object from which the first value will be retrieved.

## Outputs

* **Out Data** – The value of the first found field.
  {% endhint %}

***

### New Json Object From String

<div data-full-width="false"><figure><img src="/files/HNDD6MHcfOhbI5F225cT" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### New Json Object From String

## Overview

This node creates a local JSON object from a string without needing a execution pin. It is a pure function and is often used when working with inline JSON or when importing data from a string format. The provided string must be valid JSON syntax.

**Note:** If you want to quickly debug JSON data or dynamically parse a string into a JSON object, this is a useful node. However, since it is a pure function, the resulting data exists only for the current frame. Be sure to store or process the output immediately, as the data will be lost on the next engine frame.

## Inputs

* **In Json String** – A text string containing valid JSON data to be parsed.

## Outputs

* **Out Value** – A JSON object generated from the input string. If the string is invalid, the object may be empty.
  {% endhint %}

***

### New Pure Json Object

<div data-full-width="false"><figure><img src="/files/En98s42De1Jb3JyYqfSS" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### New Pure Json Object

## Overview

Creates a new, empty JSON object using a pure function. Since this node does not trigger the execution flow, it is ideal for temporary JSON creation in pure logic chains such as function graphs or value assignments.

**Note:** Because it is a pure function, the generated JSON object exists only during the current frame. Be sure to immediately cache or assign the output, or the data will be lost.

## Outputs

* **JSON Object** – A new, empty JSON object that can be modified or passed into other JSON-related nodes.
  {% endhint %}

***

### Make Named Object Json Data

<div data-full-width="false"><figure><img src="/files/8bPjRBF8Nj3qrJu2w1Wl" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Make Named Object Json Data

## Overview

This pure function accepts two arrays as input. The first is an array of strings, where each string represents a key that will be used to construct a JSON object. The second is a wildcard array that provides the values to be assigned to each of these keys.

It is important to note that the number of keys must match the number of values exactly. You cannot provide more keys than values or more values than keys. This mismatch is not supported and will result in an error.

An example of the output generated by this function can be found below.

### Example

#### Parent Data

**{**\
&#x20;  **"Username": "UForge",**\
&#x20;  **"Password": "UForge123",**\
&#x20;  **"Address": "UForge road",**\
&#x20;  **"Class": "Mage"**\
**}**

## Inputs

* **Field Names Array** – An array of string values that represent the keys for the resulting JSON object.
* **In Array** – A wildcard array input. This node accepts any data type supported by Unreal Engine. It loops over each value and assigns it to the corresponding key from the **Field Names Array**, building valid key-value pairs.

## Outputs

* **Out Data** – JSON object that holds the new constructed JSON data.
  {% endhint %}

***

### Set JSON Field

<div data-full-width="false"><figure><img src="/files/4T7c3DzJKdUkkr4nhlUo" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set JSON Field

## Overview

A pure node that allows you to set data into your desired JSON object. The input supports any data type recognized by Unreal Engine, as it uses a wildcard input. This node essentially functions as a universal "[**Set Node**](/doc-http-json/json-set)," combining the behaviour of all individual set nodes into one.

## Inputs

* **JSON Object** – The JSON object where you want to set a new JSON value.
* **Field Name** – The name of the field you are creating.
* **In Data (Wildcard)** – The data you want to set. This is a wildcard input pin, so it supports any valid data type recognized by Unreal Engine.

## Outputs

* **Out Data** – The new JSON object that contains the newly created JSON field.
  {% endhint %}

***

### Value Only JSON Array

<div data-full-width="false"><figure><img src="/files/GgI17WFjgs5xcWvOrNfP" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Value Only JSON Array

## Overview

A pure JSON node that allows you to create a JSON array containing only values, with no keys assigned to individual elements. The output structure looks like this: **{"words": \["AB", "BC", "CD", "DE", "EF"]}**. To use this node, simply provide a field name and an array containing your data.

## Inputs

* **Field Name** – The name of the JSON array you wish to create.
* **In Array (Wildcard)** – A wildcard input pin that accepts any data type supported by Unreal Engine. This is the array of data you want to include in the value-only JSON array.

## Outputs

* **Out Data** – The new JSON object that contains the value-only JSON array.
  {% endhint %}


# JSON Utility

## JSON Utility

### Create New Json File

<div data-full-width="false"><figure><img src="/files/gxztFHr8LlAQZ0KidYOI" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Create New Json File

## Overview

Creates a new, empty JSON object for use in further JSON operations. This node is typically the starting point when building a new JSON structure from scratch. Once created, fields can be added using the various [**Set JSON Field nodes**](/doc-http-json/json-set)**.**

## Inputs

**None.**

## Outputs

* **Success** – Returns true if the JSON object was successfully created.
* **Json Object** – The newly created empty JSON object, ready for data to be added.
  {% endhint %}

***

### Convert Json To String

<div data-full-width="false"><figure><img src="/files/2JbXXejAwpEyJSemVmtv" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Convert Json To String

## Overview

Converts a JSON object into a string format for storage, string manipulation or display. This node serializes the given JSON object into a text-based JSON string. Optionally, you can enable **Pretty Print** to format the output with indentation and line breaks for easier readability.

## Inputs

* **JSON Object** – The JSON object you want to convert into a string.
* **Pretty Print** – If checked, the output string will be human-readable with line breaks and indentation. If unchecked, the result will be compact.

## Outputs

* **Success** – Returns true if the JSON object was successfully converted to a string. Otherwise returns false.
* **JSON String** – The serialized string representation of the input JSON object.
  {% endhint %}

***

### String To Json Object

<div data-full-width="false"><figure><img src="/files/ZwVVjGN1TuFhrmIC4IM4" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### String To Json Object

## Overview

Parses a JSON-formatted string and converts it into a usable JSON object. This node is typically used to deserialize data that was loaded from a file, received from a server, for quick debugging and testing.

**Note:** The input string must be a valid JSON. If the format is incorrect or malformed, the conversion will fail and return an empty or null object.

## Inputs

* **Raw String Data** – A string containing valid JSON text that you want to parse into a JSON object.

## Outputs

* **Success** – Returns true if the string was successfully parsed into a JSON object. Otherwise, returns false.
* Loaded Json Object - The resulting JSON object that can be used with other JSON nodes.
  {% endhint %}

***

### Remove Json Field

<div data-full-width="false"><figure><img src="/files/f2hp6Kbj29nBu4pOj4Ve" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Remove Json Field

## Overview

Removes a specific field (**key–value pair**) from a given JSON object. This node returns a new JSON object identical to the input, except without the specified field. This is useful for cleaning structures before saving, serializing, or sending.

**Note:** If the specified field does not exist, the original object is returned unchanged, and **Success** is set to false.

## Inputs

* **JSON Object** – The input JSON object from which you want to remove a field.
* **Field Name** – The name of the field (**as string**) to remove from the JSON object.

## Outputs

* **Success** – Returns true if the field was found and successfully removed. Otherwise, returns false.
* **New Json Object** - A copy of the input JSON object with the specified field removed (**if found**).
  {% endhint %}

***

### Has Field

<div data-full-width="false"><figure><img src="/files/lNvYPcLyk9gl8k4T1XJK" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}
Has Field

## Overview

Checks whether a specified field (**key**) exists within a given JSON object. This node is useful for verifying the presence of data before attempting to retrieve or operate on a specific field, helping prevent errors and ensure safer parsing.

**Note:** This node only checks the top-level of the provided JSON object. It does not search nested objects.

## Inputs

* **JSON Object** – The JSON object in which you want to search for a field.
* **Field to Find** – The name of the field (**as string**) to check for existence.

## Outputs

* **Success** – Returns true if the specified field exists in the JSON object. Otherwise, returns false.
  {% endhint %}

***

### Struct To Json String

<div data-full-width="false"><figure><img src="/files/wCudRRM2YzenIxPiH0Fw" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Struct To Json String

## Overview

Converts any given Unreal Engine **Struct** into a JSON-formatted string. This node serializes all the fields of the **struct** into a valid JSON text format, making it suitable for saving to files, sending over network, or logging.

## Inputs

* **In Struct (Wildcard)** – The input struct to serialize into a JSON string.

## Outputs

* **Success** – Returns true if the struct was successfully converted into a JSON string. Otherwise false.
* **Out JSON** - The resulting JSON-formatted string representing the struct’s data.
  {% endhint %}

***

### Json To Struct

<div data-full-width="false"><figure><img src="/files/fn9e3yRgtquXYgxmbqDd" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Json To Struct

## Overview

Converts a JSON object into a corresponding Unreal Engine **Struct**. The target struct must have its field names match the keys in the JSON object exactly for the conversion to succeed. Each JSON object field name must be identical to struct field names. Otherwise the conversion will fail.

## Inputs

* **JSON Object** – The input JSON object that you want to convert into a struct.

## Outputs

* **Success** – Returns true if the JSON was successfully parsed into the target struct. Otherwise, returns false.
* **Out Struct (Wildcard)** - The resulting struct populated with the data from the JSON object.
  {% endhint %}


# HTTP

## Utility

### ASYNC Has Internet Check

<div data-full-width="false"><figure><img src="/files/Mo1GzkQEeBjdL8AANwDJ" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### ASYNC Has Internet Check

## Overview

This utility checks whether the user's system is currently connected to the internet. It does this by performing a lightweight HTTP request to [**https://www.google.com**](https://www.google.com/). If the request is successful, the node returns **true** otherwise, it returns **false**.

## Inputs

**None.**

## Outputs

* **Success** – Executes If the user has a valid internet connection.
* **False** – Executes If the user does not have a valid internet connection.
* **Has Internet** – A Boolean output: **true** if the system is online, **false** otherwise.
  {% endhint %}

***

## ASYNC

### ASYNC HTTP(S) Request

<div data-full-width="false"><figure><img src="/files/3NxtikWIcEtsM5LMktz3" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### ASYNC HTTP(S) Request&#x20;

## Overview

Send a **HTTP(S)** request to the specified URL using one of several supported request types. This node is useful for interacting with **RESTful APIs**, **web services**, or **cloud-hosted endpoints**. Automatically parses the response data into a **JSON** output.

You can send requests with or without a body, specify the timeout, and receive detailed information back, including status code, content type, and response headers. Useful for game server communication, cloud saves, analytics, player profile data, etc.

If you’re expecting a binary response, the node will automatically detect **binary-only** data and place it into the **Out Binary Data** output.&#x20;

**Note**: If the response contains binary content *inside a JSON structure*, it will still be delivered through **Out Json** as part of the parsed JSON payload.<br>

## Supported Request Types

* **GET**– Retrieves data from the server (**default**).
* **POST** – Sends data to the server, typically for creating new resources.
* **PUT** – Sends data to update/replace a resource.
* **PATCH** – Partially updates an existing resource.
* **DELETE** – Deletes a resource on the server.
* **HEAD** – Retrieves headers only (no body).
* **TRACE** – Echoes the received request (**used for diagnostics**).

## Inputs

* **URL** – The full URL to send the request to.
* **Request Type** – Select the HTTP verb from the supported types above.
* **Timeout** – Duration (**in seconds**) to wait for a server response before failing.
* [**Request Body**](/doc-http-json/structs#make-download-settings) – (**Optional**) JSON data or payload to send with the request (used with **POST**, **PUT**, **PATCH**). And header definition.

## Outputs

* **On Success** – Triggered when a valid response is received.
* **On Progress** – Fires as the request is actively processed.
* **On Streamed** – Fires as chunked responses are recieved. **SSE** or **binary only** data.
* **On Failed** – Triggered if the request fails.
* **Out Json** – Parsed JSON response object.
* **Out Binary Data** - If binary-only data is detected, it will be provided here for direct access.
* **Response Code** – The response code from the server.
* **Content Type** – The Content-Type header of the server response.
* **Response Headers** – An array of all headers returned by the server.

**Note:** If an error occurs during the HTTP request. Either from the server or within the node itself. An error message will be returned as a JSON response for you to handle in "**Out Json**".
{% endhint %}

***

### ASYNC Download File

<div data-full-width="false"><figure><img src="/files/IYmKcc3JSxZF5Y8nJnIV" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### ASYNC Download File

## Overview

Send a **HTTP(S)** **file download** request to a specified URL. This node can either return the raw **binary data** of the file or save the file directly to the user’s machine, depending on the **Download Settings** provided.

## Inputs

* **URL** – The full **HTTP/HTTPS** address of the file to be downloaded.
* **Timeout** – How long (**in seconds**) to wait before the request times out.
* [**Download Settings**](/doc-http-json/structs#make-download-settings) – Optional structure to define how the downloaded file will be handled after download has finished, and header definition.

## Outputs

* **On Success** – Executes when the file download completes successfully.
* **On Progress** – Called as the download progresses. Useful for tracking progress percentage.
* **On Failed** – Executes if the download fails.
* **Download Percentage** – A float value between 0.0 and 100 representing the progress of the download.
* **Response Code** – The response code from the server.
* **Downloaded Binary Data** – The raw binary file data. Only available if file is not directly saved to disk.
* **Response Headers** – An array of all headers returned by the server.
  {% endhint %}

***

### ASYNC Upload Multipart File

<div data-full-width="false"><figure><img src="/files/znYbNtwQwHWG9pB8dsy5" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### ASYNC Upload Multipart File

## Overview

Send a **multipart/form-data  upload request** to a specified URL. It allows uploading one or more binary files (**e.g. images, logs, audio, Videos**) to an external API using the **multipart/form-data** format. The request is fully customizable via **Upload Settings** and supports attaching extra headers and multipart fields.&#x20;

The server's response is parsed and returned as a **JSON** object.

## Inputs

* **URL** – The target endpoint to send the file upload request to.
* **Timeout** – How long (**in seconds**) to wait before the request times out.
* [**Upload Settings**](/doc-http-json/structs#make-httprequest-settings) – A structure that defines how the request is configured, including custom headers and option to choose a random or defined boundary.
* [**File Data**](/doc-http-json/structs#make-upload-file-data) – An array of file definitions. Each entry in this array represents a single file to be uploaded and includes all of its corresponding settings. Each file definition also supports its own individual **multipart form data**, allowing for precise control over how each file is handled in the request.

## Outputs

* **On Success** – Triggered when the file upload is successfully completed and a valid response is received.
* **On Progress** – Called as data is being uploaded.
* **On Failed** – Triggered when the request fails.
* **Out Json** – The parsed server response.
* **Response Code** – The response code from the server.
* **Content Type** – The Content-Type header of the server response.
* **Response Headers** – An array of all headers returned by the server.

**Note:** If an error occurs during the **Multipart upload request**. Either from the server or within the node itself. An error message will be returned as a JSON response for you to handle.
{% endhint %}

***

### ASYNC Multipart Request

<div data-full-width="false"><figure><img src="/files/YTD8LUf1mBOm4Rd0sQtf" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### ASYNC Multipart Request

## Overview

Send a **multipart/form-data HTTP request** to a specified URL. It's commonly used to transmit structured data in separate parts. Ideal for **form** submissions or **API payloads**. The multipart request is configured using the "**Multipart Data"** struct. Which allows full control over **headers**, boundaries. And last but not least the core Multipart data.

## Inputs

* **URL** – The endpoint to which the multipart request is sent.
* **Timeout** – How long (**in seconds**) to wait before the request times out.
* [**Multipart Data**](/doc-http-json/structs#make-multipart-http-data) – Structured multipart data built using **Make Multipart HTTPData**. This includes parts (fields or files), optional custom headers, and multipart boundary configuration.

## Outputs

* **On Success** – Triggered when the server responds with a successful HTTP code.
* **On Progress** – Fires as data is being sent.
* **On Failed** – Triggered when the request fails or times out.
* **Out Json** – A parsed JSON object returned by the server.
* **Response Code** – The response code from the server.
* **Content Type** – The Content-Type header of the server response.
* **Response Headers** – An array of all headers returned by the server.

**Note:** If an error occurs during the **Multipart request**. Either from the server or within the node itself. An error message will be returned as a JSON response for you to handle.
{% endhint %}

***

## Functions that are shared between non ASYNC HTTP(S) Nodes

### Add Headers To Request

<div data-full-width="false"><figure><img src="/files/jXoqbt8C6Sor6HSiGcdM" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Add Header To Request

## Overview

This utility node adds one or more **HTTP headers** to an existing HTTP request object. Headers are used to provide more information about the request. Such as authorization tokens, content types, client identifiers, or custom metadata. This is essential when communicating with APIs that require specific headers for access or formatting. This node must be called before the request is sent.

## Inputs

* **Target** – The **HTTP(S)** request object we want to set the headers for. The target node must be a child of class "**HTTPProxyBase**"
* **New Headers** – A map of headers to be added.

## Outputs

* **Success** – Returns **true** if the headers were successfully added to the request. Otherwise, returns **false.**
  {% endhint %}

***

### Remove Header From Request

<div data-full-width="false"><figure><img src="/files/T7wZbpyfumVn0NAfE9af" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Remove Header From Request

## Overview

This utility node removes a specified **HTTP(S)** header from an existing **HTTP(S)** request object provided by the "**Target**" input pin. Individual Headers are removed by specifying their key name. This can be useful when modifying or removing a single header from the existing request. This node must be called before the request is sent.

## Inputs

* **Target** – The **HTTP(S)** request object we want to remove the header for. The target node must be a child of class "**HTTPProxyBase**"
* **Key** – The name of the HTTP header to remove.

## Outputs

* **Success** – Returns **true** if the headers were successfully removed from the request. Otherwise, returns **false.**
  {% endhint %}

***

### Set New Timeout

<div data-full-width="false"><figure><img src="/files/fnB6F9mWQY9pL5idfcXB" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set New Timeout

## Overview

This utility node overrides the current timeout duration for a specific **HTTP(S)** request. The timeout defines how long (**in seconds**) the request will wait for a server response before being considered failed. This is particularly useful for adjusting responsiveness in low-latency or slow-network scenarios. This node must be called before the request is sent.

## Inputs

* **Target** – The **HTTP(S)** request object we want to set a new timeout for. The target node must be a child of class "**HTTPProxyBase**"
* **New Timeout** – Timeout duration in **seconds**.

## Outputs

None.
{% endhint %}

***

### Set New URL

<div data-full-width="false"><figure><img src="/files/6FPyYtI8cDnrt88CbaWV" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set New URL

## Overview

This node updates the **target URL** of an existing **HTTP(S)** request. It allows you to dynamically modify the endpoint address that the request will be sent to. Useful when when reusing request logic with variable endpoints or having a dynamic endpoint input. This node must be called before the request is sent.

## Inputs

* **Target** – The **HTTP(S)** request object we want to set a new URL  for. The target node must be a child of class "**HTTPProxyBase**"
* **New URL** – A string representing the new destination URL.

## Outputs

None.
{% endhint %}

***

### Process HTTP Request

<div data-full-width="false"><figure><img src="/files/1FA5jj331HaxuiBKJ7af" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

#### Process HTTP Request

## Overview

This node finalizes and sends a constructed **HTTP(S)** request to its desired URL using the settings and data you've defined prior to sending the request. It is the final step in sending the request and must be called after all modifications (e.g., setting URL, headers, timeout) are complete.

## Inputs

* **Target** – The **HTTP(S)** request object we want to set a new URL  for. The target node must be a child of class "**HTTPProxyBase**"

## Outputs

* **Success** – Returns **true** if the request was successfully sent to the endpoint. Otherwise returns **false.**
  {% endhint %}

***

### Cancel HTTP Request

<div data-full-width="false"><figure><img src="/files/qKFY2qkhBKCrGBkHOoOU" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Cancel HTTP Request

## Overview

This node cancels an **in-progress HTTP(S) request** tied to a given request object. If the request is currently executing or pending, it will be immediately terminated and treated as failed. This is useful for cases where the result is no longer needed.

## Inputs

* **Target** – The **HTTP(S)** request object we want to set a new URL  for. The target node must be a child of class "**HTTPProxyBase**"

## Outputs

* **Success** – Returns **true** if the request was successfully cancelled. Otherwise returns **false.**
  {% endhint %}

***

## Non ASNYC HTTP(S) Request

### Create New HTTP Request

<div data-full-width="false"><figure><img src="/files/Jh8m2gnHnanKXhSbSVVz" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Create New HTTP Request

## Overview

This node mirrors the functionality of the [**ASYNC** version](#async-http-s-request) but creates a new **non-ASYNC** **HTTP(S)** request instance. Since it is **non-ASYNC**, the request does not need to be sent immediately after creation. The node outputs an "**HTTPProxy"** object, which can be manually configured and executed. It is typically used in scenarios where developers need direct control over request execution, progress tracking, and the ability to cancel the request.

## Supported Request Types

* **GET**– Retrieves data from the server (**default**).
* **POST** – Sends data to the server, typically for creating new resources.
* **PUT** – Sends data to update/replace a resource.
* **PATCH** – Partially updates an existing resource.
* **DELETE** – Deletes a resource on the server.
* **HEAD** – Retrieves headers only (no body).
* **TRACE** – Echoes the received request (**used for diagnostics**).

## Inputs

* **URL** – The full URL to send the request to.
* **Request Type** – Select the HTTP verb from the supported types above.
* **Timeout** – Duration (**in seconds**) to wait for a server response before failing.
* [**Request Body**](/doc-http-json/structs#make-httprequest-settings) – (**Optional**) JSON data or payload to send with the request (used with **POST**, **PUT**, **PATCH**). And header definition.

## Outputs

* **Success -** Returns **true** if the request was created successfully. Otherwise, returns **false**.
* **Out HTTPRequest** - A proxy instance referencing your **HTTP(S)** request, which must be configured before execution.
  {% endhint %}

***

### Set HTTP Request Body

<div data-full-width="false"><figure><img src="/files/Uradh4F7v09bR4Gv5E0L" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set HTTP Request Body

## Overview

This node overrides the **HTTP(S)** request body with the new provided body. It will fully override the body. This is useful for cases where the full body is dynamically populated and needs to be updated. This node must be called before the request is sent.

## Inputs

* **Target** – The **HTTP(S)** request object we want to override the body for. The target node must be a child of class "**HTTPProxy**"
* [N**ew Request Body**](/doc-http-json/structs#make-http-body) – The new struct that will contain the new body of the request. This will override the current body of the request with the new passed in struct.

## Outputs

**None.**
{% endhint %}

***

### Set HTTP Request Type

<div data-full-width="false"><figure><img src="/files/WSaR0UAUpxV41r0LrIKR" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set HTTP Request Type

## Overview

This node overrides the **HTTP(S)** Verb for the specified request. This is a fundamental part of defining how the request will behave and interact with an API endpoint. This is a useful node if the Verb of the **HTTP(S)** request needs to change dynamically. This node must be called before the request is sent.

## Supported Request Types

* **GET**– Retrieves data from the server (**default**).
* **POST** – Sends data to the server, typically for creating new resources.
* **PUT** – Sends data to update/replace a resource.
* **PATCH** – Partially updates an existing resource.
* **DELETE** – Deletes a resource on the server.
* **HEAD** – Retrieves headers only (no body).
* **TRACE** – Echoes the received request (**used for diagnostics**).

## Inputs

* **Target** – The **HTTP(S)** request object we want to override the Request type for. The target node must be a child of class "**HTTPProxy**"
* **New Request Type**– The new request type to override the target **HTTP(S) proxy** request.

## Outputs

**None.**
{% endhint %}

***

### Delegate - OnSuccess

<div data-full-width="false"><figure><img src="/files/mryZEJW3d6MnZXW7qcm1" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Delegate OnSuccess

## Overview

This node is used to bind a and listen to the event **On Success,** for [non ASYNC **HTTP(S)** request](#create-new-http-request). When the **HTTP** request completes successfully, the bound event is triggered and supplied you with the response data. The event must be bound **before** the request is initiated to ensure proper tracking during execution.

## Inputs

* **Target** – The **HTTP(S)** request object we want to bind the delegate from. The target node must be a child of class "**HTTPProxy**"

## Outputs

* **Out Json** – Parsed JSON response object.
* **Out Binary Data** - If binary-only data is detected, it will be provided here for direct access.
* **Response Code** – The response code from the server.
* **Content Type** – The Content-Type header of the server response.
* **Response Headers** – An array of all headers returned by the server.
  {% endhint %}

***

### Delegate - OnProgress

<div data-full-width="false"><figure><img src="/files/9fwMAQbKwtgfbjmtjypG" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Delegate OnProgress

## Overview

This node is used to bind and listen to the **On Progress** event for [non-ASYNC **HTTP(S)** requests](#create-new-http-request). It allows you to monitor and respond to the progress of an ongoing **HTTP** request. The event must be bound **before** the request is initiated to ensure proper tracking during execution.

## Inputs

* **Target** – The **HTTP(S)** request object we want to bind the delegate from. The target node must be a child of class "**HTTPProxy**"

## Outputs

* **Out Json –** Parsed JSON response object.
* **Out Binary Data** - If binary-only data is detected, it will be provided here for direct access.
* **Response Code** – The response code from the server.
  {% endhint %}

### Delegate - OnStreamed

<div data-full-width="false"><figure><img src="/files/sFyThZutyBVYfl0jUq3k" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Delegate OnStreamed

## Overview

This node is used to bind to and listen for the **On Streamed** event for [non-ASYNC HTTP(S) requests](#create-new-http-request). It allows you to receive streamed responses from a server. The event can trigger multiple times as complete chunks of the response are received.

## Inputs

* **Target** – The **HTTP(S)** request object we want to bind the delegate from. The target node must be a child of class "**HTTPProxy**"

## Outputs

* **Out Json** – Used for **SSE** (**Server-Sent Events**) responses. Events are encoded as JSON, allowing you to extract and use the data.
* **Out Binary Data** – Contains the raw binary data. Use this if you are expecting a binary-only response.
  {% endhint %}

***

***

### Delegate - OnFailed

<div data-full-width="false"><figure><img src="/files/7kfn03x4hv23qreKiprH" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Delegate OnFailed

## Overview

This node is used to bind and listen to the **On Failed** event for [non-ASYNC **HTTP(S)** requests.](#create-new-http-request) If the request fails, either due to a network error, timeout, invalid endpoint, or server-side issue. The bound custom event will be triggered, allowing you to handle the failure. The input pins do not have to be populated with creation of this proxy object.

## Inputs

* **Target** – The **HTTP(S)** request object we want to bind the delegate from. The target node must be a child of class "**HTTPProxy**"

## Outputs

* **Out Json** – Parsed JSON response object.
* **Out Binary Data** - If binary-only data is detected, it will be provided here for direct access.
* **Response Code** – The response code from the server.
* **Content Type** – The Content-Type header of the server response.
* **Response Headers** – An array of all headers returned by the server.

**Note:** If an error occurs during the **HTTP Request**. Either from the server or within the node itself. An error message will be returned as a JSON response for you to handle.
{% endhint %}

***

## Non ASNYC Multipart Request

### Create New Multipart Request

<div data-full-width="false"><figure><img src="/files/HpeGHRVCHxlvjGqlOlDk" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Create New Multipart Request

## Overview

This node mirrors the functionality of the [ASYNC **multipart**](#async-multipart-request) variant but creates a new **non-ASYNC** **HTTP(S) multipart request** instance. Since it is **non-ASYNC**, the request does not need to be sent immediately after creation.&#x20;

The node outputs an **MultipartProxy** object, which can be manually configured and executed at a later time. This setup is ideal for developers who require direct control over how the request is  sent, tracked and potentially cancelled. The input pins do not have to be populated with creation of this proxy object.

## Inputs

* **URL** – The target URL to which the multipart request will be sent.
* **Timeout** – Duration (**in seconds**) to wait for a server response before failing.
* [**Multipart Data**](/doc-http-json/structs#make-multipart-http-data) – Struct multipart data to be sent with the request. This includes the main body of the request.

## Outputs

* **Success -** Returns **true** if the request was created successfully. Otherwise, returns **false**.
* **Out Multipart Request** - A proxy instance referencing your **Multipart** request, which must be configured before execution.
  {% endhint %}

***

### Add Multi-part Data To Request

<div data-full-width="false"><figure><img src="/files/uj2dsBsV8Vl1u4gTH5Eo" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Add Multi-part Data To Request

## Overview

This node appends additional multipart data to an existing **multipart HTTP request**. It is used in scenarios where you need to include more multipart fields after the initial request object has been constructed. This node must be called before the request is sent.

## Inputs

* **Target** – The multipart request object to which the new multipart data will be appended. The target node must be a child of the "**MultipartProxy"** class.
* **New Multipart Data** – A map that holds key-value pairs. This map represents the new multipart data you want to add to your request.

## Outputs

* **Success -** Returns **true** if the request was created successfully. Otherwise, returns **false**.
  {% endhint %}

***

### Toggle Random Boundary&#x20;

<div data-full-width="false"><figure><img src="/files/XOvpfPXFxlqH35BCQBCc" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Toggle Random Boundary

## Overview

This node toggles the "**Random Boundary**" setting used in **multipart** **HTTP** requests. Boundaries are required in multipart formats to separate parts of the request payload. When enabled, a randomly generated boundary will be used. when disabled, a custom boundary must be supplied. This node must be called before the request is sent.

## Inputs

* **Target** – The multipart request object to which the new random boundary bool set. The target node must be a child of the "**MultipartProxy"** class.
* **New Random Boundary -** Set to **true** to enable random boundary generation, set to **false** to disable it, requiring manual boundary configuration.

## Outputs

None.
{% endhint %}

***

### Set Random Boundary

<div data-full-width="false"><figure><img src="/files/h7Fq6Fd7TsuD1SWImQW3" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set Random Boundary

## Overview

This node sets a custom boundary string for a **multipart HTTP request**. **Multipart** boundaries are used to define where each part of the payload begins and ends. This node gives you manual control over the boundary value when random generation is disabled. This node must be called before the request is sent.

**Note:** This node has no effect if the "**Random Boundary**" setting is enabled. To use this node effectively, make sure **random boundary** generation is turned off using the [**Toggle Random Boundary**](#toggle-random-boundary) node, or in the request body.

## Inputs

* **Target** – The multipart request object to which the new boundary will be set. The target node must be a child of the "**MultipartProxy"** class.
* **New Boundary -** A custom string value to use as the **multipart boundary**. Must follow proper boundary formatting.

## Outputs

None.
{% endhint %}

***

### Set Request Data

<div data-full-width="false"><figure><img src="/files/B6pip62aZLkdscBEyN9k" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set Request Data

## Overview

This node overrides the entire **multipart body** of a **multipart HTTP reques**t with new **multipart data**. It is used when you want to fully replace the request's contents with a new set of multipart data.

This is ideal for situations where you've generated multipart data externally or want to reuse predefined data across multiple requests. This node must be called before the request is sent.

## Inputs

* **Target** – The multipart request object whose data is to be overridden. The target must be a child of "**MultipartProxy"** class.
* [**New Multipart Data**](/doc-http-json/structs#make-multipart-http-data) **-** The new multipart data that will completely replace the current **multipart payload**.

## Outputs

None.
{% endhint %}

***

### Delegate - OnSuccess

<div data-full-width="false"><figure><img src="/files/tqtS5qhixG7gJJDCaxnA" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Delegate OnSuccess

## Overview

This node is used to bind a and listen to the event **On Success,** for non ASYNC **multipart HTTP** request. When the **multipart HTTP reques**t completes successfully, the bound event is triggered and supplied you with the response data. The event must be bound **before** the request is initiated to ensure proper tracking during execution.

## Inputs

* **Target** – The **multipart HTTP reques**t object we want to bind the delegate from. The target node must be a child of class "MultipartProxy"

## Outputs

* **Out Json** – Parsed JSON response object.
* **Response Code** – The response code from the server.
* **Content Type** – The Content-Type header of the server response.
* **Response Headers** – An array of all headers returned by the server.
  {% endhint %}

***

### Delegate - OnProgress

<div data-full-width="false"><figure><img src="/files/FVNmCR0Nrq5OSR9zz7OE" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Delegate OnProgress

## Overview

This node is used to bind and listen to the **On Progress** event for non-ASYNC **multipart HTTP** requests. It allows you to monitor and respond to the progress of an ongoing **multipart HTTP** request. The event must be bound **before** the request is initiated to ensure proper tracking during execution.

## Inputs

* **Target** – The **multipart HTTP reques**t object we want to bind the delegate from. The target node must be a child of class "MultipartProxy"

## Outputs

* **Out Json** – Parsed JSON response object.
* **Response Code** – The response code from the server.
  {% endhint %}

***

### Delegate - OnFailed

<div data-full-width="false"><figure><img src="/files/34kAgLZCAC6JWC4QPbt7" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Delegate OnFailed

## Overview

This node is used to bind and listen to the **On Failed** event for non-ASYNC **multipart HTTP** requests. If the request fails, either due to a network error, timeout, invalid endpoint, or server-side issue. The bound custom event will be triggered, allowing you to handle the failure. The input pins do not have to be populated with creation of this proxy object.

## Inputs

* **Target** – The **multipart HTTP reques**t object we want to bind the delegate from. The target node must be a child of class "MultipartProxy"

## Outputs

* **Out Json** – Parsed JSON response object.
* **Response Code** – The response code from the server.
* **Content Type** – The Content-Type header of the server response.
* **Response Headers** – An array of all headers returned by the server.

**Note:** If an error occurs during the **Multipart request**. Either from the server or within the node itself. An error message will be returned as a JSON response for you to handle.
{% endhint %}

***

## Non ASNYC Upload Multipart Request

### Create New Upload Multipart Request

<div data-full-width="false"><figure><img src="/files/FVhx9lf3nq3A5xtjCrIn" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Create New Upload Multipart Request

## Overview

This node mirrors the functionality of the [ASYNC **multipart Upload** ](#async-upload-multipart-file)variant but creates a new **non-ASYNC** **upload multipart HTTP** request object. It is specifically designed to send binary files and associated metadata to a specified URL via a **multipart request format**. Unlike regular multipart requests, this version includes dedicated support for file data structures and upload configuration.

The node outputs a "**MultipartUploadProxy"** object that can be further customized before executing the upload.

## Inputs

* **URL** – The target URL to which the multipart request will be sent.
* **Timeout** – Duration (**in seconds**) to wait for a server response before failing.
* [**Upload Settings**](/doc-http-json/structs#make-httprequest-settings) **-** A struct that contains core configuration settings for the request, such as boundary definitions and headers.
* [**File Data**](/doc-http-json/structs#make-upload-file-data) **-** The primary array containing all the necessary information to construct the upload request. Each entry in the array represents a separate file to be uploaded.

## Outputs

* **Success -** Returns **true** if the request was created successfully. Otherwise, returns **false**.
* **Out Multipart Request** - A proxy instance referencing your "**MultipartUploadProxy"** request, which must be configured before execution.
  {% endhint %}

***

### Set File Data

<div data-full-width="false"><figure><img src="/files/t3f3m8QGE62qmMXsLejf" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set File Data

## Overview

This node overrides the primary array holding all the files you wish to upload with the new passed in array data. It is typically used when you want to replace all files with new data. This node must be called before the request is sent.

## Inputs

* **Target** – The Upload multipart request object whose data is to be overridden. The target must be a child of "**MultipartUploadProxy"** class.
* [**New File Data**](/doc-http-json/structs#make-upload-file-data) **-** The new array containing individual file data that will override the existing data.

## Outputs

None.
{% endhint %}

***

### Add File Binary Data

<div data-full-width="false"><figure><img src="/files/A7YV5EKQtXRBcll9PqGj" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Add File Binary Data

## Overview

This node appends a single binary file entry to the internal file data array used in a **multi-part upload HTTP request**. Unlike [ **Set File Data**](#set-file-data), which replaces the entire array, this node allows incremental addition of individual files without overriding existing entries. Useful when constructing file uploads dynamically.

## Inputs

* **Target** – The multipart request instance to which the new binary file will be added. The target must be a child of "**MultipartUploadProxy"** class.
* [**New File Data**](/doc-http-json/structs#make-upload-file-data) **-** The data for the new file to be uploaded. This includes metadata such as file name, content type, and the binary payload.

## Outputs

None.
{% endhint %}

***

### Set Upload Settings

<div data-full-width="false"><figure><img src="/files/iMTHWtApXkeeoo9JJY8s" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set Upload Settings

## Overview

This node overrides the current upload configuration of a **multipart upload request** by applying a new set of upload settings. These settings control how the **multipart HTTP Upload request** will behave. Such as the boundary string used or headers.

## Inputs

* **Target** – The multipart request instance whose settings will be overridden. The target must be a child of "**MultipartUploadProxy"** class.
* [**New Upload Settings**](/doc-http-json/structs#make-httprequest-settings) **-** The new settings structure containing configuration for the **Multipart Upload Request.**

## Outputs

None.
{% endhint %}

***

### Toggle Random Boundary&#x20;

<div data-full-width="false"><figure><img src="/files/I4XRlvXwzkQ05POxxYFa" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Toggle Random Boundary

## Overview

This node toggles the "**Random Boundary**" setting used in **multi-part upload HTTP** requests. Boundaries are required in multipart formats to separate parts of the request payload. When enabled, a randomly generated boundary will be used. when disabled, a custom boundary must be supplied. This node must be called before the request is sent.

## Inputs

* **Target**– The multipart request object to which the new random boundary bool set. The target node must be a child of the "**MultipartUploadProxy"** class.
* **New Random Boundary**: Set to **true** to enable random boundary generation, set to **false** to disable it, requiring manual boundary configuration.

## Outputs

None.
{% endhint %}

***

### Set Random Boundary

<div data-full-width="false"><figure><img src="/files/EdN2FIvSESlBrOskGffl" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set Random Boundary

## Overview

This node sets a custom boundary string for a **multi-part upload HTTP request**. **Multipart** boundaries are used to define where each part of the payload begins and ends. This node gives you manual control over the boundary value when random generation is disabled. This node must be called before the request is sent.

**Note:** This node has no effect if the "**Random Boundary**" setting is enabled. To use this node effectively, make sure **random boundary** generation is turned off using the [**Toggle Random Boundary**](#toggle-random-boundary-2) node, or in the request body.

## Inputs

* **Target**– The multipart request object to which the new boundary will be set. The target node must be a child of the "**MultipartUploadProxy"** class.
* **New Boundary:** A custom string value to use as the **multipart boundary**. Must follow proper boundary formatting.

## Outputs

None.
{% endhint %}

***

### Delegate - OnSuccess

<div data-full-width="false"><figure><img src="/files/tqtS5qhixG7gJJDCaxnA" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Delegate OnSuccess

## Overview

This node is used to bind a and listen to the event **On Success,** for non ASYNC **multi-part upload HTTP** request. When the **multi-part upload HTTP reques**t completes successfully, the bound event is triggered and supplied you with the response data. The event must be bound **before** the request is initiated to ensure proper tracking during execution.

## Inputs

* **Target** – The **multi-part upload HTTP reques**t object we want to bind the delegate from. The target node must be a child of class "**MultipartUploadProxy**"

## Outputs

* **Out Json** – Parsed JSON response object.
* **Response Code** – The HTTP status code.
* **Content Type** – The Content-Type header of the server response.
* **Response Headers** – An array of all headers returned by the server.
  {% endhint %}

***

### Delegate - OnProgress

<div data-full-width="false"><figure><img src="/files/FVNmCR0Nrq5OSR9zz7OE" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Delegate OnProgress

## Overview

This node is used to bind and listen to the **On Progress** event for non-ASYNC **multi-part upload HTTP** requests. It allows you to monitor and respond to the progress of an ongoing **multi-part upload HTTP** request. The event must be bound **before** the request is initiated to ensure proper tracking during execution.

## Inputs

* **Target** – The **multi-part upload HTTP reques**t object we want to bind the delegate from. The target node must be a child of class "**MultipartUploadProxy**"

## Outputs

**None.**
{% endhint %}

***

### Delegate - OnFailed

<div data-full-width="false"><figure><img src="/files/34kAgLZCAC6JWC4QPbt7" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Delegate OnFailed

## Overview

This node is used to bind and listen to the **On Failed** event for non-ASYNC **multi-part upload HTTP** requests. If the request fails, either due to a network error, timeout, invalid endpoint, or server-side issue. The bound custom event will be triggered, allowing you to handle the failure. The input pins do not have to be populated with creation of this proxy object.

## Inputs

* **Target** – The **multi-part upload HTTP reques**t object we want to bind the delegate from. The target node must be a child of class "**MultipartUploadProxy**"

## Outputs

* **Out Json** – Parsed JSON response object.
* **Response Code** – The HTTP status code.
* **Content Type** – The Content-Type header of the server response.
* **Response Headers** – An array of all headers returned by the server.

**Note:** If an error occurs during the **Multipart upload request**. Either from the server or within the node itself. An error message will be returned as a JSON response for you to handle.
{% endhint %}


# Websockets

## Websocket's

### Create New WebSocket Request

<div data-full-width="false"><figure><img src="/files/iWleEyEdzxU2vghhRsqv" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Create New WebSocket Request

## Overview

Creates a new **WebSocket request** object that can be configured and used to establish a connection with a WebSocket server. This node is typically used as the starting point for initiating WebSocket-based communication in your application.

The output is a **WebSocketProxy** object that allows further configuration before connecting to the server.

## Inputs

* **URL** – The WebSocket server URL to which the connection will be made. This node will only work with URLs such as: **wss\://example.com/socket**
* [**WebSocket Settings**](/doc-http-json/structs#make-web-socket-settings) – Optional settings structure to define headers and protocols.

## Outputs

* **Success** – Returns true if the WebSocket request was created successfully. Otherwise false.
* **Out Websocket Request** – The request object to be used for further setup or initiating the connection.
  {% endhint %}

***

### Connect To WebSocket

<div data-full-width="false"><figure><img src="/files/gzt5ykPflJVdE7q7Hmt3" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Connect To WebSocket&#x20;

## Overview

Initiates a connection to a **WebSocket** server using the provided **WebSocket** request object "**WebSocket Proxy**". This node attempts to open the connection defined in the request. If successful, the socket can be used to send and receive **real-time** data.

This should be called after the request has been fully configured (**URL, headers, delegate binds etc...**).

## Inputs

* **Target** – The WebSocket request object used to establish the connection. Must be of type **WebSocket Proxy**.

## Outputs

* **Success** – Returns **true** if the connection to the **WebSocket server** was successfully established. Otherwise **false**.
  {% endhint %}

***

### Close WebSocket Connection

<div data-full-width="false"><figure><img src="/files/6tkxH3cBTejl1PtOm2b1" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Close WebSocket Connection

## Overview

Closes an **active WebSocket connection**. You can specify a closure code and an optional reason to explain the disconnection. This node should be used when the connection is no longer needed or to gracefully shut down the session.

Common use cases include clean-up on exit, handling network errors, or controlled shutdowns from the client side.

Note: A useful website that provides most of the common **WebSocket** closure codes along with a description of each: <https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent/code>

## Inputs

* **Target** – The **WebSocket Proxy** object representing the active connection you want to close.
* **Code** – Optional WebSocket close code.
* **Reason** – Optional string reason for the closure, which can be used for logging or diagnostics.

## Outputs

* **Success** – Returns true if the connection was successfully closed. Otherwise false.
  {% endhint %}

***

### Send Binary Data

<div data-full-width="false"><figure><img src="/files/SpHqP4DcSIRrchDNFcZI" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Send Binary Data

## Overview

Sends **binary** data through an established **WebSocket** connection. This is used for transferring non-text payloads such as files or encoded assets to the server.

This node is part of the **WebSocket** communication system and should only be used after a **successful** connection is made.

**Note**: We recommend using a node [**Is Websocket Connected**](#is-websocket-connected) to first check if a valid connection is established between the client and the server.

## Inputs

* **Target** – The **WebSocket Proxy** object representing the active connection you want to use for binary data sending.
* **Binary Data** – The binary payload to send.

## Outputs

* **Success** – Returns true if the data was successfully sent to the server, otherwise false.
  {% endhint %}

***

### Send String Data

<div data-full-width="false"><figure><img src="/files/1QLOImgr61J80cjipgkq" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Send String Data

## Overview

Sends a **text-based** message to the connected **WebSocket server**. This is used for sending **JSON** data to the WebSocket connection.&#x20;

This node should only be called after a successful connection has been established.

**Note**: Recommended node to check connection is [**Is Websocket Connected**](#is-websocket-connected) to first check if a valid connection is established between the client and the server.

## Inputs

* **Target** – The **WebSocket Proxy** object representing the active connection you want to use for string data sending.
* **Data** – The Json object that contains the data you wish to send to the server.

## Outputs

* **Success** – Returns true if the message was successfully sent to the server, otherwise false.
  {% endhint %}

***

### Set New Websocket Headers

<div data-full-width="false"><figure><img src="/files/Bx3DDbxL8gNyU1BiKIsH" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set New WebSocket Headers

## Overview

Replaces the current WebSocket headers with a new set of headers. This is typically used to configure authentication tokens, custom identifiers, or other metadata **before** initiating a **WebSocket** connection.

This must be called **before** attempting to connect to the server.

**Note**: Recommended node to check connection is [**Is Websocket Connected**](#is-websocket-connected) to first check if a valid connection is established between the client and the server.

## Inputs

* **Target** – The **WebSocket Proxy** instance to apply the new headers to.
* **Headers** – A map of key–value pairs (**as strings**) representing the new headers to use in the **WebSocket**.

## Outputs

**None.**
{% endhint %}

***

### Add New WebSocket Header

<div data-full-width="false"><figure><img src="/files/kc9LeFHgPNQbiFyv538I" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Add New WebSocket Header

## Overview

Appends new header entries to the existing **WebSocket header list** without replacing previously defined headers. This is useful when you want to add custom metadata or authentication fields incrementally before initiating a connection.

This node is additive. it does **not** overwrite the current header set.

**Note**: Recommended node to check connection is [**Is Websocket Connected**](#is-websocket-connected) to first check if a valid connection is established between the client and the server.

## Inputs

* **Target** – The **WebSocket Proxy** instance to append the new header to.
* **Headers** – A map of key–value pairs (**as strings**) representing the headers you want to add.

## Outputs

* **Success** – Returns **true** if the headers were successfully added. Otherwise **false**.
  {% endhint %}

***

### Remove WebSocket Header

<div data-full-width="false"><figure><img src="/files/RGL1uq1ehvGkyfg1bPqX" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Remove WebSocket Header

## Overview

Removes one header from the current **WebSocket configuration** using the specified **key**. This is useful for dynamically cleaning up or adjusting headers before attempting a connection. If the key exists in the current header map, all associated entries will be deleted.

**Note**: Recommended node to check connection is [**Is Websocket Connected**](#is-websocket-connected) to first check if a valid connection is established between the client and the server.

## Inputs

* **Target** – The **WebSocket Proxy** instance to remove a header from.
* **Header Key** – A string key identifying the header to remove. This key must match exactly a key in the already existing headers. Otherwise the node does nothing.

## Outputs

None.
{% endhint %}

***

### Set New WebSocket Protocols

<div data-full-width="false"><figure><img src="/files/yUVkHzrBtmPqkwxzvAvN" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set New WebSocket Protocols

## Overview

Replaces the current array of protocols in the **WebSocket Proxy** instance with the new array of provided protocols. This configuration must be set before initiating the connection.

**Note**: Recommended node to check connection is [**Is Websocket Connected**](#is-websocket-connected) to first check if a valid connection is established between the client and the server.

## Inputs

* **Target** – The **WebSocket Proxy** instance to override the protocols for.
* **Protocols** – An array of **string** values representing the new protocols to include in the **WebSocket** handshake.

## Outputs

None.
{% endhint %}

***

### Add New WebSocket Protocol

<div data-full-width="false"><figure><img src="/files/4WQ58JowLhUyHKW9dsbh" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

#### Add New WebSocket Protocol

## Overview

Adds a new **protocol** to the list of existing **WebSocket protocols**. WebSocket protocols help define the subprotocol to use during the connection handshake. This node can be used to append one protocol name dynamically before initiating the connection.

**Note:** Protocols should be added before calling the [**Connect to WebSocket** node](#connect-to-websocket). Changing protocols after connection has no effect.

## Inputs

* **Target** – The **WebSocket Proxy** instance to add a new protocol too.
* **Protocols** – An array of protocol **strings** to add. Each entry defines a new protocol to support in the WebSocket handshake.

## Outputs

* **Success** – Returns **true** if the protocols were successfully added to the proxy. Otherwise **false**.
  {% endhint %}

***

### Remove WebSocket Protocol

<div data-full-width="false"><figure><img src="/files/i0Mhr410hgSXyrqWXMkr" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Remove WebSocket Protocol

## Overview

Removes all instances of a specific protocol from the WebSocket protocol list. This is useful for dynamically cleaning or updating the list of supported subprotocols before initiating the **WebSocket connection.**

**Note:** Protocols should be added before calling the [**Connect to WebSocket** node](#connect-to-websocket). Changing protocols after connection has no effect.

## Inputs

* **Target** – The **WebSocket Proxy** instance to remove all instances of a protocol.
* **Protocol to Remove** – The name of the protocol (**as a string**) that should be removed from the array.

## Outputs

None.
{% endhint %}

***

### Set New WebSocket URL

<div data-full-width="false"><figure><img src="/files/ioWfm9zzvOQqvaTaIqIO" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set New WebSocket URL

## Overview

Replaces the current **WebSocket** connection **URL** with a new one. This node is typically used when you want to reconfigure or repoint a **WebSocket** request to a different server before attempting a connection.

**Note:** Protocols should be added before calling the [**Connect to WebSocket** node](#connect-to-websocket). Changing URL after connection has no effect.

## Inputs

* **Target** – The **WebSocket Proxy** instance of witch the URL is being modified.
* **New URL** – The new WebSocket URL (**as string**) to assign. Must follow valid WebSocket formats like **ws\://** or **wss\://**.

## Outputs

**None.**
{% endhint %}

***

### Set New Text Memory Limit

<div data-full-width="false"><figure><img src="/files/jlDud7gsipqCp9cJMySp" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set New Text Memory Limit

## Overview

Adjusts the maximum **UTF-8** text memory limit that can be received from the connected server on this socket. This is useful when handling larger payloads or expanding the allowed message size during WebSocket communication.

**Note:** If not modified, the limit defaults to **1 MB**. Changing this value after the connection is established has no effect.

## Inputs

* **Target** – The **WebSocket Proxy** instance of witch the Text Memory Limit is being modified.
* **Size** – The new buffer size of the memory limit you wish to recieve from a given server on the current socket.

## Outputs

**Success** – Returns **true** if the text memory limit has been changed. Otherwise **false**.
{% endhint %}

***

## WebSocket's Pure

### Is WebSocket Connected

<div data-full-width="false"><figure><img src="/files/ZFUBCIdR2F3fGu3c0zHY" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Is WebSocket Connected

## Overview

Checks whether the **WebSocket** is currently connected to a server. This is a simple status-check node that returns a Boolean result, allowing you to verify the active state of the WebSocket connection before attempting further operations like sending or receiving data.

## Inputs

* **Target** – The **WebSocket Proxy** instance you wish to check if its currently connected to a server.

## Outputs

* **Is Connected** – Returns **true** if the **WebSocket** is actively connected to a server, **false** otherwise.
  {% endhint %}

***

## WebSocket's Delegates

### Delegate On Connected

<div data-full-width="false"><figure><img src="/files/ijsjTzjXQheAwFjChltr" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### WebSocket On Connected

## Overview

Binds a custom event to the **OnConnected** delegate of a **WebSocket Proxy** instance. This event is triggered when the WebSocket connection is successfully established with the server.<br>

This delegate should be bound before calling the [**Connect To WebSocket**](#connect-to-websocket) function, or the event may not fire correctly.

## Inputs

* **Target** – The **WebSocket Proxy** instance you wish to bind the event from.

## Outputs

**None.**
{% endhint %}

***

### Delegate On Closed

<div data-full-width="false"><figure><img src="/files/ibKhAvQc3m4949AHVkOv" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### WebSocket On Closed

## Overview

Binds a custom event to the **OnClosed** delegate of a **WebSocket Proxy** instance. This event is triggered when the WebSocket connection is closed, either by the client or the server.

The bound event provides details about the closure, including status code, reason, and whether the connection was cleanly closed.

This delegate should be bound before calling the [**Connect To WebSocket**](#connect-to-websocket) function, or the event may not fire correctly.

## Inputs

* **Target** – The **WebSocket Proxy** instance you wish to bind the event from.

## Outputs

* **Status Code** – The WebSocket close code that describes why the connection was terminated.
* **Reason** – A human-readable reason **string**, why the connection was closed. Provided by the remote server. Parsed into a JSON object.
* **Was Clean** – A **Boolean** indicating whether the connection was closed cleanly (**true**) or abruptly (**false**).
  {% endhint %}

***

### Delegate Binary Data Sent

<div data-full-width="false"><figure><img src="/files/x382rPO8HanBzJHMDkkn" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### WebSocket Binary Data Sent

## Overview

Binds a custom event to the **Binary Data Sent** delegate of a **WebSocket Proxy** instance. This event is triggered whenever binary data is successfully sent through the **WebSocket** connection.

The bound event provides access to the exact binary payload, the size of the data sent, and the remaining bytes queued for transmission (**if any**). Use this to track upload status or perform post-send actions.

This delegate should be bound before calling the [**Connect To WebSocket**](#connect-to-websocket) function, or the event may not fire correctly.

## Inputs

* **Target** – The **WebSocket Proxy** instance you wish to bind the event from.

## Outputs

* **Binary Data** – The actual binary payload that was sent.
* **Binary Size** – The size (**in bytes**) of the sent binary data.
* **Bytes Remaining** – The number of bytes still pending transmission (**useful for chunked or large data sends**).
  {% endhint %}

***

### Delegate On Text Sent  (As Json)

<div data-full-width="false"><figure><img src="/files/i4tgGdeaBGQW7OFlDFRo" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### On Text Sent (As Json)

## Overview

Binds a custom event to the **On Text Sent** delegate of a **WebSocket Proxy** instance. This event is triggered whenever a **string**-based message is successfully sent over the **WebSocket** connection.

Use this to confirm message delivery or track/log text data that was sent. The event provides the full text payload sent to the server.

This delegate should be bound before calling the [**Connect To WebSocket**](#connect-to-websocket) function, or the event may not fire correctly.

## Inputs

* **Target** – The **WebSocket Proxy** instance you wish to bind the event from.

## Outputs

* **Data Sent** – The full string as a Json object that was sent to the WebSocket server.
  {% endhint %}

***

### Delegate Binary Data Received

<div data-full-width="false"><figure><img src="/files/WsrgK5FsePZiN4IMpqbO" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### WebSocket Binary Data Received

## Overview

Binds a custom event to the **Binary Data Received** delegate of a **WebSocket Proxy** instance. This event is triggered whenever binary data is received from the **WebSocket server**.

Use this to handle **incoming binary payloads**, such as **files**, b**yte-encoded objects**, or **custom binary protocols**. If the message is received in parts (**fragments**), the final fragment will be marked accordingly.

This delegate should be bound before calling the [**Connect To WebSocket**](#connect-to-websocket) function, or the event may not fire correctly.

## Inputs

* **Target** – The **WebSocket Proxy** instance you wish to bind the event from.

## Outputs

* **Binary Data** – The raw byte array received from the server.
* **Binary Size** – The total size (**in bytes**) of the received data.
* **Is Last Fragment** – Boolean indicating whether this chunk is the final part of a fragmented message.
  {% endhint %}

***

### Delegate On Message Received

<div data-full-width="false"><figure><img src="/files/xsCmliC3rknFf1W2oFTL" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### WebSocket On Message Received

## Overview

Binds a custom event to the **On Message Received** delegate of a **WebSocket Proxy** instance. This event is triggered when a complete **UTF-8** text message is received from the **WebSocket server,** and is automatically parsed into a valid JSON object for further JSON manipulation.

This is useful for applications that communicate using JSON, plain text, or other string-based protocols over WebSocket.

This delegate should be bound before calling the [**Connect To WebSocket**](#connect-to-websocket) function, or the event may not fire correctly.

## Inputs

* **Target** – The **WebSocket Proxy** instance you wish to bind the event from.

## Outputs

* **Message Received** – A JSON object containing the full content of the received text message.
  {% endhint %}

***

### Delegate On Connection Error

<div data-full-width="false"><figure><img src="/files/Z86fC7jVL2JFfwU4O3i9" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### WebSocket On Connection Error

## Overview

Binds a custom event to the **On Connection Error** delegate of a **WebSocket Proxy** instance. This event is triggered if the **WebSocket** fails to connect to the server due to issues like an invalid URL, network failure, timeout, or server-side rejection. Use this node to catch and handle connection problems.

This delegate should be bound before calling the [**Connect To WebSocket**](#connect-to-websocket) function, or the event may not fire correctly.

## Inputs

* **Target** – The **WebSocket Proxy** instance you wish to bind the event from.

## Outputs

* **Error** – Automatically parsed string into a **JSON** object describing the cause of the connection failure.
  {% endhint %}


# Structs

## Structs

### Make Json HTTP File Data

<div data-full-width="false"><figure><img src="/files/8skfa2HmAgZDo5gdSSCc" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Json HTTP File Data

## Overview

Creates a struct reference to a file using a directory path and file name. This struct is used across various systems for handling file-based operations such as loading or saving files. It serves as a general-purpose file descriptor, simplifying access to files on the user's machine.

## Inputs

* **File Directory** – The full system path to the folder containing the file.
* **File Name** – The name of the file, including its extension (e.g., **example.json**, **output.txt**).

## Outputs

* **Json Http File Data** – A unified struct representing the target file. It can be used in nodes related to reading, writing, uploading, or processing both JSON and binary file types. This is the core struct used for file-based operations in this plugin.
  {% endhint %}

***

### Make HTTP Body

<div data-full-width="false"><figure><img src="/files/bM6zOpSm3uFhJBYkv0oc" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### HTTP Body

## Overview

Creates a struct **HTTP body** for use in both [**ASYNC** ](/doc-http-json/http#async-http-s-request)and [**non-ASYNC**](/doc-http-json/http#create-new-http-request) **HTTP requests**. This body includes headers, raw string data, or a JSON object, depending on your setup. You define the data payload you want to send in the request using this struct. If you use the "**JSON Body"**, the "**String Body**" will be ignored, and vice versa. This node allows you to configure the content of your request in a clean and reusable format.

**NOTE:** If no headers are provided, the content type defaults to **application/json.**

**NOTE:** If you are sending a GET request, any data payload is ignored. (**Json Body + String Body**)

## Inputs

* **Headers** – A map of header key–value pairs that should be included with the request.
* **Json Body** – A fully constructed JSON object to include as the request body.
* **String Body** – A plain text or formatted string payload (e.g., XML, CSV, or custom text).
* **SStreamed Request –** This toggle controls the behaviour and response of the request.\
  If set to true, it will internally configure the system to accept streamed responses.

## Outputs

* **HTTPBody** – A clean struct that holds all configured request data. Can be passed into both ASYNC and non-ASYNC HTTP nodes for sending POST requests.
  {% endhint %}

***

### Make Download Settings

<div data-full-width="false"><figure><img src="/files/a6lIAIW2eSxUxydGBZEM" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Download Settings

## Overview

Creates a struct **Download Settings** used to configure how an[ **HTTP download**](/doc-http-json/http#async-download-file) should be handled. This struct allows you to define whether the response should be saved directly to a file or handled in memory, and to apply custom headers for the request.

**NOTE:** If no headers are provided, the content type defaults to **application/json.**

## Inputs

* **Should Save To File** – Boolean value. If **true**, the downloaded data will be saved directly to disk using the provided file path. If **false**, data will be handled in memory.
* [**File**](#make-json-http-file-data) – The target file path for saving the download. This is required if "**Should Save To File"** is enabled.
* **Headers** – Optional key-value pairs to include in the [HTTP download request](/doc-http-json/http#async-download-file) headers.

## Outputs

* **Download Settings** – A struct representing the full download configuration, allowing full control over how data is processed or stored.
  {% endhint %}

***

### Make HTTPRequest Settings

<div data-full-width="false"><figure><img src="/files/DvwCVv6F8BOLqGktB8dQ" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### HTTP Request Settings

## Overview

Creates a struct settings object used to configure **multipart HTTP requests**. This struct is essential when sending **multipart** form data, allowing you to define how the boundary string is generated and which headers to include in the request. This node supports both ASYNC and non-ASYNC multipart form submissions.

**NOTE:** If no headers are provided, the content type defaults to **multipart/form-data.**

## Inputs

* **Random Boundary** – Boolean. If **true**, a unique boundary string is automatically generated for the multipart request. When enabled, the *Boundary* input is ignored.
* **Boundary** – A manually defined string to use as the boundary separator in the multipart body. Only used if *Random Boundary* is **false**.
* **Headers** – Optional key-value pairs to attach to the **HTTP request**. If omitted, a default multipart header will be applied automatically.

## Outputs

* **HTTPRequest Settings** – A struct that encapsulates all multipart-specific request settings. Pass this into nodes that send multipart HTTP requests to control boundary formatting and headers.
  {% endhint %}

***

### Make Multipart HTTP Data

<div data-full-width="false"><figure><img src="/files/a6lIAIW2eSxUxydGBZEM" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Multipart HTTP Data

## Overview

Creates a struct object used to configure **multipart HTTP(S) request**. This struct is essential when sending **multipart** form data, allowing you to define how the boundary string is generated,which headers to include in the request and the actual payload of the request. This node supports both ASYNC and non-ASYNC multipart form submissions.

**NOTE:** If no headers are provided, the content type defaults to **multipart/form-data.**

## Inputs

* **Random Boundary** – Boolean. If **true**, a unique boundary string is automatically generated for the multipart request. When enabled, the *Boundary* input is ignored.
* **Boundary** – A manually defined string to use as the boundary separator in the multipart body. Only used if *Random Boundary* is **false**.
* **Headers** – Optional key-value pairs to attach to the **HTTP request**. If omitted, a default multipart header will be applied automatically.
* **Multipart Data** – **The actual multi-part data you want to use as the payload** – This is the data that will be sent to the endpoint.

## Outputs

* **HTTPRequest Settings** – A struct that encapsulates all multipart-specific request settings. Pass this into nodes that send multipart HTTP requests to control boundary formatting and headers.
  {% endhint %}

***

### Make Upload File Data

<div data-full-width="false"><figure><img src="/files/6Our0mBYW3ledycDwgKz" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Upload File Data

## Overview

Creates a struct that will contain all the information about the files you want to upload. This struct includes both the file’s binary content and detailed metadata such as content types, field names, and additional multipart fields. It’s designed for full compatibility with advanced file upload scenarios (e.g. APIs that require specific field names or multiple data parts).

This node provides fine control over what data is included in the upload, and how it’s formatted, making it flexible for a wide range of HTTP endpoints.

## Inputs

* **Include File Content Type** – If **true**, the value from *File Content Type* will be included in the upload request. If **false**, it is ignored.
* **Field Name** – The name of the form field where the file should be placed in the request.
* **File Content Type** – The MIME type of the uploaded file (e.g., **"image/png"**, **"application/json"**). Used only if ***Include File Content Type*** is **true.**
* **File Name** – The name of the file to be uploaded, including its extension.
* **File Binary** – The raw binary content of the file to be uploaded.
* **Include Multi Part Content Type** – If **true**, the *Multi Part Content Type* array will be included in the request. If **false**, it is ignored.
* **Multi Part Content Type** – An array of strings representing additional content-type entries for extra multipart fields. Used when uploading form fields alongside files.
* **Multipart Data** – A key-value map of additional multipart fields to include with the request.

## Outputs

* **Upload File Data** – A reusable struct that encapsulates all file upload data and metadata. Feed this into [multipart upload requests](/doc-http-json/http#async-upload-multipart-file) for file transfer.
  {% endhint %}

***

### Make Web Socket Settings

<div data-full-width="false"><figure><img src="/files/bQcqhcG92fYxK4gEJI7Q" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Web Socket Settings

## Overview

Creates a WebSocket settings struct that defines optional subprotocols and HTTP-like headers used during the initial WebSocket handshake. This struct is typically used when initiating a connection to a WebSocket server.

Use this node to customize the connection behaviour, especially when connecting to servers that require specific headers or support particular subprotocols.

## Inputs

* **Protocols** – An array of strings representing WebSocket subprotocols. These are sent during the connection request and help the server determine how to interpret communication.
* **Headers** – A map of key-value string pairs to include as HTTP-style headers during the WebSocket handshake. Useful for passing authentication tokens, custom metadata, or client info.

## Outputs

* **WebSocket Settings** – A unified struct containing the protocols and headers to use when establishing a WebSocket connection. This is passed into [Create New WebSocket Request](/doc-http-json/websockets#create-new-websocket-request) nodes to configure the initial handshake.
  {% endhint %}


# Welcome

### HTTP Utility Pro Plugin Documentation V3.9.0!

Welcome to the main hub for **HTTP Pro - Blueprint HTTP Utility Plugin** Documentation! for Unreal Engine. This space provides access to all sections of the documentation. To begin, select a card below to view the desired documentation.

### Documentation selection

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td>General Utility</td><td></td><td></td><td><a href="/pages/cEHgDv7NGBquDGHeLyQ4">/pages/cEHgDv7NGBquDGHeLyQ4</a></td></tr><tr><td>JSON Utility</td><td></td><td></td><td><a href="/pages/WFglMhPKidrMjoTacMCw">/pages/WFglMhPKidrMjoTacMCw</a></td></tr><tr><td>JSON SET</td><td></td><td></td><td><a href="/pages/ebQQ7xLXZ1olxEkox4L1">/pages/ebQQ7xLXZ1olxEkox4L1</a></td></tr><tr><td>JSON GET</td><td></td><td></td><td><a href="/pages/EMxPMrxlROUWkerXxqio">/pages/EMxPMrxlROUWkerXxqio</a></td></tr><tr><td>JSON Pure</td><td></td><td></td><td><a href="/pages/0mPiGM0sEidNeMuppayF">/pages/0mPiGM0sEidNeMuppayF</a></td></tr><tr><td>HTTP</td><td></td><td></td><td><a href="/pages/BqY720ZGlp576fobevAq">/pages/BqY720ZGlp576fobevAq</a></td></tr><tr><td>Structures (Structs)</td><td></td><td></td><td><a href="/pages/5XCpSbm8inRgh38p8Goh">/pages/5XCpSbm8inRgh38p8Goh</a></td></tr></tbody></table>

{% hint style="info" %}

### Helpful Links

* **Youtube Tutorials -** [**https://www.youtube.com/@U-Forge/videos**](https://www.youtube.com/@U-Forge/videos)
* **Discord Server -** [**https://discord.gg/zjduQ7ZQNS**](https://discord.gg/zjduQ7ZQNS)
* **Showcase project download** - <https://drive.google.com/file/d/1K4PUYSgkkkafT7p81OymtJpBd6iEm7jF/view?usp=sharing>
* **Gumroad Product** - <https://uforge.gumroad.com/l/HTTPProPlugin?layout=profile>
* **Fab Marketplace Product** - <https://www.fab.com/listings/4d2461a9-52ca-4bc9-a507-48319662f039>
  {% endhint %}


# General Utility

## ASYNC Nodes

### ASYNC Load Binary File From Disk

<div data-full-width="false"><figure><img src="/files/Rur2cLQMj6cAHXgVhCo3" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## ASYNC Load Binary File From Disk

## Overview

Warning: Previewing the "**Out Binary Data**" array may cause lag. The array can be extremely large, depending on the file size. This node lets you load any binary file from your machine into Unreal Engine as a binary array.

## Inputs

* [File Struct](/http-pro/httppro-doc/structs#json-http-file-data) - The File struct contains details needed to load a file, including its **path** and **name**. Ensure the file name also includes its extension.
*

## Outputs

* **On Success** – Execute logic from here only when a file loads successfully
* **On Fail** – Execute logic from here only if file loading fails.
* **Success** – Indicates success status: true or false, based on file loading results.
* **Out Binary Data** – Provides the loaded binary data of the chosen file.
  {% endhint %}

***

### ASYNC Save Binary File To Disk

<div data-full-width="false"><figure><img src="/files/ERHsFuXBiuH3BGbKFDqZ" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## ASYNC Save Binary File To Disk

## Overview

Warning: Previewing the "**File Binary Data**" array may cause lag. The array can be extremely large, depending on the file size. This node lets you save any binary file from Unreal Engine directly to the users machine.

## Inputs

* **File Binary Data -** An array that contains the binary data of the file to be saved.
* [File Struct](/http-pro/httppro-doc/structs#json-http-file-data) - The File struct contains details needed to load a file, including its **path** and **name**. Ensure the file name also includes its extension.

## Outputs

* **On Success** – Execute logic from here only when a file saves successfully
* **On Fail** – Execute logic from here only if file saving fails.
* **Success** – Indicates success status: true or false, based on file saving results.
  {% endhint %}

***

### ASYNC Load Text File From Disk

<div data-full-width="false"><figure><img src="/files/TaumkUNISkyVWQNz5FJJ" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## ASYNC Load Text File From Disk

## Overview

This node enables you to load any text file from the users machine directly into Unreal Engine as string data.

## Inputs

* [File Struct](/http-pro/httppro-doc/structs#structs) - The File struct contains details needed to load a file, including its **path** and **name**. Ensure the file name also includes its extension.

## Outputs

* **On Success** – Execute logic from here only when a file loads successfully.
* **On Fail** – Execute logic from here only if file loading fails.
* **Success** – Indicates success status: true or false, based on file loading results.
* Loaded Data - The loaded text data of the specified text file.
  {% endhint %}

***

### ASYNC Save Text File To Disk

<div data-full-width="false"><figure><img src="/files/cfDhiSVXyKRtqO19Cz1C" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## ASYNC Save Text File To Disk

## Overview

This node allows you to save any string text data from Unreal&#x20;Engine directly to the user's machine.

## Inputs

* **raw data** - The string that will be saved to the user's machine, with the file type determined by the file extension specified in the "**File**" struct. This can be any data ranging from raw string, to JSON files.
* [File Struct](/http-pro/httppro-doc/structs#structs) - The File struct contains details needed to load a file, including its **path** and **name**. Ensure the file name also includes its extension.

## Outputs

* **On Success** – Execute logic from here only when a file saves successfully.
* **On Fail** – Execute logic from here only if file saving fails.
* **Success** – Indicates success status: true or false, based on file save results.
  {% endhint %}

***

## General Nodes

### Load Binary File From Disk

<div data-full-width="false"><figure><img src="/files/ALMtS9Kc2NYJxlkmc1tV" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## Load Binary File From Disk

## Overview

Warning: Previewing the "**Out Binary Data**" array may cause lag. The array can be extremely large, depending on the file size. This node lets you load any binary file from your machine into Unreal Engine as a binary array.

As this is not a ASYNC node, meaning it will pause logic execution until the file successfully loads or fails.

## Inputs

* [File Struct](/http-pro/httppro-doc/structs#json-http-file-data) - The File struct contains details needed to load a file, including its **path** and **name**. Ensure the file name also includes its extension.

## Outputs

* **Success** – Indicates success status: true or false, based on file loading results.
* **Out Binary Data** – Provides the loaded binary data of the chosen file.
  {% endhint %}

***

### Load Text File From Disk

<div data-full-width="false"><figure><img src="/files/rI8S3Zq9kUVu3o072Myf" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## Load Text File From Disk

## Overview

This node enables you to load any text file from the users machine directly into Unreal Engine as string data.

As this is not a ASYNC node, meaning it will pause logic execution until the file successfully loads or fails.

## Inputs

* [File Struct](/http-pro/httppro-doc/structs#json-http-file-data) - The File struct contains details needed to load a file, including its **path** and **name**. Ensure the file name also includes its extension.

## Outputs

* **Success** – Indicates success status: true or false, based on file loading results.
* Loaded Data - The loaded text data of the specified text file.
  {% endhint %}

***

### Save Binary File To Disk

<div data-full-width="false"><figure><img src="/files/OjsFUYx6LcpaQ1QsNfdn" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## Save Binary File To Disk

## Overview

Warning: Previewing the "**File Binary Data**" array may cause lag. The array can be extremely large, depending on the file size. This node lets you save any binary file from Unreal Engine directly to the users machine.

As this is not a ASYNC node, meaning it will pause logic execution until the file successfully loads or fails.

## Inputs

* **File Binary Data -** An array that contains the binary data of the file to be saved.
* [File Struct](/http-pro/httppro-doc/structs#json-http-file-data) - The File struct contains details needed to load a file, including its **path** and **name**. Ensure the file name also includes its extension.

## Outputs

* **Success** – Indicates success status: true or false, based on file saving results.
  {% endhint %}

***

### Save Text File To Disk

<div data-full-width="false"><figure><img src="/files/mHP0xqZQSTgFN4GljIXC" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## Save Text File To Disk

## Overview

This node allows you to save any string text data from Unreal&#x20;Engine directly to the user's machine.

As this is not a ASYNC node, meaning it will pause logic execution until the file successfully loads or fails.

## Inputs

* **raw data** - The string that will be saved to the user's machine, with the file type determined by the file extension specified in the "**File**" struct.
* [File Struct](/http-pro/httppro-doc/structs#json-http-file-data) - The File struct contains details needed to load a file, including its **path** and **name**. Ensure the file name also includes its extension.

## Outputs

* **Success** – Indicates success status: true or false, based on file save results.
  {% endhint %}

***

### Delete File From Disk

<div data-full-width="false"><figure><img src="/files/yLNhxLZLkS9rVx9GgNVS" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Delete File From Disk

## Overview

This node allows you to delete files from the user's machin&#x65;**.** Use it responsibly and ensure that you only remove files that are safe and intended to be deleted. It is your responsibility to verify that each file is appropriate to remove.

## Inputs

* [File Struct](/http-pro/httppro-doc/structs#json-http-file-data) - The File struct contains details about the file you wish to remove, including its **path** and **name**. Ensure the file name also includes its extension.
* **Must Exist** - Ensure that the file you intend to remove exists before attempting deletion. If the file does not exist on the user's machine, no action will be taken.
* **Even Read Only** - Decide whether you want to allow the removal of **read-only** files. When this option is enabled, files marked as read-only can also be deleted.
* **Quiet** - This option determines whether an error message should appear if the file deletion fails for any reason. When enabled, debug logs will be printed; when disabled, no output will be shown.

## Outputs

* **Success** – Indicates success status: true or false, based on if the file was deleted.
  {% endhint %}

***

## Pure Nodes

### Check If File Exists

<div data-full-width="false"><figure><img src="/files/KQc3aNNA5Nb82ppRYDv6" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## Check If File Exists

## Overview

This node lets you verify the existence of a specific file on the user's machine. It can be located anywhere, not limited to project files, as long as the file path and name of the file are valid.

## Inputs

* [File Struct](/http-pro/httppro-doc/structs#json-http-file-data) - The File struct contains details needed to load a file, including its **path** and **name**. Ensure the file name also includes its extension.

## Outputs

* **Success** – Indicates success status: true or false, based on if the file was found and it exists.
  {% endhint %}

***

### Decode Base64 Encrypted Data To Binary

<div data-full-width="false"><figure><img src="/files/UJN8rbq1dciYUNdo4xmd" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## Decode Base64 Encrypted Data To Binary

## Overview

Warning: Previewing the "**Out Binary Data**" array may cause lag. The array can be extremely large, depending on the decoded file size. This node allows you to decode Base64 encoded binary data back into usable binary data (**Array**). Base64 encoding is a format designed to prevent errors during the transfer of binary information.

## Inputs

* **Base 64 Encrypted String** – The encrypted Base 64 string data you want to Decode into usable binary Data.

## Outputs

* **Success** – Indicates success status: true or false, based on if the data was decrypted successfully.
* **Out Binary Data** – Provides the decrypted binary data as an array from the encrypted Base64 string.
  {% endhint %}

***

### Encode Base64 Encrypted Data

<div data-full-width="false"><figure><img src="/files/QgS2btddAD2xcaJ8XCcP" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## Encode Binary To Base64 Encrypted Data

## Overview

Warning: Previewing the "**Binary Data**" array may cause lag. The array can be extremely large, depending on the file size you want to encrypt. This node allows you to encode raw binary data directly into Base64 encryption. Base64 encoding is a format designed to prevent errors during the transfer of binary information.

## Inputs

* **Binary Data** – The raw binary data you wish to encode into Base64 encryption.

## Outputs

* **Success** – Indicates success status: true or false, based on if the data was encrypted successfully.
* **Base64 Encrypted String** – A string that contains encrypted binary data encoded in Base64 format.
  {% endhint %}

***

### Binary To String Conversation

<div data-full-width="false"><figure><img src="/files/EZ6HZ1OCkyrd7SriXwG9" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## Binary To String Conversation

## Overview

Warning: Previewing the "**Binary Data**" array may cause lag. The array can be extremely large, depending on the data to Decode. This node converts raw binary data encoded in **UTF-8**, **UTF-16**, or similar **ASCII-range** formats into a usable string.

## Inputs

* **Binary Data**– The binary data to convert back into a readable string. Must be encoded in **UTF-8**, **UTF-16**, or a similar **ASCII-range** format.

## Outputs

* **Success** – Returns true if the binary data was successfully decoded into string data. Otherwise returns false.
* **Decoded String** – The usable string containing the decoded content of the provided binary data.
  {% endhint %}

***

### Binary To Texture2D

<div data-full-width="false"><figure><img src="/files/wiOEiEFmmNThxjG1M42D" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## Binary To Texture2D

## Overview

Warning: Previewing the "**Binary Data**" array may cause lag. The array can be extremely large, depending on the file size. This node converts raw image binary data directly into a usable **Texture2D** variable. Can be used directly with widgets or storing into variables.

## Inputs

* **Binary Data** – The raw binary image data to be converted into a **Texture2D** data type.

## Outputs

* **Success** – Returns true if the binary data was successfully converted into a **Texture2D** data type. Otherwise returns false.
* **Out Texture** – The resulting **Texture2D** containing the image data extracted from the binary input.
  {% endhint %}

***

### String To Binary Conversation

<div data-full-width="false"><figure><img src="/files/iBkOQpzB3HTmJTEl8cIY" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## String To Binary Conversation

## Overview

Warning: Previewing the "**Encoded Data**" array may cause lag. The array can be extremely large, depending on the data to encode. This node converts string data into binary data using **UTF-8** encoding.

## Inputs

* **Data To Encode** – The raw string to be encoded into **UTF-8** binary format.

## Outputs

* **Success** – Returns true if the binary data was successfully encoded into **UTF-8** binary data otherwise, returns false.
* **Encoded Data**  – The encoded result of the input string, returned as a binary array.
  {% endhint %}

***

### Percentage Based URL Encode

<div data-full-width="false"><figure><img src="/files/o9rnuOiJS5ogv5ZLWuf9" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## Percentage Based URL Encode

## Overview

A utility function, also known as **percent-encoding**, used to encode characters within a **URL** that are either not allowed or have special meaning.&#x20;

This method replaces such characters with a percent sign (`%`) followed by two hexadecimal digits representing the character’s **ASCII** or **Unicode value**.

## Inputs

* **Un Encoded URL** – The original URL containing characters that are not allowed or have special meaning.

## Outputs

* **Encoded URL**  – The resulting URL string, with the original content percent-encoded to safely represent characters that are otherwise illegal in URLs.
  {% endhint %}

***

### Percentage Based URL Decode

<div data-full-width="false"><figure><img src="/files/mYcJD5TUwIUs2JPj31Jz" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## Percentage Based URL Decode

## Overview

A utility function used to decode URLs that have been encoded using **percent-encoding**.\
This method identifies percent-encoded URLs (a `%` followed by two hexadecimal digits) and converts them back to their original characters based on their **ASCII** or **Unicode** values.

## Inputs

* **Encoded URL** – The **percent-encoded** URL string, containing characters in the **%XX** hexadecimal format.

## Outputs

* **Decoded URL**  – The resulting URL string with all percent-encoded characters converted back to their original readable form.
  {% endhint %}

***

### Get URL Base

<div data-full-width="false"><figure><img src="/files/RnFimAuaa1wJWT4UmBkt" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## Get URL Base

## Overview

A utility function used to extract the base part of a URL. This function removes any query parameters             (**?key=value**) and fragment identifiers (**#section**) from the input, returning only the base URL (**typically the scheme, domain, and path**).

### Example

**In URL**  – <https://example.com/products/item?id=123&ref=homepage#details>\
**URL Base**  – <https://example.com/products/item>

## Inputs

* **In URL** – The full URL string from which to extract the base. This may include query parameters or fragments.

## Outputs

* **URL Base**  – The base portion of the input URL, excluding any query parameters or fragment identifiers.
  {% endhint %}

***

### Get URL Domain

<div data-full-width="false"><figure><img src="/files/O00DsTjTJhcs65bmc6Ms" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## Get URL Domain

## Overview

A utility function that extracts the domain (**host**) portion from a given URL. This function returns only the domain name (**with or without subdomain**) and excludes the URL **scheme**, **path**, **query parameters** and **fragment identifiers**.

### Example

**In URL**  – <https://example.com/products/item?id=123&ref=homepage#details>\
**URL Base**  – example.com

## Inputs

* **In URL** – The full URL string from which the domain should be extracted.

## Outputs

* **URL Base**  – The domain portion of the input URL  without the scheme **https\://**, **path** or **parameters**.
  {% endhint %}

***

### Get File Mime Type

<div data-full-width="false"><figure><img src="/files/9eXPVpdeAYgl6QckF0Vp" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## Get URL Domain

## Overview

A utility function that determines the **MIME type** of a file based on its file extension. **MIME** types (**Multipurpose Internet Mail Extensions**) are used to indicate the nature and format of a file, which is useful for web requests, file uploads or content-type headers.

### Example

**In File path** – C:/Images/photo.png\
**Output Mime type** – image/png

## Inputs

* **In File Path** – The full file path and file name (**including extension**) of the file for which you want to determine the **MIME** type.

## Outputs

* **Out Mime Type**  – A string representing the detected **MIME** type of the file.
  {% endhint %}


# JSON GET

## JSON GET

### Try Get Bool Field

<div data-full-width="false"><figure><img src="/files/jdkxMMmBmeUD2EyU1Uu2" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Try Get Bool Field

## Overview

JSON functionality used to safely retrieve a Boolean value from a JSON object. This node attempts to extract the value of a specified field and interpret it as a Boolean. If the field is found and its value is a valid Boolean, the operation succeeds.

## Inputs

* **JSON Object** – The input JSON object from which you want to retrieve the Boolean value.
* **Field Name** – The name of the field (**as string**) to search for within the JSON object.

## Outputs

* **Success** – Returns true if the field exists and its value was successfully parsed as a Boolean. Otherwise, returns false.
* **Bool Data** – The Boolean value retrieved from the specified field.
  {% endhint %}

***

### Try Get Byte Field

<div data-full-width="false"><figure><img src="/files/NRXPd99i1xFMXoHfwNxc" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Try Get Byte Field

## Overview

JSON functionality used to safely retrieve a byte value from a JSON object. This node attempts to extract the value of a specified field and interpret it as a byte. If the field is found and its value is a valid number within the acceptable range, the operation succeeds.

## Inputs

* **JSON Object** – The input JSON object from which you want to retrieve the byte field.
* **Field Name** – The name of the field (**as string**) to search for within the JSON object.

## Outputs

* **Success** – Returns true if the field exists and its value was successfully parsed as a byte. Otherwise, returns false.
* **Number Data** – The numeric value retrieved from the specified field, interpreted as a byte.
  {% endhint %}

***

### Try Get Number Field

<div data-full-width="false"><figure><img src="/files/RpICnRCBM3JLnXs2rMM7" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Try Get Number Field

## Overview

JSON functionality used to safely retrieve a numeric value from a JSON object. This node attempts to extract the value of a specified field and interpret it as a number (**Float**). If the field is found and its value is a valid number, the operation succeeds.

## Inputs

* **JSON Object** – The input JSON object from which you want to retrieve the number field.
* **Field Name** – The name of the field (**as string**) to search for within the JSON object.

## Outputs

* **Success** – Returns true if the field exists and its value was successfully parsed as a number. Otherwise, returns false.
* **Number Data** - The numeric value retrieved from the specified field, interpreted as a float.
  {% endhint %}

***

### Try Get String Field

<div data-full-width="false"><figure><img src="/files/Wpd7eV4fXsq72HVVDDfD" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Try Get String Field

## Overview

JSON functionality used to safely retrieve a string value from a JSON object. This node attempts to extract the value of a specified field and interpret it as a string. If the field is found and its value is a valid string, the operation succeeds.

## Inputs

* **JSON Object** – The input JSON object from which you want to retrieve the string field.
* **Field Name** – The name of the field (**as string**) to search for within the JSON object.

## Outputs

* **Success** – Returns true if the field exists and its value was successfully parsed as a string. Otherwise, returns false.
* **String Data** - The string value retrieved from the specified field.
  {% endhint %}

***

### Try Get Object Field

<div data-full-width="false"><figure><img src="/files/NI6P5wRXWQAwTYF9il6T" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Try Get Object Field

## Overview

JSON functionality used to safely retrieve a nested JSON object from within a parent JSON structure. This node attempts to extract the value of a specified field and interpret it as a valid JSON object. If the field is found the operation succeeds.

## Inputs

* **JSON Object** – The input JSON object from which you want to retrieve a nested object field.
* **Field Name** – The name of the field (**as string**) to search for within the JSON object.

## Outputs

* **Success** – Returns true if the field exists and its value was successfully parsed as a JSON object. Otherwise, returns false.
* **JSON Object Field** – The nested JSON object retrieved from the specified field.
  {% endhint %}

***

### Try Get Array Field

<div data-full-width="false"><figure><img src="/files/RyOd0gBpldiIuLalbLvF" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Try Get Array Field

## Overview

JSON functionality used to safely retrieve an array from a JSON object. This node attempts to extract the value of a specified field and interpret it as a JSON array. If the field is found and its value is a valid array structure, the operation succeeds.

## Inputs

* **JSON Object** – The input JSON object from which you want to retrieve the array field.
* **Field Name** – The name of the field (**as string**) to search for within the JSON object.

## Outputs

* **Success** – Returns true if the field exists and its value was successfully parsed as a JSON array. Otherwise, returns false.
* **Out JSON Array** – The JSON array retrieved from the specified field.
  {% endhint %}

***

### Try Get All Object Field Names

<div data-full-width="false"><figure><img src="/files/q7bGcEcDFnD1X9OeGrkH" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Try Get All Object Field Names

## Overview

JSON functionality used to retrieve all the field (**key**) names from a JSON object. This node extracts a list of all keys within the given object, If the input is a valid JSON object, the operation succeeds.

## Inputs

* **JSON Object** – The input JSON object from which you want to extract all field names.

## Outputs

* **Success** – Returns true if the input was a valid JSON object and field names were successfully retrieved. Otherwise, returns false.
* **Field Names** – An array of strings containing all field names (**keys**) present inside the provided JSON object.
  {% endhint %}

***

### Try Get All Object Field Values

<div data-full-width="false"><figure><img src="/files/RF22RYqalbB3FMiULhcN" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Try Get All Object Field Values

## Overview

JSON functionality used to retrieve all field values from a JSON object and output them as an array. This node collects the values (**ignoring the keys**) in the provided JSON object. If the object is valid, it will return a JSON array containing each value as a JSON array.

**Note:** The Array Name input allows you to label or reference the returned array when accessing the values later. You can use the [**Try Get Array Field**](#try-get-array-field) node to access this data using the "**Array Name"**. Returns an empty array if the object is invalid or empty.

## Inputs

* **JSON Object** – The input JSON object from which you want to retrieve all field values.
* **Array Name** – The name under which the resulting value array will be stored or accessed. Useful for referencing in further operations.

## Outputs

* **Success** – Returns true if the input is a valid JSON object and the values were successfully collected into an array. Otherwise, returns false.
* **JSON Value** – A JSON object that contains a JSON array that holds all the found values from the provided "**Json object**".
  {% endhint %}


# JSON SET

<div data-full-width="false"><figure><img src="/files/gcX95m0V2G4gK2DeiRrT" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set New Json Object Field

## Overview

Creates a new, empty JSON object and inserts it into the specified field within an existing JSON object. This is typically used as a setup step for nesting further data inside a parent JSON. The newly created object is returned for further use and modification. **not the full original JSON object**.

**Note:** This node does not copy the entire structure forward. It only returns the newly created nested object so you can set data into it directly.

## Inputs

* **JSON Object** – The JSON object to which the new nested object should be added.
* **Field Name** – The name of the field (**as string**) to assign the new empty JSON object to.

## Outputs

* **Success** – Returns true if the empty object was successfully created and inserted. Otherwise false.
* **New Json Object** – The newly created empty object, returned for further editing (**not the full input object**).
  {% endhint %}

***

### Set Json Object Field

<div data-full-width="false"><figure><img src="/files/51cXDYds5QSOccJCiNIC" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set Json Object Field

## Overview

Adds or updates a nested JSON object field inside an existing parent JSON object. This node allows you to insert a fully constructed JSON object into another JSON object under a specified field name. If the field already exists, it will be overwritten with the new object.

Unlike [**Set New JSON Object Field**](#set-new-json-object-field), which creates a blank JSON object, this version accepts a fully built JSON object and appends it into a larger JSON.

### Examples

#### Parent Data

**{**\
&#x20; **"PlayerInfo": {**\
&#x20;   **"Name": "ShadowRogue",**\
&#x20;   **"Level": 12,**\
&#x20;   **"Class": "Assassin",**\
&#x20;   **"XP": 3450,**\
&#x20;   **"IsAlive": true**\
&#x20; **}**\
**}**

#### Data To Insert

**{**\
&#x20; **"PlayerStats": {**\
&#x20;   **"Health": 85,**\
&#x20;   **"Mana": 60,**\
&#x20;   **"Stamina": 40,**\
&#x20;   **"Armor": 25,**\
&#x20;   **"CriticalChance": 0.15**\
&#x20; **}**\
**}**

#### Combined Data

**{**\
&#x20; **"PlayerInfo": {**\
&#x20;   **"Name": "ShadowRogue",**\
&#x20;   **"Level": 12,**\
&#x20;   **"Class": "Assassin",**\
&#x20;   **"XP": 3450,**\
&#x20;   **"IsAlive": true**\
&#x20; **},**\
&#x20; **"PlayerStats": {**\
&#x20;   **"Health": 85,**\
&#x20;   **"Mana": 60,**\
&#x20;   **"Stamina": 40,**\
&#x20;   **"Armor": 25,**\
&#x20;   **"CriticalChance": 0.15**\
&#x20; **}**\
**}**

## Inputs

* **JSON Object** – The parent JSON object you want to modify.
* **Object Data** - The desired data to insert into the parent.
* **Field Name** – The name of the field (**as string**) under which the object should be stored.

## Outputs

* **Success** – Returns true if the nested object was successfully inserted. Otherwise false.
* **New Json Object** – The updated full JSON object, including the newly added or modified field.
  {% endhint %}

***

### Insert Json Object

<div data-full-width="false"><figure><img src="/files/u9IToGEKCuW2rB46XD7E" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Insert Json Object

## Overview

This node merges one JSON object into another by copying all fields from the **Data to Insert** object into the **JSON Object**. If any fields already exist in the target, they will be **overwritten** by values from the incoming object. The result is a single, combined JSON object containing fields from both inputs.

**Note:** This operation does not create a nested structure. All top-level fields from both objects are merged into a flat, unified JSON.

### Examples

#### Parent Data

**{**\
&#x20; **"PlayerInfo": {**\
&#x20;   **"Name": "ShadowRogue",**\
&#x20;   **"Level": 12,**\
&#x20;   **"Class": "Assassin",**\
&#x20;   **"XP": 3450**\
&#x20; **}**\
**}**

#### Data To Insert

**{**\
&#x20; **"PlayerStats": {**\
&#x20;   **"Health": 85,**\
&#x20;   **"Mana": 60,**\
&#x20;   **"Stamina": 40,**\
&#x20;   **"Armor": 25**\
&#x20; **}**\
**}**

#### Combined Data

**{**\
&#x20; **"PlayerInfo": {**\
&#x20;   **"Name": "ShadowRogue",**\
&#x20;   **"Level": 12,**\
&#x20;   **"Class": "Assassin",**\
&#x20;   **"XP": 3450,**\
&#x20;   **"Health": 85,**\
&#x20;   **"Mana": 60,**\
&#x20;   **"Stamina": 40,**\
&#x20;   **"Armor": 25**\
&#x20; **}**\
**}**

## Inputs

* **JSON Object** – The target JSON object that will receive the new fields.
* **Data To Insert** – The second JSON object whose fields will be inserted into the first.

## Outputs

* **Success** – Returns true if the merge was successful. Otherwise false.
* **Combined Json** – The resulting JSON object containing fields from both input objects.
  {% endhint %}

***

### Set Json Bool Field

<div data-full-width="false"><figure><img src="/files/b6RHjMXRIuXgYZNj21b4" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set Json Bool Field

## Overview

Adds or updates a Boolean field in a JSON object. This node sets a key–value pair where the value is a Boolean (**true** or **false**) and outputs a new JSON object containing the updated field.

**Note:** If the specified field already exists, its value will be overwritten. If it does not exist, it will be added.

## Inputs

* **JSON Object** – The input JSON object you want to modify.
* **Field Name** – The name of the field (**as string**) to add or update.
* **Value** - The Boolean value (**true or false**) to assign to the specified field.

## Outputs

* **Success** – Returns true if the field was successfully set in the object. Otherwise false.
* **New Json Object** – The updated JSON object with the Boolean field set.
  {% endhint %}

***

### Set Json Byte Field

<div data-full-width="false"><figure><img src="/files/eHBGoSBSq1oXi1en95yz" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set Json Byte Field

## Overview

Adds or updates a byte value field in a JSON object. This node sets a key–value pair where the value is treated as a byte and outputs a new JSON object containing the updated data.

**Note:** If the specified field already exists, its value will be overwritten. If it does not exist, it will be added.

## Inputs

* **JSON Object** – The input JSON object you want to modify.
* **Field Name** – The name of the field (**as string**) to add or update.
* **Value** - The byte value (**0–255**) to assign to the specified field.

## Outputs

* **Success** – Returns true if the field was successfully set in the object. Otherwise false.
* **New Json Object** – The updated JSON object with the new or modified byte field.
  {% endhint %}

***

### Set Json Number Field

<div data-full-width="false"><figure><img src="/files/lisd9YDxp5LPz1iOt6nA" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set Json Number Field

## Overview

Adds or updates a numeric field (**Float**) in a JSON object. This node sets a key–value pair where the value is a number (**float**), and outputs a new JSON object with the updated content.

**Note:** If the specified field already exists, its value will be overwritten. If it does not exist, it will be added.

## Inputs

* **JSON Object** – The input JSON object you want to modify.
* **Field Name** – The name of the field (**as string**) to add or update.
* **Value** - The numeric value (**float**) to assign to the specified field.

## Outputs

* **Success** – Returns true if the field was successfully set in the object. Otherwise false.
* **New Json Object** – The updated JSON object with the number (**float**) field added or changed.
  {% endhint %}

***

### Set Json String Field

<div data-full-width="false"><figure><img src="/files/sB04UYwn7iHujgaZ80TU" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set Json String Field

## Overview

Adds or updates a string field in a JSON object. This node sets a key–value pair where the value is a string and outputs a new JSON object containing the updated or newly created field.

**Note:** If the specified field already exists, its value will be overwritten. If it does not exist, it will be added.

## Inputs

* **JSON Object** – The input JSON object you want to modify.
* **Field Name** – The name of the field (**as string**) to add or update.
* **Value** - The string value to assign to the specified field.

## Outputs

* **Success** – Returns true if the field was successfully set in the object. Otherwise false.
* **New Json Object** – The updated JSON object with the string field included.
  {% endhint %}

***

### Set Json Array Field

<div data-full-width="false"><figure><img src="/files/6z1n8hkPpMP0XRAyhCr8" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set Json Array Field

## Overview

JSON functionality used to add or update an array field in a JSON object. This node sets a field to hold a JSON array, which can contain values of any type (**Numbers, strings, objects, or nested arrays**), and ensures it is properly formatted for serialization.

## Inputs

* **JSON Object** – The JSON object you want to modify.
* **Field Name** – The name of the field (**as string**) to assign the array to.
* **Root Level JSON** – If **true**, all array entries are placed together into a single object where each entry shares the **same structure** (i.e. same fields, with different values). If **false**, each array entry is placed into its **own individual JSON object**, typically with only one field per object.
* **Array Data** – The array of values to insert into the JSON object.

### Examples

**Root Level JSON = false**

**{**\
&#x20;    **"Inventory": \[**\
&#x20;   **{**\
&#x20;     **"Name": "Health Potion"**\
&#x20;   **},**\
&#x20;   **{**\
&#x20;    **"Type": "Weapon"**\
&#x20;   **},**\
&#x20;   **{**\
&#x20;    **"Effect": "Fireball"**\
&#x20;   **}**\
&#x20;  **]**\
**}**

**Root Level JSON = true**

**\[**\
&#x20;  **{**\
&#x20;   **"Name": "Health Potion",**\
&#x20;   **"Type": "Consumable",**\
&#x20;   **"Effect": "Restore 50 HP"**\
&#x20;  **},**\
&#x20;  **{**\
&#x20;   **"Name": "Iron Sword",**\
&#x20;   **"Type": "Weapon",**\
&#x20;   **"Effect": "Ice walking"**\
&#x20;  **},**\
&#x20;  **{**\
&#x20;   **"Name": "Magic Scroll",**\
&#x20;   **"Type": "Spell",**\
&#x20;   **"Effect": "Fireball"**\
&#x20;  **}**\
**]**

## Outputs

* **Success** – Returns true if the array was successfully added or updated in the JSON object. Otherwise, returns false.
* **Out Array Data** – The JSON array that was written to the specified field or to the root, depending on the configuration.
  {% endhint %}


# JSON PURE

## JSON PURE

### Try Get Json Length

<div data-full-width="false"><figure><img src="/files/XyqEJ5H4A8ZC1ggS2cwL" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Try Get Json Length

## Overview

Attempts to determine the number of key-value pairs inside a given JSON object. This is a pure function that inspects the structure and returns how many fields are present at the top level of the object. Commonly used when iterating through dynamic or unknown JSON data lengths and a length is required.

## Inputs

* **JSON Object** – The JSON object whose length (**number of fields**) you want to retrieve.

## Outputs

* **Length** – An integer representing the number of fields (**keys**) in the provided JSON object.
  {% endhint %}

***

### Try Get Json Value

<div data-full-width="false"><figure><img src="/files/IjJ5JQAoh9GlCdw3nwbW" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set Json Object Field

## Overview

This node is a universal “[**Try Get**](/http-pro/httppro-doc/json-get)” function that combines the functionality of all individual JSON “[**Try Get**](/http-pro/httppro-doc/json-get)”  nodes into one pure function. It dynamically determines the type of value to retrieve based on the variable type connected to the **Out Data** output pin. This allows developers to fetch Booleans, strings, numbers, objects and more using one flexible node.

**Note**: The wildcard pin must be set before execution. The node will search for the field based on the data type connected to **Out Data**.

## Inputs

* **JSON Object** – The JSON object to search within.
* **Field Name** - The name of the field (**as string**) to find and retrieve the data of.

## Outputs

* **Out Data (Wildcard)** – The resulting value found from the JSON object.
  {% endhint %}

***

### Try Get First Json Field Value

<div data-full-width="false"><figure><img src="/files/Ll0b6p08MPba6ewpEbUP" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Try Get First Json Field Value

## Overview

This node retrieves the value of the first field found in a JSON object. The type of the value to be retrieved is determined by the variable connected to the **Out Data** pin (**Wildcard**). This is useful when you want to inspect or access the first entry of a JSON structure without knowing the field data type.

## Inputs

* **JSON Object** – The JSON object from which the first value will be retrieved.

## Outputs

* **Out Data** – The value of the first found field.
  {% endhint %}

***

### New Json Object From String

<div data-full-width="false"><figure><img src="/files/HNDD6MHcfOhbI5F225cT" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### New Json Object From String

## Overview

This node creates a local JSON object from a string without needing a execution pin. It is a pure function and is often used when working with inline JSON or when importing data from a string format. The provided string must be valid JSON syntax.

**Note:** If you want to quickly debug JSON data or dynamically parse a string into a JSON object, this is a useful node. However, since it is a pure function, the resulting data exists only for the current frame. Be sure to store or process the output immediately, as the data will be lost on the next engine frame.

## Inputs

* **In Json String** – A text string containing valid JSON data to be parsed.

## Outputs

* **Out Value** – A JSON object generated from the input string. If the string is invalid, the object may be empty.
  {% endhint %}

***

### New Pure Json Object

<div data-full-width="false"><figure><img src="/files/En98s42De1Jb3JyYqfSS" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### New Pure Json Object

## Overview

Creates a new, empty JSON object using a pure function. Since this node does not trigger the execution flow, it is ideal for temporary JSON creation in pure logic chains such as function graphs or value assignments.

**Note:** Because it is a pure function, the generated JSON object exists only during the current frame. Be sure to immediately cache or assign the output, or the data will be lost.

## Outputs

* **JSON Object** – A new, empty JSON object that can be modified or passed into other JSON-related nodes.
  {% endhint %}

***

### Make Named Object Json Data

<div data-full-width="false"><figure><img src="/files/8bPjRBF8Nj3qrJu2w1Wl" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Make Named Object Json Data

## Overview

This pure function accepts two arrays as input. The first is an array of strings, where each string represents a key that will be used to construct a JSON object. The second is a wildcard array that provides the values to be assigned to each of these keys.

It is important to note that the number of keys must match the number of values exactly. You cannot provide more keys than values or more values than keys. This mismatch is not supported and will result in an error.

An example of the output generated by this function can be found below.

### Example

#### Parent Data

**{**\
&#x20;  **"Username": "UForge",**\
&#x20;  **"Password": "UForge123",**\
&#x20;  **"Address": "UForge road",**\
&#x20;  **"Class": "Mage"**\
**}**

## Inputs

* **Field Names Array** – An array of string values that represent the keys for the resulting JSON object.
* **In Array** – A wildcard array input. This node accepts any data type supported by Unreal Engine. It loops over each value and assigns it to the corresponding key from the **Field Names Array**, building valid key-value pairs.

## Outputs

* **Out Data** – JSON object that holds the new constructed JSON data.
  {% endhint %}

***

### Set JSON Field

<div data-full-width="false"><figure><img src="/files/4T7c3DzJKdUkkr4nhlUo" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set JSON Field

## Overview

A pure node that allows you to set data into your desired JSON object. The input supports any data type recognized by Unreal Engine, as it uses a wildcard input. This node essentially functions as a universal "[**Set Node**](/http-pro/httppro-doc/json-set)," combining the behaviour of all individual set nodes into one.

## Inputs

* **JSON Object** – The JSON object where you want to set a new JSON value.
* **Field Name** – The name of the field you are creating.
* **In Data (Wildcard)** – The data you want to set. This is a wildcard input pin, so it supports any valid data type recognized by Unreal Engine.

## Outputs

* **Out Data** – The new JSON object that contains the newly created JSON field.
  {% endhint %}

***

### Value Only JSON Array

<div data-full-width="false"><figure><img src="/files/GgI17WFjgs5xcWvOrNfP" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Value Only JSON Array

## Overview

A pure JSON node that allows you to create a JSON array containing only values, with no keys assigned to individual elements. The output structure looks like this: **{"words": \["AB", "BC", "CD", "DE", "EF"]}**. To use this node, simply provide a field name and an array containing your data.

## Inputs

* **Field Name** – The name of the JSON array you wish to create.
* **In Array (Wildcard)** – A wildcard input pin that accepts any data type supported by Unreal Engine. This is the array of data you want to include in the value-only JSON array.

## Outputs

* **Out Data** – The new JSON object that contains the value-only JSON array.
  {% endhint %}


# JSON Utility

## JSON Utility

### Create New Json File

<div data-full-width="false"><figure><img src="/files/gxztFHr8LlAQZ0KidYOI" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Create New Json File

## Overview

Creates a new, empty JSON object for use in further JSON operations. This node is typically the starting point when building a new JSON structure from scratch. Once created, fields can be added using the various [**Set JSON Field nodes**](/http-pro/httppro-doc/json-set)**.**

## Inputs

**None.**

## Outputs

* **Success** – Returns true if the JSON object was successfully created.
* **Json Object** – The newly created empty JSON object, ready for data to be added.
  {% endhint %}

***

### Convert Json To String

<div data-full-width="false"><figure><img src="/files/2JbXXejAwpEyJSemVmtv" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Convert Json To String

## Overview

Converts a JSON object into a string format for storage, string manipulation or display. This node serializes the given JSON object into a text-based JSON string. Optionally, you can enable **Pretty Print** to format the output with indentation and line breaks for easier readability.

## Inputs

* **JSON Object** – The JSON object you want to convert into a string.
* **Pretty Print** – If checked, the output string will be human-readable with line breaks and indentation. If unchecked, the result will be compact.

## Outputs

* **Success** – Returns true if the JSON object was successfully converted to a string. Otherwise returns false.
* **JSON String** – The serialized string representation of the input JSON object.
  {% endhint %}

***

### String To Json Object

<div data-full-width="false"><figure><img src="/files/ZwVVjGN1TuFhrmIC4IM4" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### String To Json Object

## Overview

Parses a JSON-formatted string and converts it into a usable JSON object. This node is typically used to deserialize data that was loaded from a file, received from a server, for quick debugging and testing.

**Note:** The input string must be a valid JSON. If the format is incorrect or malformed, the conversion will fail and return an empty or null object.

## Inputs

* **Raw String Data** – A string containing valid JSON text that you want to parse into a JSON object.

## Outputs

* **Success** – Returns true if the string was successfully parsed into a JSON object. Otherwise, returns false.
* Loaded Json Object - The resulting JSON object that can be used with other JSON nodes.
  {% endhint %}

***

### Remove Json Field

<div data-full-width="false"><figure><img src="/files/f2hp6Kbj29nBu4pOj4Ve" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Remove Json Field

## Overview

Removes a specific field (**key–value pair**) from a given JSON object. This node returns a new JSON object identical to the input, except without the specified field. This is useful for cleaning structures before saving, serializing, or sending.

**Note:** If the specified field does not exist, the original object is returned unchanged, and **Success** is set to false.

## Inputs

* **JSON Object** – The input JSON object from which you want to remove a field.
* **Field Name** – The name of the field (**as string**) to remove from the JSON object.

## Outputs

* **Success** – Returns true if the field was found and successfully removed. Otherwise, returns false.
* **New Json Object** - A copy of the input JSON object with the specified field removed (**if found**).
  {% endhint %}

***

### Has Field

<div data-full-width="false"><figure><img src="/files/lNvYPcLyk9gl8k4T1XJK" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}
Has Field

## Overview

Checks whether a specified field (**key**) exists within a given JSON object. This node is useful for verifying the presence of data before attempting to retrieve or operate on a specific field, helping prevent errors and ensure safer parsing.

**Note:** This node only checks the top-level of the provided JSON object. It does not search nested objects.

## Inputs

* **JSON Object** – The JSON object in which you want to search for a field.
* **Field to Find** – The name of the field (**as string**) to check for existence.

## Outputs

* **Success** – Returns true if the specified field exists in the JSON object. Otherwise, returns false.
  {% endhint %}


# HTTP

## Utility

### ASYNC Has Internet Check

<div data-full-width="false"><figure><img src="/files/Mo1GzkQEeBjdL8AANwDJ" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### ASYNC Has Internet Check

## Overview

This utility checks whether the user's system is currently connected to the internet. It does this by performing a lightweight HTTP request to [**https://www.google.com**](https://www.google.com/). If the request is successful, the node returns **true** otherwise, it returns **false**.

## Inputs

**None.**

## Outputs

* **Success** – Executes If the user has a valid internet connection.
* **False** – Executes If the user does not have a valid internet connection.
* **Has Internet** – A Boolean output: **true** if the system is online, **false** otherwise.
  {% endhint %}

***

## ASYNC

### ASYNC HTTP(S) Request

<div data-full-width="false"><figure><img src="/files/3NxtikWIcEtsM5LMktz3" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### ASYNC HTTP(S) Request&#x20;

## Overview

Send a **HTTP(S)** request to the specified URL using one of several supported request types. This node is useful for interacting with **RESTful APIs**, **web services**, or **cloud-hosted endpoints**. Automatically parses the response data into a **JSON** output.

You can send requests with or without a body, specify the timeout, and receive detailed information back, including status code, content type, and response headers. Useful for game server communication, cloud saves, analytics, player profile data, etc.

If you’re expecting a binary response, the node will automatically detect **binary-only** data and place it into the **Out Binary Data** output.&#x20;

**Note**: If the response contains binary content *inside a JSON structure*, it will still be delivered through **Out Json** as part of the parsed JSON payload.<br>

## Supported Request Types

* **GET**– Retrieves data from the server (**default**).
* **POST** – Sends data to the server, typically for creating new resources.
* **PUT** – Sends data to update/replace a resource.
* **PATCH** – Partially updates an existing resource.
* **DELETE** – Deletes a resource on the server.
* **HEAD** – Retrieves headers only (no body).
* **TRACE** – Echoes the received request (**used for diagnostics**).

## Inputs

* **URL** – The full URL to send the request to.
* **Request Type** – Select the HTTP verb from the supported types above.
* **Timeout** – Duration (**in seconds**) to wait for a server response before failing.
* [**Request Body**](/http-pro/httppro-doc/structs#make-download-settings) – (**Optional**) JSON data or payload to send with the request (used with **POST**, **PUT**, **PATCH**). And header definition.

## Outputs

* **On Success** – Triggered when a valid response is received.
* **On Progress** – Fires as the request is actively processed.
* **On Streamed** – Fires as chunked responses are recieved. SSE or binary only data.
* **On Failed** – Triggered if the request fails.
* **Out Json** – Parsed JSON response object.
* **Out Binary Data** - If binary-only data is detected, it will be provided here for direct access.
* **Response Code** – The response code from the server.
* **Content Type** – The Content-Type header of the server response.
* **Response Headers** – An array of all headers returned by the server.

**Note:** If an error occurs during the HTTP request. Either from the server or within the node itself. An error message will be returned as a JSON response for you to handle in "**Out Json**".
{% endhint %}

***

### ASYNC Download File

<div data-full-width="false"><figure><img src="/files/IYmKcc3JSxZF5Y8nJnIV" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### ASYNC Download File

## Overview

Send a **HTTP(S)** **file download** request to a specified URL. This node can either return the raw **binary data** of the file or save the file directly to the user’s machine, depending on the **Download Settings** provided.

## Inputs

* **URL** – The full **HTTP/HTTPS** address of the file to be downloaded.
* **Timeout** – How long (**in seconds**) to wait before the request times out.
* [**Download Settings**](/http-pro/httppro-doc/structs#make-download-settings) – Optional structure to define how the downloaded file will be handled after download has finished, and header definition.

## Outputs

* **On Success** – Executes when the file download completes successfully.
* **On Progress** – Called as the download progresses. Useful for tracking progress percentage.
* **On Failed** – Executes if the download fails.
* **Download Percentage** – A float value between 0.0 and 100 representing the progress of the download.
* **Response Code** – The response code from the server.
* **Downloaded Binary Data** – The raw binary file data. Only available if file is not directly saved to disk.
* **Response Headers** – An array of all headers returned by the server.
  {% endhint %}

***

### ASYNC Upload Multipart File

<div data-full-width="false"><figure><img src="/files/znYbNtwQwHWG9pB8dsy5" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### ASYNC Upload Multipart File

## Overview

Send a **multipart/form-data  upload request** to a specified URL. It allows uploading one or more binary files (**e.g. images, logs, audio, Videos**) to an external API using the **multipart/form-data** format. The request is fully customizable via **Upload Settings** and supports attaching extra headers and multipart fields.&#x20;

The server's response is parsed and returned as a **JSON** object.

## Inputs

* **URL** – The target endpoint to send the file upload request to.
* **Timeout** – How long (**in seconds**) to wait before the request times out.
* [**Upload Settings**](/http-pro/httppro-doc/structs#make-httprequest-settings) – A structure that defines how the request is configured, including custom headers and option to choose a random or defined boundary.
* [**File Data**](/http-pro/httppro-doc/structs#make-upload-file-data) – An array of file definitions. Each entry in this array represents a single file to be uploaded and includes all of its corresponding settings. Each file definition also supports its own individual **multipart form data**, allowing for precise control over how each file is handled in the request.

## Outputs

* **On Success** – Triggered when the file upload is successfully completed and a valid response is received.
* **On Progress** – Called as data is being uploaded.
* **On Failed** – Triggered when the request fails.
* **Out Json** – The parsed server response.
* **Response Code** – The response code from the server.
* **Content Type** – The Content-Type header of the server response.
* **Response Headers** – An array of all headers returned by the server.

**Note:** If an error occurs during the **Multipart upload request**. Either from the server or within the node itself. An error message will be returned as a JSON response for you to handle.
{% endhint %}

***

### ASYNC Multipart Request

<div data-full-width="false"><figure><img src="/files/YTD8LUf1mBOm4Rd0sQtf" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### ASYNC Multipart Request

## Overview

Send a **multipart/form-data HTTP request** to a specified URL. It's commonly used to transmit structured data in separate parts. Ideal for **form** submissions or **API payloads**. The multipart request is configured using the "**Multipart Data"** struct. Which allows full control over **headers**, boundaries. And last but not least the core Multipart data.

## Inputs

* **URL** – The endpoint to which the multipart request is sent.
* **Timeout** – How long (**in seconds**) to wait before the request times out.
* [**Multipart Data**](/http-pro/httppro-doc/structs#make-multipart-http-data) – Structured multipart data built using **Make Multipart HTTPData**. This includes parts (fields or files), optional custom headers, and multipart boundary configuration.

## Outputs

* **On Success** – Triggered when the server responds with a successful HTTP code.
* **On Progress** – Fires as data is being sent.
* **On Failed** – Triggered when the request fails or times out.
* **Out Json** – A parsed JSON object returned by the server.
* **Response Code** – The response code from the server.
* **Content Type** – The Content-Type header of the server response.
* **Response Headers** – An array of all headers returned by the server.

**Note:** If an error occurs during the **Multipart request**. Either from the server or within the node itself. An error message will be returned as a JSON response for you to handle.
{% endhint %}

***

## Functions that are shared between non ASYNC HTTP(S) Nodes

### Add Headers To Request

<div data-full-width="false"><figure><img src="/files/jXoqbt8C6Sor6HSiGcdM" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Add Header To Request

## Overview

This utility node adds one or more **HTTP headers** to an existing HTTP request object. Headers are used to provide more information about the request. Such as authorization tokens, content types, client identifiers, or custom metadata. This is essential when communicating with APIs that require specific headers for access or formatting. This node must be called before the request is sent.

## Inputs

* **Target** – The **HTTP(S)** request object we want to set the headers for. The target node must be a child of class "**HTTPProxyBase**"
* **New Headers** – A map of headers to be added.

## Outputs

* **Success** – Returns **true** if the headers were successfully added to the request. Otherwise, returns **false.**
  {% endhint %}

***

### Remove Header From Request

<div data-full-width="false"><figure><img src="/files/T7wZbpyfumVn0NAfE9af" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Remove Header From Request

## Overview

This utility node removes a specified **HTTP(S)** header from an existing **HTTP(S)** request object provided by the "**Target**" input pin. Individual Headers are removed by specifying their key name. This can be useful when modifying or removing a single header from the existing request. This node must be called before the request is sent.

## Inputs

* **Target** – The **HTTP(S)** request object we want to remove the header for. The target node must be a child of class "**HTTPProxyBase**"
* **Key** – The name of the HTTP header to remove.

## Outputs

* **Success** – Returns **true** if the headers were successfully removed from the request. Otherwise, returns **false.**
  {% endhint %}

***

### Set New Timeout

<div data-full-width="false"><figure><img src="/files/fnB6F9mWQY9pL5idfcXB" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set New Timeout

## Overview

This utility node overrides the current timeout duration for a specific **HTTP(S)** request. The timeout defines how long (**in seconds**) the request will wait for a server response before being considered failed. This is particularly useful for adjusting responsiveness in low-latency or slow-network scenarios. This node must be called before the request is sent.

## Inputs

* **Target** – The **HTTP(S)** request object we want to set a new timeout for. The target node must be a child of class "**HTTPProxyBase**"
* **New Timeout** – Timeout duration in **seconds**.

## Outputs

None.
{% endhint %}

***

### Set New URL

<div data-full-width="false"><figure><img src="/files/6FPyYtI8cDnrt88CbaWV" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set New URL

## Overview

This node updates the **target URL** of an existing **HTTP(S)** request. It allows you to dynamically modify the endpoint address that the request will be sent to. Useful when when reusing request logic with variable endpoints or having a dynamic endpoint input. This node must be called before the request is sent.

## Inputs

* **Target** – The **HTTP(S)** request object we want to set a new URL  for. The target node must be a child of class "**HTTPProxyBase**"
* **New URL** – A string representing the new destination URL.

## Outputs

None.
{% endhint %}

***

### Process HTTP Request

<div data-full-width="false"><figure><img src="/files/1FA5jj331HaxuiBKJ7af" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

#### Process HTTP Request

## Overview

This node finalizes and sends a constructed **HTTP(S)** request to its desired URL using the settings and data you've defined prior to sending the request. It is the final step in sending the request and must be called after all modifications (e.g., setting URL, headers, timeout) are complete.

## Inputs

* **Target** – The **HTTP(S)** request object we want to set a new URL  for. The target node must be a child of class "**HTTPProxyBase**"

## Outputs

* **Success** – Returns **true** if the request was successfully sent to the endpoint. Otherwise returns **false.**
  {% endhint %}

***

### Cancel HTTP Request

<div data-full-width="false"><figure><img src="/files/qKFY2qkhBKCrGBkHOoOU" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Cancel HTTP Request

## Overview

This node cancels an **in-progress HTTP(S) request** tied to a given request object. If the request is currently executing or pending, it will be immediately terminated and treated as failed. This is useful for cases where the result is no longer needed.

## Inputs

* **Target** – The **HTTP(S)** request object we want to set a new URL  for. The target node must be a child of class "**HTTPProxyBase**"

## Outputs

* **Success** – Returns **true** if the request was successfully cancelled. Otherwise returns **false.**
  {% endhint %}

***

## Non ASNYC HTTP(S) Request

### Create New HTTP Request

<div data-full-width="false"><figure><img src="/files/Jh8m2gnHnanKXhSbSVVz" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Create New HTTP Request

## Overview

This node mirrors the functionality of the [**ASYNC** version](#async-http-s-request) but creates a new **non-ASYNC** **HTTP(S)** request instance. Since it is **non-ASYNC**, the request does not need to be sent immediately after creation. The node outputs an "**HTTPProxy"** object, which can be manually configured and executed. It is typically used in scenarios where developers need direct control over request execution, progress tracking, and the ability to cancel the request.

## Supported Request Types

* **GET**– Retrieves data from the server (**default**).
* **POST** – Sends data to the server, typically for creating new resources.
* **PUT** – Sends data to update/replace a resource.
* **PATCH** – Partially updates an existing resource.
* **DELETE** – Deletes a resource on the server.
* **HEAD** – Retrieves headers only (no body).
* **TRACE** – Echoes the received request (**used for diagnostics**).

## Inputs

* **URL** – The full URL to send the request to.
* **Request Type** – Select the HTTP verb from the supported types above.
* **Timeout** – Duration (**in seconds**) to wait for a server response before failing.
* [**Request Body**](/http-pro/httppro-doc/structs#make-httprequest-settings) – (**Optional**) JSON data or payload to send with the request (used with **POST**, **PUT**, **PATCH**). And header definition.

## Outputs

* **Success -** Returns **true** if the request was created successfully. Otherwise, returns **false**.
* **Out HTTPRequest** - A proxy instance referencing your **HTTP(S)** request, which must be configured before execution.
  {% endhint %}

***

### Set HTTP Request Body

<div data-full-width="false"><figure><img src="/files/Uradh4F7v09bR4Gv5E0L" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set HTTP Request Body

## Overview

This node overrides the **HTTP(S)** request body with the new provided body. It will fully override the body. This is useful for cases where the full body is dynamically populated and needs to be updated. This node must be called before the request is sent.

## Inputs

* **Target** – The **HTTP(S)** request object we want to override the body for. The target node must be a child of class "**HTTPProxy**"
* [N**ew Request Body**](/http-pro/httppro-doc/structs#make-http-body) – The new struct that will contain the new body of the request. This will override the current body of the request with the new passed in struct.

## Outputs

**None.**
{% endhint %}

***

### Set HTTP Request Type

<div data-full-width="false"><figure><img src="/files/WSaR0UAUpxV41r0LrIKR" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set HTTP Request Type

## Overview

This node overrides the **HTTP(S)** Verb for the specified request. This is a fundamental part of defining how the request will behave and interact with an API endpoint. This is a useful node if the Verb of the **HTTP(S)** request needs to change dynamically. This node must be called before the request is sent.

## Supported Request Types

* **GET**– Retrieves data from the server (**default**).
* **POST** – Sends data to the server, typically for creating new resources.
* **PUT** – Sends data to update/replace a resource.
* **PATCH** – Partially updates an existing resource.
* **DELETE** – Deletes a resource on the server.
* **HEAD** – Retrieves headers only (no body).
* **TRACE** – Echoes the received request (**used for diagnostics**).

## Inputs

* **Target** – The **HTTP(S)** request object we want to override the Request type for. The target node must be a child of class "**HTTPProxy**"
* **New Request Type**– The new request type to override the target **HTTP(S) proxy** request.

## Outputs

**None.**
{% endhint %}

***

### Delegate - OnSuccess

<div data-full-width="false"><figure><img src="/files/mryZEJW3d6MnZXW7qcm1" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Delegate OnSuccess

## Overview

This node is used to bind a and listen to the event **On Success,** for [non ASYNC **HTTP(S)** request](#create-new-http-request). When the **HTTP** request completes successfully, the bound event is triggered and supplied you with the response data. The event must be bound **before** the request is initiated to ensure proper tracking during execution.

## Inputs

* **Target** – The **HTTP(S)** request object we want to bind the delegate from. The target node must be a child of class "**HTTPProxy**"

## Outputs

* **Out Json** – Parsed JSON response object.
* **Out Binary Data** - If binary-only data is detected, it will be provided here for direct access.
* **Response Code** – The response code from the server.
* **Content Type** – The Content-Type header of the server response.
* **Response Headers** – An array of all headers returned by the server.
  {% endhint %}

***

### Delegate - OnProgress

<div data-full-width="false"><figure><img src="/files/9fwMAQbKwtgfbjmtjypG" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Delegate OnProgress

## Overview

This node is used to bind and listen to the **On Progress** event for [non-ASYNC **HTTP(S)** requests](#create-new-http-request). It allows you to monitor and respond to the progress of an ongoing **HTTP** request. The event must be bound **before** the request is initiated to ensure proper tracking during execution.

## Inputs

* **Target** – The **HTTP(S)** request object we want to bind the delegate from. The target node must be a child of class "**HTTPProxy**"

## Outputs

* **Out Json –** Parsed JSON response object.
* **Out Binary Data** - If binary-only data is detected, it will be provided here for direct access.
* **Response Code** – The response code from the server.
  {% endhint %}

***

### Delegate - OnStreamed

<div data-full-width="false"><figure><img src="/files/sFyThZutyBVYfl0jUq3k" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Delegate OnStreamed

## Overview

This node is used to bind to and listen for the **On Streamed** event for [non-ASYNC HTTP(S) requests](#create-new-http-request). It allows you to receive streamed responses from a server. The event can trigger multiple times as complete chunks of the response are received.

## Inputs

* **Target** – The **HTTP(S)** request object we want to bind the delegate from. The target node must be a child of class "**HTTPProxy**"

## Outputs

* **Out Json** – Used for **SSE** (**Server-Sent Events**) responses. Events are encoded as JSON, allowing you to extract and use the data.
* **Out Binary Data** – Contains the raw binary data. Use this if you are expecting a binary-only response.
  {% endhint %}

***

### Delegate - OnFailed

<div data-full-width="false"><figure><img src="/files/7kfn03x4hv23qreKiprH" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Delegate OnFailed

## Overview

This node is used to bind and listen to the **On Failed** event for [non-ASYNC **HTTP(S)** requests.](#create-new-http-request) If the request fails, either due to a network error, timeout, invalid endpoint, or server-side issue. The bound custom event will be triggered, allowing you to handle the failure. The input pins do not have to be populated with creation of this proxy object.

## Inputs

* **Target** – The **HTTP(S)** request object we want to bind the delegate from. The target node must be a child of class "**HTTPProxy**"

## Outputs

* **Out Json** – Parsed JSON response object.
* **Out Binary Data** - If binary-only data is detected, it will be provided here for direct access.
* **Response Code** – The response code from the server.
* **Content Type** – The Content-Type header of the server response.
* **Response Headers** – An array of all headers returned by the server.

**Note:** If an error occurs during the **HTTP Request**. Either from the server or within the node itself. An error message will be returned as a JSON response for you to handle.
{% endhint %}

***

## Non ASNYC Multipart Request

### Create New Multipart Request

<div data-full-width="false"><figure><img src="/files/HpeGHRVCHxlvjGqlOlDk" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Create New Multipart Request

## Overview

This node mirrors the functionality of the [ASYNC **multipart**](#async-multipart-request) variant but creates a new **non-ASYNC** **HTTP(S) multipart request** instance. Since it is **non-ASYNC**, the request does not need to be sent immediately after creation.&#x20;

The node outputs an **MultipartProxy** object, which can be manually configured and executed at a later time. This setup is ideal for developers who require direct control over how the request is  sent, tracked and potentially cancelled. The input pins do not have to be populated with creation of this proxy object.

## Inputs

* **URL** – The target URL to which the multipart request will be sent.
* **Timeout** – Duration (**in seconds**) to wait for a server response before failing.
* [**Multipart Data**](/http-pro/httppro-doc/structs#make-multipart-http-data) – Struct multipart data to be sent with the request. This includes the main body of the request.

## Outputs

* **Success -** Returns **true** if the request was created successfully. Otherwise, returns **false**.
* **Out Multipart Request** - A proxy instance referencing your **Multipart** request, which must be configured before execution.
  {% endhint %}

***

### Add Multi-part Data To Request

<div data-full-width="false"><figure><img src="/files/uj2dsBsV8Vl1u4gTH5Eo" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Add Multi-part Data To Request

## Overview

This node appends additional multipart data to an existing **multipart HTTP request**. It is used in scenarios where you need to include more multipart fields after the initial request object has been constructed. This node must be called before the request is sent.

## Inputs

* **Target** – The multipart request object to which the new multipart data will be appended. The target node must be a child of the "**MultipartProxy"** class.
* **New Multipart Data** – A map that holds key-value pairs. This map represents the new multipart data you want to add to your request.

## Outputs

* **Success -** Returns **true** if the request was created successfully. Otherwise, returns **false**.
  {% endhint %}

***

### Toggle Random Boundary&#x20;

<div data-full-width="false"><figure><img src="/files/XOvpfPXFxlqH35BCQBCc" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Toggle Random Boundary

## Overview

This node toggles the "**Random Boundary**" setting used in **multipart** **HTTP** requests. Boundaries are required in multipart formats to separate parts of the request payload. When enabled, a randomly generated boundary will be used. when disabled, a custom boundary must be supplied. This node must be called before the request is sent.

## Inputs

* **Target** – The multipart request object to which the new random boundary bool set. The target node must be a child of the "**MultipartProxy"** class.
* **New Random Boundary -** Set to **true** to enable random boundary generation, set to **false** to disable it, requiring manual boundary configuration.

## Outputs

None.
{% endhint %}

***

### Set Random Boundary

<div data-full-width="false"><figure><img src="/files/h7Fq6Fd7TsuD1SWImQW3" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set Random Boundary

## Overview

This node sets a custom boundary string for a **multipart HTTP request**. **Multipart** boundaries are used to define where each part of the payload begins and ends. This node gives you manual control over the boundary value when random generation is disabled. This node must be called before the request is sent.

**Note:** This node has no effect if the "**Random Boundary**" setting is enabled. To use this node effectively, make sure **random boundary** generation is turned off using the [**Toggle Random Boundary**](#toggle-random-boundary) node, or in the request body.

## Inputs

* **Target** – The multipart request object to which the new boundary will be set. The target node must be a child of the "**MultipartProxy"** class.
* **New Boundary -** A custom string value to use as the **multipart boundary**. Must follow proper boundary formatting.

## Outputs

None.
{% endhint %}

***

### Set Request Data

<div data-full-width="false"><figure><img src="/files/B6pip62aZLkdscBEyN9k" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set Request Data

## Overview

This node overrides the entire **multipart body** of a **multipart HTTP reques**t with new **multipart data**. It is used when you want to fully replace the request's contents with a new set of multipart data.

This is ideal for situations where you've generated multipart data externally or want to reuse predefined data across multiple requests. This node must be called before the request is sent.

## Inputs

* **Target** – The multipart request object whose data is to be overridden. The target must be a child of "**MultipartProxy"** class.
* [**New Multipart Data**](/http-pro/httppro-doc/structs#make-multipart-http-data) **-** The new multipart data that will completely replace the current **multipart payload**.

## Outputs

None.
{% endhint %}

***

### Delegate - OnSuccess

<div data-full-width="false"><figure><img src="/files/tqtS5qhixG7gJJDCaxnA" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Delegate OnSuccess

## Overview

This node is used to bind a and listen to the event **On Success,** for non ASYNC **multipart HTTP** request. When the **multipart HTTP reques**t completes successfully, the bound event is triggered and supplied you with the response data. The event must be bound **before** the request is initiated to ensure proper tracking during execution.

## Inputs

* **Target** – The **multipart HTTP reques**t object we want to bind the delegate from. The target node must be a child of class "MultipartProxy"

## Outputs

* **Out Json** – Parsed JSON response object.
* **Response Code** – The response code from the server.
* **Content Type** – The Content-Type header of the server response.
* **Response Headers** – An array of all headers returned by the server.
  {% endhint %}

***

### Delegate - OnProgress

<div data-full-width="false"><figure><img src="/files/FVNmCR0Nrq5OSR9zz7OE" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Delegate OnProgress

## Overview

This node is used to bind and listen to the **On Progress** event for non-ASYNC **multipart HTTP** requests. It allows you to monitor and respond to the progress of an ongoing **multipart HTTP** request. The event must be bound **before** the request is initiated to ensure proper tracking during execution.

## Inputs

* **Target** – The **multipart HTTP reques**t object we want to bind the delegate from. The target node must be a child of class "MultipartProxy"

## Outputs

* **Out Json** – Parsed JSON response object.
* **Response Code** – The response code from the server.
  {% endhint %}

***

### Delegate - OnFailed

<div data-full-width="false"><figure><img src="/files/34kAgLZCAC6JWC4QPbt7" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Delegate OnFailed

## Overview

This node is used to bind and listen to the **On Failed** event for non-ASYNC **multipart HTTP** requests. If the request fails, either due to a network error, timeout, invalid endpoint, or server-side issue. The bound custom event will be triggered, allowing you to handle the failure. The input pins do not have to be populated with creation of this proxy object.

## Inputs

* **Target** – The **multipart HTTP reques**t object we want to bind the delegate from. The target node must be a child of class "MultipartProxy"

## Outputs

* **Out Json** – Parsed JSON response object.
* **Response Code** – The response code from the server.
* **Content Type** – The Content-Type header of the server response.
* **Response Headers** – An array of all headers returned by the server.

**Note:** If an error occurs during the **Multipart request**. Either from the server or within the node itself. An error message will be returned as a JSON response for you to handle.
{% endhint %}

***

## Non ASNYC Upload Multipart Request

### Create New Upload Multipart Request

<div data-full-width="false"><figure><img src="/files/FVhx9lf3nq3A5xtjCrIn" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Create New Upload Multipart Request

## Overview

This node mirrors the functionality of the [ASYNC **multipart Upload** ](#async-upload-multipart-file)variant but creates a new **non-ASYNC** **upload multipart HTTP** request object. It is specifically designed to send binary files and associated metadata to a specified URL via a **multipart request format**. Unlike regular multipart requests, this version includes dedicated support for file data structures and upload configuration.

The node outputs a "**MultipartUploadProxy"** object that can be further customized before executing the upload.

## Inputs

* **URL** – The target URL to which the multipart request will be sent.
* **Timeout** – Duration (**in seconds**) to wait for a server response before failing.
* [**Upload Settings**](/http-pro/httppro-doc/structs#make-httprequest-settings) **-** A struct that contains core configuration settings for the request, such as boundary definitions and headers.
* [**File Data**](/http-pro/httppro-doc/structs#make-upload-file-data) **-** The primary array containing all the necessary information to construct the upload request. Each entry in the array represents a separate file to be uploaded.

## Outputs

* **Success -** Returns **true** if the request was created successfully. Otherwise, returns **false**.
* **Out Multipart Request** - A proxy instance referencing your "**MultipartUploadProxy"** request, which must be configured before execution.
  {% endhint %}

***

### Set File Data

<div data-full-width="false"><figure><img src="/files/t3f3m8QGE62qmMXsLejf" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set File Data

## Overview

This node overrides the primary array holding all the files you wish to upload with the new passed in array data. It is typically used when you want to replace all files with new data. This node must be called before the request is sent.

## Inputs

* **Target** – The Upload multipart request object whose data is to be overridden. The target must be a child of "**MultipartUploadProxy"** class.
* [**New File Data**](/http-pro/httppro-doc/structs#make-upload-file-data) **-** The new array containing individual file data that will override the existing data.

## Outputs

None.
{% endhint %}

***

### Add File Binary Data

<div data-full-width="false"><figure><img src="/files/A7YV5EKQtXRBcll9PqGj" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Add File Binary Data

## Overview

This node appends a single binary file entry to the internal file data array used in a **multi-part upload HTTP request**. Unlike [ **Set File Data**](#set-file-data), which replaces the entire array, this node allows incremental addition of individual files without overriding existing entries. Useful when constructing file uploads dynamically.

## Inputs

* **Target** – The multipart request instance to which the new binary file will be added. The target must be a child of "**MultipartUploadProxy"** class.
* [**New File Data**](/http-pro/httppro-doc/structs#make-upload-file-data) **-** The data for the new file to be uploaded. This includes metadata such as file name, content type, and the binary payload.

## Outputs

None.
{% endhint %}

***

### Set Upload Settings

<div data-full-width="false"><figure><img src="/files/iMTHWtApXkeeoo9JJY8s" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set Upload Settings

## Overview

This node overrides the current upload configuration of a **multipart upload request** by applying a new set of upload settings. These settings control how the **multipart HTTP Upload request** will behave. Such as the boundary string used or headers.

## Inputs

* **Target** – The multipart request instance whose settings will be overridden. The target must be a child of "**MultipartUploadProxy"** class.
* [**New Upload Settings**](/http-pro/httppro-doc/structs#make-httprequest-settings) **-** The new settings structure containing configuration for the **Multipart Upload Request.**

## Outputs

None.
{% endhint %}

***

### Toggle Random Boundary&#x20;

<div data-full-width="false"><figure><img src="/files/I4XRlvXwzkQ05POxxYFa" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Toggle Random Boundary

## Overview

This node toggles the "**Random Boundary**" setting used in **multi-part upload HTTP** requests. Boundaries are required in multipart formats to separate parts of the request payload. When enabled, a randomly generated boundary will be used. when disabled, a custom boundary must be supplied. This node must be called before the request is sent.

## Inputs

* **Target**– The multipart request object to which the new random boundary bool set. The target node must be a child of the "**MultipartUploadProxy"** class.
* **New Random Boundary**: Set to **true** to enable random boundary generation, set to **false** to disable it, requiring manual boundary configuration.

## Outputs

None.
{% endhint %}

***

### Set Random Boundary

<div data-full-width="false"><figure><img src="/files/EdN2FIvSESlBrOskGffl" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set Random Boundary

## Overview

This node sets a custom boundary string for a **multi-part upload HTTP request**. **Multipart** boundaries are used to define where each part of the payload begins and ends. This node gives you manual control over the boundary value when random generation is disabled. This node must be called before the request is sent.

**Note:** This node has no effect if the "**Random Boundary**" setting is enabled. To use this node effectively, make sure **random boundary** generation is turned off using the [**Toggle Random Boundary**](#toggle-random-boundary-2) node, or in the request body.

## Inputs

* **Target**– The multipart request object to which the new boundary will be set. The target node must be a child of the "**MultipartUploadProxy"** class.
* **New Boundary:** A custom string value to use as the **multipart boundary**. Must follow proper boundary formatting.

## Outputs

None.
{% endhint %}

***

### Delegate - OnSuccess

<div data-full-width="false"><figure><img src="/files/tqtS5qhixG7gJJDCaxnA" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Delegate OnSuccess

## Overview

This node is used to bind a and listen to the event **On Success,** for non ASYNC **multi-part upload HTTP** request. When the **multi-part upload HTTP reques**t completes successfully, the bound event is triggered and supplied you with the response data. The event must be bound **before** the request is initiated to ensure proper tracking during execution.

## Inputs

* **Target** – The **multi-part upload HTTP reques**t object we want to bind the delegate from. The target node must be a child of class "**MultipartUploadProxy**"

## Outputs

* **Out Json** – Parsed JSON response object.
* **Response Code** – The HTTP status code.
* **Content Type** – The Content-Type header of the server response.
* **Response Headers** – An array of all headers returned by the server.
  {% endhint %}

***

### Delegate - OnProgress

<div data-full-width="false"><figure><img src="/files/FVNmCR0Nrq5OSR9zz7OE" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Delegate OnProgress

## Overview

This node is used to bind and listen to the **On Progress** event for non-ASYNC **multi-part upload HTTP** requests. It allows you to monitor and respond to the progress of an ongoing **multi-part upload HTTP** request. The event must be bound **before** the request is initiated to ensure proper tracking during execution.

## Inputs

* **Target** – The **multi-part upload HTTP reques**t object we want to bind the delegate from. The target node must be a child of class "**MultipartUploadProxy**"

## Outputs

**None.**
{% endhint %}

***

### Delegate - OnFailed

<div data-full-width="false"><figure><img src="/files/34kAgLZCAC6JWC4QPbt7" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Delegate OnFailed

## Overview

This node is used to bind and listen to the **On Failed** event for non-ASYNC **multi-part upload HTTP** requests. If the request fails, either due to a network error, timeout, invalid endpoint, or server-side issue. The bound custom event will be triggered, allowing you to handle the failure. The input pins do not have to be populated with creation of this proxy object.

## Inputs

* **Target** – The **multi-part upload HTTP reques**t object we want to bind the delegate from. The target node must be a child of class "**MultipartUploadProxy**"

## Outputs

* **Out Json** – Parsed JSON response object.
* **Response Code** – The HTTP status code.
* **Content Type** – The Content-Type header of the server response.
* **Response Headers** – An array of all headers returned by the server.

**Note:** If an error occurs during the **Multipart upload request**. Either from the server or within the node itself. An error message will be returned as a JSON response for you to handle.
{% endhint %}


# Structs

## Structs

### Make Json HTTP File Data

<div data-full-width="false"><figure><img src="/files/8skfa2HmAgZDo5gdSSCc" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Json HTTP File Data

## Overview

Creates a struct reference to a file using a directory path and file name. This struct is used across various systems for handling file-based operations such as loading or saving files. It serves as a general-purpose file descriptor, simplifying access to files on the user's machine.

## Inputs

* **File Directory** – The full system path to the folder containing the file.
* **File Name** – The name of the file, including its extension (e.g., **example.json**, **output.txt**).

## Outputs

* **Json Http File Data** – A unified struct representing the target file. It can be used in nodes related to reading, writing, uploading, or processing both JSON and binary file types. This is the core struct used for file-based operations in this plugin.
  {% endhint %}

***

### Make HTTP Body

<div data-full-width="false"><figure><img src="/files/bM6zOpSm3uFhJBYkv0oc" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### HTTP Body

## Overview

Creates a struct **HTTP body** for use in both [**ASYNC** ](/http-pro/httppro-doc/http#async-http-s-request)and [**non-ASYNC**](/http-pro/httppro-doc/http#create-new-http-request) **HTTP requests**. This body includes headers, raw string data, or a JSON object, depending on your setup. You define the data payload you want to send in the request using this struct. If you use the "**JSON Body"**, the "**String Body**" will be ignored, and vice versa. This node allows you to configure the content of your request in a clean and reusable format.

**NOTE:** If no headers are provided, the content type defaults to **application/json.**

**NOTE:** If you are sending a GET request, any data payload is ignored. (**Json Body + String Body**)

## Inputs

* **Headers** – A map of header key–value pairs that should be included with the request.
* **Json Body** – A fully constructed JSON object to include as the request body.
* **String Body** – A plain text or formatted string payload (e.g., XML, CSV, or custom text).
* **SStreamed Request –** This toggle controls the behaviour and response of the request.\
  If set to true, it will internally configure the system to accept streamed responses.

## Outputs

* **HTTPBody** – A clean struct that holds all configured request data. Can be passed into both ASYNC and non-ASYNC HTTP nodes for sending POST requests.
  {% endhint %}

***

### Make Download Settings

<div data-full-width="false"><figure><img src="/files/a6lIAIW2eSxUxydGBZEM" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Download Settings

## Overview

Creates a struct **Download Settings** used to configure how an[ **HTTP download**](/http-pro/httppro-doc/http#async-download-file) should be handled. This struct allows you to define whether the response should be saved directly to a file or handled in memory, and to apply custom headers for the request.

**NOTE:** If no headers are provided, the content type defaults to **application/json.**

## Inputs

* **Should Save To File** – Boolean value. If **true**, the downloaded data will be saved directly to disk using the provided file path. If **false**, data will be handled in memory.
* [**File**](#make-json-http-file-data) – The target file path for saving the download. This is required if "**Should Save To File"** is enabled.
* **Headers** – Optional key-value pairs to include in the [HTTP download request](/http-pro/httppro-doc/http#async-download-file) headers.

## Outputs

* **Download Settings** – A struct representing the full download configuration, allowing full control over how data is processed or stored.
  {% endhint %}

***

### Make HTTPRequest Settings

<div data-full-width="false"><figure><img src="/files/DvwCVv6F8BOLqGktB8dQ" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### HTTP Request Settings

## Overview

Creates a struct settings object used to configure **multipart HTTP requests**. This struct is essential when sending **multipart** form data, allowing you to define how the boundary string is generated and which headers to include in the request. This node supports both ASYNC and non-ASYNC multipart form submissions.

**NOTE:** If no headers are provided, the content type defaults to **multipart/form-data.**

## Inputs

* **Random Boundary** – Boolean. If **true**, a unique boundary string is automatically generated for the multipart request. When enabled, the *Boundary* input is ignored.
* **Boundary** – A manually defined string to use as the boundary separator in the multipart body. Only used if *Random Boundary* is **false**.
* **Headers** – Optional key-value pairs to attach to the **HTTP request**. If omitted, a default multipart header will be applied automatically.

## Outputs

* **HTTPRequest Settings** – A struct that encapsulates all multipart-specific request settings. Pass this into nodes that send multipart HTTP requests to control boundary formatting and headers.
  {% endhint %}

***

### Make Multipart HTTP Data

<div data-full-width="false"><figure><img src="/files/a6lIAIW2eSxUxydGBZEM" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Multipart HTTP Data

## Overview

Creates a struct object used to configure **multipart HTTP(S) request**. This struct is essential when sending **multipart** form data, allowing you to define how the boundary string is generated,which headers to include in the request and the actual payload of the request. This node supports both ASYNC and non-ASYNC multipart form submissions.

**NOTE:** If no headers are provided, the content type defaults to **multipart/form-data.**

## Inputs

* **Random Boundary** – Boolean. If **true**, a unique boundary string is automatically generated for the multipart request. When enabled, the *Boundary* input is ignored.
* **Boundary** – A manually defined string to use as the boundary separator in the multipart body. Only used if *Random Boundary* is **false**.
* **Headers** – Optional key-value pairs to attach to the **HTTP request**. If omitted, a default multipart header will be applied automatically.
* **Multipart Data** – **The actual multi-part data you want to use as the payload** – This is the data that will be sent to the endpoint.

## Outputs

* **HTTPRequest Settings** – A struct that encapsulates all multipart-specific request settings. Pass this into nodes that send multipart HTTP requests to control boundary formatting and headers.
  {% endhint %}

***

### Make Upload File Data

<div data-full-width="false"><figure><img src="/files/6Our0mBYW3ledycDwgKz" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Upload File Data

## Overview

Creates a struct that will contain all the information about the files you want to upload. This struct includes both the file’s binary content and detailed metadata such as content types, field names, and additional multipart fields. It’s designed for full compatibility with advanced file upload scenarios (e.g. APIs that require specific field names or multiple data parts).

This node provides fine control over what data is included in the upload, and how it’s formatted, making it flexible for a wide range of HTTP endpoints.

## Inputs

* **Include File Content Type** – If **true**, the value from *File Content Type* will be included in the upload request. If **false**, it is ignored.
* **Field Name** – The name of the form field where the file should be placed in the request.
* **File Content Type** – The MIME type of the uploaded file (e.g., **"image/png"**, **"application/json"**). Used only if ***Include File Content Type*** is **true.**
* **File Name** – The name of the file to be uploaded, including its extension.
* **File Binary** – The raw binary content of the file to be uploaded.
* **Include Multi Part Content Type** – If **true**, the *Multi Part Content Type* array will be included in the request. If **false**, it is ignored.
* **Multi Part Content Type** – An array of strings representing additional content-type entries for extra multipart fields. Used when uploading form fields alongside files.
* **Multipart Data** – A key-value map of additional multipart fields to include with the request.

## Outputs

* **Upload File Data** – A reusable struct that encapsulates all file upload data and metadata. Feed this into [multipart upload requests](/http-pro/httppro-doc/http#async-upload-multipart-file) for file transfer.
  {% endhint %}


# Welcome

### JSON Utility Pro Plugin Documentation V3.8.0!

Welcome to the main hub for  J**SON Pro - Blueprint JSON Utility Plugin** Documentation! for Unreal Engine. This space provides access to all sections of the documentation. To begin, select a card below to view the desired documentation.

### Documentation selection

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td>General Utility</td><td></td><td></td><td><a href="/pages/cEHgDv7NGBquDGHeLyQ4">/pages/cEHgDv7NGBquDGHeLyQ4</a></td></tr><tr><td>JSON Utility</td><td></td><td></td><td><a href="/pages/WFglMhPKidrMjoTacMCw">/pages/WFglMhPKidrMjoTacMCw</a></td></tr><tr><td>JSON SET</td><td></td><td></td><td><a href="/pages/ebQQ7xLXZ1olxEkox4L1">/pages/ebQQ7xLXZ1olxEkox4L1</a></td></tr><tr><td>JSON GET</td><td></td><td></td><td><a href="/pages/EMxPMrxlROUWkerXxqio">/pages/EMxPMrxlROUWkerXxqio</a></td></tr><tr><td>JSON Pure</td><td></td><td></td><td><a href="/pages/0mPiGM0sEidNeMuppayF">/pages/0mPiGM0sEidNeMuppayF</a></td></tr><tr><td>Structures (Structs)</td><td></td><td></td><td><a href="/pages/5XCpSbm8inRgh38p8Goh">/pages/5XCpSbm8inRgh38p8Goh</a></td></tr></tbody></table>

{% hint style="info" %}

### Helpful Links

* **Youtube Tutorials -** [**https://www.youtube.com/@U-Forge/videos**](https://www.youtube.com/@U-Forge/videos)
* **Discord Server -** [**https://discord.gg/zjduQ7ZQNS**](https://discord.gg/zjduQ7ZQNS)
* **Showcase project download** - <https://drive.google.com/file/d/1ag_dphwII-S0KUiRZ_yoCJOOc4xhxCkF/view?usp=sharing>
* **Gumroad Product** - <https://uforge.gumroad.com/l/JSONProPlugin?layout=profile>
* Fab Marketplace Product - <https://www.fab.com/listings/f95d97cf-0a83-41ba-a6d4-00b03cfa37c1>
  {% endhint %}


# General Utility

## ASYNC Nodes

### ASYNC Load Text File From Disk

<div data-full-width="false"><figure><img src="/files/TaumkUNISkyVWQNz5FJJ" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## ASYNC Load Text File From Disk

## Overview

This node enables you to load any text file from the users machine directly into Unreal Engine as string data.

## Inputs

* [File Struct](/json-pro/jsonpro-doc/structs#structs) - The File struct contains details needed to load a file, including its **path** and **name**. Ensure the file name also includes its extension.

## Outputs

* **On Success** – Execute logic from here only when a file loads successfully.
* **On Fail** – Execute logic from here only if file loading fails.
* **Success** – Indicates success status: true or false, based on file loading results.
* Loaded Data - The loaded text data of the specified text file.
  {% endhint %}

***

### ASYNC Save Text File To Disk

<div data-full-width="false"><figure><img src="/files/cfDhiSVXyKRtqO19Cz1C" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## ASYNC Save Text File To Disk

## Overview

This node allows you to save any string text data from Unreal&#x20;Engine directly to the user's machine.

## Inputs

* **raw data** - The string that will be saved to the user's machine, with the file type determined by the file extension specified in the "**File**" struct. This can be any data ranging from raw string, to JSON files.
* [File Struct](/json-pro/jsonpro-doc/structs#structs) - The File struct contains details needed to load a file, including its **path** and **name**. Ensure the file name also includes its extension.

## Outputs

* **On Success** – Execute logic from here only when a file saves successfully.
* **On Fail** – Execute logic from here only if file saving fails.
* **Success** – Indicates success status: true or false, based on file save results.
  {% endhint %}

***

## General Nodes

### Load Text File From Disk

<div data-full-width="false"><figure><img src="/files/rI8S3Zq9kUVu3o072Myf" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## Load Text File From Disk

## Overview

This node enables you to load any text file from the users machine directly into Unreal Engine as string data.

As this is not a ASYNC node, meaning it will pause logic execution until the file successfully loads or fails.

## Inputs

* [File Struct](/json-pro/jsonpro-doc/structs#json-http-file-data) - The File struct contains details needed to load a file, including its **path** and **name**. Ensure the file name also includes its extension.

## Outputs

* **Success** – Indicates success status: true or false, based on file loading results.
* Loaded Data - The loaded text data of the specified text file.
  {% endhint %}

***

### Save Text File To Disk

<div data-full-width="false"><figure><img src="/files/mHP0xqZQSTgFN4GljIXC" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## Save Text File To Disk

## Overview

This node allows you to save any string text data from Unreal&#x20;Engine directly to the user's machine.

As this is not a ASYNC node, meaning it will pause logic execution until the file successfully loads or fails.

## Inputs

* **raw data** - The string that will be saved to the user's machine, with the file type determined by the file extension specified in the "**File**" struct.
* [File Struct](/json-pro/jsonpro-doc/structs#json-http-file-data) - The File struct contains details needed to load a file, including its **path** and **name**. Ensure the file name also includes its extension.

## Outputs

* **Success** – Indicates success status: true or false, based on file save results.
  {% endhint %}

***

### Delete File From Disk

<div data-full-width="false"><figure><img src="/files/yLNhxLZLkS9rVx9GgNVS" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Delete File From Disk

## Overview

This node allows you to delete files from the user's machin&#x65;**.** Use it responsibly and ensure that you only remove files that are safe and intended to be deleted. It is your responsibility to verify that each file is appropriate to remove.

## Inputs

* [File Struct](/json-pro/jsonpro-doc/structs#json-http-file-data) - The File struct contains details about the file you wish to remove, including its **path** and **name**. Ensure the file name also includes its extension.
* **Must Exist** - Ensure that the file you intend to remove exists before attempting deletion. If the file does not exist on the user's machine, no action will be taken.
* **Even Read Only** - Decide whether you want to allow the removal of **read-only** files. When this option is enabled, files marked as read-only can also be deleted.
* **Quiet** - This option determines whether an error message should appear if the file deletion fails for any reason. When enabled, debug logs will be printed; when disabled, no output will be shown.

## Outputs

* **Success** – Indicates success status: true or false, based on if the file was deleted.
  {% endhint %}

***

## Pure Nodes

### Check If File Exists

<div data-full-width="false"><figure><img src="/files/KQc3aNNA5Nb82ppRYDv6" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## Check If File Exists

## Overview

This node lets you verify the existence of a specific file on the user's machine. It can be located anywhere, not limited to project files, as long as the file path and name of the file are valid.

## Inputs

* [File Struct](/json-pro/jsonpro-doc/structs#json-http-file-data) - The File struct contains details needed to load a file, including its **path** and **name**. Ensure the file name also includes its extension.

## Outputs

* **Success** – Indicates success status: true or false, based on if the file was found and it exists.
  {% endhint %}

***

### Value Truncate With Precision

<div data-full-width="false"><figure><img src="/files/EZ6HZ1OCkyrd7SriXwG9" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## Value Truncate With Precision

## Overview

A utility function that truncates a numeric value to a specified precision. By default, it uses an efficient method, with an optional slower but more accurate alternative.\
\
**Note:** Due to Unreal Engine’s internal handling, the result may occasionally be rounded up.

## Inputs

* **Value** – The input number you want to truncate to a specified precision.
* **Precision** – The number of decimal places to retain after truncation.
* **Alternative Calculation** - Enables a more accurate, but less optimized, truncation method.

## Outputs

* **Success** – Returns true if the truncation was successful. Otherwise returns false.
* **Out Value**  – The resulting value after truncation has been applied.
  {% endhint %}


# JSON GET

## JSON GET

### Try Get Bool Field

<div data-full-width="false"><figure><img src="/files/jdkxMMmBmeUD2EyU1Uu2" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Try Get Bool Field

## Overview

JSON functionality used to safely retrieve a Boolean value from a JSON object. This node attempts to extract the value of a specified field and interpret it as a Boolean. If the field is found and its value is a valid Boolean, the operation succeeds.

## Inputs

* **JSON Object** – The input JSON object from which you want to retrieve the Boolean value.
* **Field Name** – The name of the field (**as string**) to search for within the JSON object.

## Outputs

* **Success** – Returns true if the field exists and its value was successfully parsed as a Boolean. Otherwise, returns false.
* **Bool Data** – The Boolean value retrieved from the specified field.
  {% endhint %}

***

### Try Get Byte Field

<div data-full-width="false"><figure><img src="/files/NRXPd99i1xFMXoHfwNxc" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Try Get Byte Field

## Overview

JSON functionality used to safely retrieve a byte value from a JSON object. This node attempts to extract the value of a specified field and interpret it as a byte. If the field is found and its value is a valid number within the acceptable range, the operation succeeds.

## Inputs

* **JSON Object** – The input JSON object from which you want to retrieve the byte field.
* **Field Name** – The name of the field (**as string**) to search for within the JSON object.

## Outputs

* **Success** – Returns true if the field exists and its value was successfully parsed as a byte. Otherwise, returns false.
* **Number Data** – The numeric value retrieved from the specified field, interpreted as a byte.
  {% endhint %}

***

### Try Get Number Field

<div data-full-width="false"><figure><img src="/files/RpICnRCBM3JLnXs2rMM7" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Try Get Number Field

## Overview

JSON functionality used to safely retrieve a numeric value from a JSON object. This node attempts to extract the value of a specified field and interpret it as a number (**Float**). If the field is found and its value is a valid number, the operation succeeds.

## Inputs

* **JSON Object** – The input JSON object from which you want to retrieve the number field.
* **Field Name** – The name of the field (**as string**) to search for within the JSON object.

## Outputs

* **Success** – Returns true if the field exists and its value was successfully parsed as a number. Otherwise, returns false.
* **Number Data** - The numeric value retrieved from the specified field, interpreted as a float.
  {% endhint %}

***

### Try Get String Field

<div data-full-width="false"><figure><img src="/files/Wpd7eV4fXsq72HVVDDfD" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Try Get String Field

## Overview

JSON functionality used to safely retrieve a string value from a JSON object. This node attempts to extract the value of a specified field and interpret it as a string. If the field is found and its value is a valid string, the operation succeeds.

## Inputs

* **JSON Object** – The input JSON object from which you want to retrieve the string field.
* **Field Name** – The name of the field (**as string**) to search for within the JSON object.

## Outputs

* **Success** – Returns true if the field exists and its value was successfully parsed as a string. Otherwise, returns false.
* **String Data** - The string value retrieved from the specified field.
  {% endhint %}

***

### Try Get Rotator Field

<div data-full-width="false"><figure><img src="/files/5O3juCzC7X4uWMxdUVzq" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Try Get Rotator Field

## Overview

JSON functionality used to safely retrieve a Rotator structure from a JSON object. This node attempts to extract the value of a specified field and interpret it as a Rotator, typically composed of **Pitch**, **Yaw**, and **Roll** values. If the field is found and correctly formatted, the operation succeeds.

You must ensure that the rotator structure is formatted as shown below. Otherwise, the data will not be found. As a recommendation, use the "[**Set JSON Rotator Field**](/json-pro/jsonpro-doc/json-set#set-json-rotator-field)" node to **guarantee** the structure is correctly formatted.

### Example

**{**\
&#x20;  **"PlayerRotation":  {**\
&#x20;     **"Roll": 0,**\
&#x20;     **"Pitch": 0,**\
&#x20;     **"Yaw": -90**\
&#x20;  **}**\
**}**

## Inputs

* **JSON Object** – The input JSON object from which you want to retrieve the rotator structure.
* **Field Name** – The name of the field (**as string**) to search for within the JSON object.

## Outputs

* **Success** – Returns true if the field exists and its value was successfully parsed as a rotator. Otherwise, returns false.
* **Rotator Data** - The Rotator value retrieved from the specified field. The JSON values for **Roll**, **Pitch**, and **Yaw** are extracted and converted into a valid Unreal Engine **Rotator** data type.
  {% endhint %}

***

### Try Get Vector Field

<div data-full-width="false"><figure><img src="/files/LQjMx5FzafO6krUpQJ1I" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Try Get Vector Field

## Overview

JSON functionality used to safely retrieve a Vector structure from a JSON object. This node attempts to extract the value of a specified field and interpret it as a Vector, typically composed of X, Y, and Z values. If the field is found and correctly formatted, the operation succeeds.

You must ensure that the vector structure is formatted in the expected way. Otherwise, the data will not be found. As a recommendation, use the [**Set JSON Vector Field**](/json-pro/jsonpro-doc/json-set#set-json-vector-field) node to **guarantee** the structure is correctly formatted.

### Example

**{**\
&#x20;  **"PlayerLocation":  {**\
&#x20;     **"X": 123,**\
&#x20;     **"Y": 321,**\
&#x20;     **"Z": 45**\
&#x20;  **}**\
**}**

## Inputs

* **JSON Object** – The input JSON object from which you want to retrieve the vector structure.
* **Field Name** – The name of the field (**as string**) to search for within the JSON object.

## Outputs

* **Success** – Returns true if the field exists and its value was successfully parsed as a vector. Otherwise, returns false.
* **Vector Data** - The Vector value retrieved from the specified field. The JSON values for X, Y, and Z are extracted and converted into a valid Unreal Engine Vector data type.
  {% endhint %}

***

### Try Get Vector2D Field

<div data-full-width="false"><figure><img src="/files/gTaO6ntD2dwAHpzZ40pm" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Try Get Vector2D Field

## Overview

JSON functionality used to safely retrieve a 2D Vector structure (**Vector2D**) from a JSON object. This node attempts to extract the value of a specified field and interpret it as a Vector2D, typically composed of X and Y values. If the field is found and correctly formatted, the operation succeeds.

You must ensure that the vector structure is formatted in the expected structure. Otherwise, the data will not be found. As a recommendation, use the [**Set JSON Vector Field 2D**](/json-pro/jsonpro-doc/json-set#set-json-vector-field-2d) node to **guarantee** the structure is correctly formatted.

### Example

**{**\
&#x20;  **"PlayerLocation2D":  {**\
&#x20;     **"X": 123,**\
&#x20;     **"Y": 321,**\
&#x20;  **}**\
**}**

## Inputs

* **JSON Object** – The input JSON object from which you want to retrieve the vector2D structure.
* **Field Name** – The name of the field (**as string**) to search for within the JSON object.

## Outputs

* **Success** – Returns true if the field exists and its value was successfully parsed as a vector2D. Otherwise, returns false.
* **Vector Data 2D** - The Vector2D value retrieved from the specified field. The JSON values for X, and Y are extracted and converted into a valid Unreal Engine Vector2D data type.
  {% endhint %}

***

### Try Get Transform Field

<div data-full-width="false"><figure><img src="/files/WC51AAkecKmA8rDWXBEn" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Try Get Transform Field

## Overview

JSON functionality used to safely retrieve a Transform structure from a JSON object. This node attempts to extract the value of a specified field and interpret it as a full Unreal Engine Transform, composed of a **Location** (**Vector**), **Rotation** (**Rotator**), and **Scale** (**Vector**). If the field is found and all components are properly formatted, the operation succeeds.

You must ensure that the Transform structure is formatted in the expected structure. Otherwise, the data will not be found. As a recommendation, use the [**Set JSON Transform Field**](/json-pro/jsonpro-doc/json-set#set-json-transform-field) node to **guarantee** the structure is correctly formatted.

### Example

**{**\
&#x20;  **"PlayerTransform": {**\
&#x20;      **"X": 123,**\
&#x20;      **"Y": 43,**\
&#x20;      **"Z": 45,**\
&#x20;      **"Roll": 0,**\
&#x20;      **"Pitch": -0,**\
&#x20;      **"Yaw": 90,**\
&#x20;      **"Scale X": 1,**\
&#x20;      **"Scale Y": 1,**\
&#x20;      **"Scale Z": 1**\
&#x20;   **}**\
**}**

## Inputs

* **JSON Object** – The input JSON object from which you want to retrieve the Transform structure.
* **Field Name** – The name of the field (**as string**) to search for within the JSON object.

## Outputs

* **Success** – Returns true if the field exists and its value was successfully parsed as a transform. Otherwise, returns false.
* **Transform Data** - The full **Transform** value retrieved from the specified field, including **location**, **rotation**, and **scale**. and converted into a valid Unreal Engine **Transform** data type.
  {% endhint %}

***

### Try Get Color Field

<div data-full-width="false"><figure><img src="/files/EPJfSYevVG7FlzHlzVl2" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Try Get Color Field

## Overview

JSON functionality used to safely retrieve a Color structure from a JSON object. This node attempts to extract the value of a specified field and interpret it as an Unreal Engine Linear Color, composed of **R**, **G**, **B**, and **A** values. If the field is found and correctly formatted, the operation succeeds.

You must ensure that the color structure is formatted in the expected way. Otherwise, the data will not be found. As a recommendation, use the [**Set JSON Color Field**](/json-pro/jsonpro-doc/json-set#set-json-color-field) node to **guarantee** the structure is correctly formatted.

### Example

**{**\
&#x20;  **"Torch Color": {**\
&#x20;      **"R": 255,**\
&#x20;      **"G": 0,**\
&#x20;      **"B": 50,**\
&#x20;      **"A": 255,**\\

&#x20;   **}**\
**}**

## Inputs

* **JSON Object** – The input JSON object from which you want to retrieve the color structure.
* **Field Name** – The name of the field (**as string**) to search for within the JSON object.

## Outputs

* **Success** – Returns true if the field exists and its value was successfully parsed as a color. Otherwise, returns false.
* **Color Data** - The Color value retrieved from the specified field. The **R**, **G**, **B**, and **A** components are extracted and converted into an Unreal Engine Linear color data type.
  {% endhint %}

***

### Try Get Object Field

<div data-full-width="false"><figure><img src="/files/NI6P5wRXWQAwTYF9il6T" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Try Get Object Field

## Overview

JSON functionality used to safely retrieve a nested JSON object from within a parent JSON structure. This node attempts to extract the value of a specified field and interpret it as a valid JSON object. If the field is found the operation succeeds.

## Inputs

* **JSON Object** – The input JSON object from which you want to retrieve a nested object field.
* **Field Name** – The name of the field (**as string**) to search for within the JSON object.

## Outputs

* **Success** – Returns true if the field exists and its value was successfully parsed as a JSON object. Otherwise, returns false.
* **JSON Object Field** – The nested JSON object retrieved from the specified field.
  {% endhint %}

***

### Try Get Array Field

<div data-full-width="false"><figure><img src="/files/RyOd0gBpldiIuLalbLvF" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Try Get Array Field

## Overview

JSON functionality used to safely retrieve an array from a JSON object. This node attempts to extract the value of a specified field and interpret it as a JSON array. If the field is found and its value is a valid array structure, the operation succeeds.

## Inputs

* **JSON Object** – The input JSON object from which you want to retrieve the array field.
* **Field Name** – The name of the field (**as string**) to search for within the JSON object.

## Outputs

* **Success** – Returns true if the field exists and its value was successfully parsed as a JSON array. Otherwise, returns false.
* **Out JSON Array** – The JSON array retrieved from the specified field.
  {% endhint %}

***

### Try Get All Object Field Names

<div data-full-width="false"><figure><img src="/files/q7bGcEcDFnD1X9OeGrkH" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Try Get All Object Field Names

## Overview

JSON functionality used to retrieve all the field (**key**) names from a JSON object. This node extracts a list of all keys within the given object, If the input is a valid JSON object, the operation succeeds.

## Inputs

* **JSON Object** – The input JSON object from which you want to extract all field names.

## Outputs

* **Success** – Returns true if the input was a valid JSON object and field names were successfully retrieved. Otherwise, returns false.
* **Field Names** – An array of strings containing all field names (**keys**) present inside the provided JSON object.
  {% endhint %}

***

### Try Get All Object Field Values

<div data-full-width="false"><figure><img src="/files/RF22RYqalbB3FMiULhcN" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Try Get All Object Field Values

## Overview

JSON functionality used to retrieve all field values from a JSON object and output them as an array. This node collects the values (**ignoring the keys**) in the provided JSON object. If the object is valid, it will return a JSON array containing each value as a JSON array.

**Note:** The Array Name input allows you to label or reference the returned array when accessing the values later. You can use the [**Try Get Array Field**](#try-get-array-field) node to access this data using the "**Array Name"**. Returns an empty array if the object is invalid or empty.

## Inputs

* **JSON Object** – The input JSON object from which you want to retrieve all field values.
* **Array Name** – The name under which the resulting value array will be stored or accessed. Useful for referencing in further operations.

## Outputs

* **Success** – Returns true if the input is a valid JSON object and the values were successfully collected into an array. Otherwise, returns false.
* **JSON Value** – A JSON object that contains a JSON array that holds all the found values from the provided "**Json object**".
  {% endhint %}


# JSON SET

## JSON SET

### Set New Json Object Field

<div data-full-width="false"><figure><img src="/files/gcX95m0V2G4gK2DeiRrT" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set New Json Object Field

## Overview

Creates a new, empty JSON object and inserts it into the specified field within an existing JSON object. This is typically used as a setup step for nesting further data inside a parent JSON. The newly created object is returned for further use and modification. **not the full original JSON object**.

**Note:** This node does not copy the entire structure forward. It only returns the newly created nested object so you can set data into it directly.

## Inputs

* **JSON Object** – The JSON object to which the new nested object should be added.
* **Field Name** – The name of the field (**as string**) to assign the new empty JSON object to.

## Outputs

* **Success** – Returns true if the empty object was successfully created and inserted. Otherwise false.
* **New Json Object** – The newly created empty object, returned for further editing (**not the full input object**).
  {% endhint %}

***

### Set Json Object Field

<div data-full-width="false"><figure><img src="/files/51cXDYds5QSOccJCiNIC" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set Json Object Field

## Overview

Adds or updates a nested JSON object field inside an existing parent JSON object. This node allows you to insert a fully constructed JSON object into another JSON object under a specified field name. If the field already exists, it will be overwritten with the new object.

Unlike [**Set New JSON Object Field**](#set-new-json-object-field), which creates a blank JSON object, this version accepts a fully built JSON object and appends it into a larger JSON.

### Examples

#### Parent Data

**{**\
&#x20; **"PlayerInfo": {**\
&#x20;   **"Name": "ShadowRogue",**\
&#x20;   **"Level": 12,**\
&#x20;   **"Class": "Assassin",**\
&#x20;   **"XP": 3450,**\
&#x20;   **"IsAlive": true**\
&#x20; **}**\
**}**

#### Data To Insert

**{**\
&#x20; **"PlayerStats": {**\
&#x20;   **"Health": 85,**\
&#x20;   **"Mana": 60,**\
&#x20;   **"Stamina": 40,**\
&#x20;   **"Armor": 25,**\
&#x20;   **"CriticalChance": 0.15**\
&#x20; **}**\
**}**

#### Combined Data

**{**\
&#x20; **"PlayerInfo": {**\
&#x20;   **"Name": "ShadowRogue",**\
&#x20;   **"Level": 12,**\
&#x20;   **"Class": "Assassin",**\
&#x20;   **"XP": 3450,**\
&#x20;   **"IsAlive": true**\
&#x20; **},**\
&#x20; **"PlayerStats": {**\
&#x20;   **"Health": 85,**\
&#x20;   **"Mana": 60,**\
&#x20;   **"Stamina": 40,**\
&#x20;   **"Armor": 25,**\
&#x20;   **"CriticalChance": 0.15**\
&#x20; **}**\
**}**

## Inputs

* **JSON Object** – The parent JSON object you want to modify.
* **Object Data** - The desired data to insert into the parent.
* **Field Name** – The name of the field (**as string**) under which the object should be stored.

## Outputs

* **Success** – Returns true if the nested object was successfully inserted. Otherwise false.
* **New Json Object** – The updated full JSON object, including the newly added or modified field.
  {% endhint %}

***

### Insert Json Object

<div data-full-width="false"><figure><img src="/files/u9IToGEKCuW2rB46XD7E" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Insert Json Object

## Overview

This node merges one JSON object into another by copying all fields from the **Data to Insert** object into the **JSON Object**. If any fields already exist in the target, they will be **overwritten** by values from the incoming object. The result is a single, combined JSON object containing fields from both inputs.

**Note:** This operation does not create a nested structure. All top-level fields from both objects are merged into a flat, unified JSON.

### Examples

#### Parent Data

**{**\
&#x20; **"PlayerInfo": {**\
&#x20;   **"Name": "ShadowRogue",**\
&#x20;   **"Level": 12,**\
&#x20;   **"Class": "Assassin",**\
&#x20;   **"XP": 3450**\
&#x20; **}**\
**}**

#### Data To Insert

**{**\
&#x20; **"PlayerStats": {**\
&#x20;   **"Health": 85,**\
&#x20;   **"Mana": 60,**\
&#x20;   **"Stamina": 40,**\
&#x20;   **"Armor": 25**\
&#x20; **}**\
**}**

#### Combined Data

**{**\
&#x20; **"PlayerInfo": {**\
&#x20;   **"Name": "ShadowRogue",**\
&#x20;   **"Level": 12,**\
&#x20;   **"Class": "Assassin",**\
&#x20;   **"XP": 3450,**\
&#x20;   **"Health": 85,**\
&#x20;   **"Mana": 60,**\
&#x20;   **"Stamina": 40,**\
&#x20;   **"Armor": 25**\
&#x20; **}**\
**}**

## Inputs

* **JSON Object** – The target JSON object that will receive the new fields.
* **Data To Insert** – The second JSON object whose fields will be inserted into the first.

## Outputs

* **Success** – Returns true if the merge was successful. Otherwise false.
* **Combined Json** – The resulting JSON object containing fields from both input objects.
  {% endhint %}

***

### Set Json Bool Field

<div data-full-width="false"><figure><img src="/files/b6RHjMXRIuXgYZNj21b4" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set Json Bool Field

## Overview

Adds or updates a Boolean field in a JSON object. This node sets a key–value pair where the value is a Boolean (**true** or **false**) and outputs a new JSON object containing the updated field.

**Note:** If the specified field already exists, its value will be overwritten. If it does not exist, it will be added.

## Inputs

* **JSON Object** – The input JSON object you want to modify.
* **Field Name** – The name of the field (**as string**) to add or update.
* **Value** - The Boolean value (**true or false**) to assign to the specified field.

## Outputs

* **Success** – Returns true if the field was successfully set in the object. Otherwise false.
* **New Json Object** – The updated JSON object with the Boolean field set.
  {% endhint %}

***

### Set Json Byte Field

<div data-full-width="false"><figure><img src="/files/eHBGoSBSq1oXi1en95yz" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set Json Byte Field

## Overview

Adds or updates a byte value field in a JSON object. This node sets a key–value pair where the value is treated as a byte and outputs a new JSON object containing the updated data.

**Note:** If the specified field already exists, its value will be overwritten. If it does not exist, it will be added.

## Inputs

* **JSON Object** – The input JSON object you want to modify.
* **Field Name** – The name of the field (**as string**) to add or update.
* **Value** - The byte value (**0–255**) to assign to the specified field.

## Outputs

* **Success** – Returns true if the field was successfully set in the object. Otherwise false.
* **New Json Object** – The updated JSON object with the new or modified byte field.
  {% endhint %}

***

### Set Json Number Field

<div data-full-width="false"><figure><img src="/files/lisd9YDxp5LPz1iOt6nA" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set Json Number Field

## Overview

Adds or updates a numeric field (**Float**) in a JSON object. This node sets a key–value pair where the value is a number (**float**), and outputs a new JSON object with the updated content.

**Note:** If the specified field already exists, its value will be overwritten. If it does not exist, it will be added.

## Inputs

* **JSON Object** – The input JSON object you want to modify.
* **Field Name** – The name of the field (**as string**) to add or update.
* **Value** - The numeric value (**float**) to assign to the specified field.

## Outputs

* **Success** – Returns true if the field was successfully set in the object. Otherwise false.
* **New Json Object** – The updated JSON object with the number (**float**) field added or changed.
  {% endhint %}

***

### Set Json String Field

<div data-full-width="false"><figure><img src="/files/sB04UYwn7iHujgaZ80TU" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set Json String Field

## Overview

Adds or updates a string field in a JSON object. This node sets a key–value pair where the value is a string and outputs a new JSON object containing the updated or newly created field.

**Note:** If the specified field already exists, its value will be overwritten. If it does not exist, it will be added.

## Inputs

* **JSON Object** – The input JSON object you want to modify.
* **Field Name** – The name of the field (**as string**) to add or update.
* **Value** - The string value to assign to the specified field.

## Outputs

* **Success** – Returns true if the field was successfully set in the object. Otherwise false.
* **New Json Object** – The updated JSON object with the string field included.
  {% endhint %}

***

### Set Json Rotator Field

<div data-full-width="false"><figure><img src="/files/HgDCMTb0sn0w3cjW1MC9" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set Json Rotator Field

## Overview

JSON functionality used to add or update a **Rotator** field in a JSON object. This node sets a specified field using Unreal Engine **Rotator**, composed of **Roll**, **Pitch**, and **Yaw** values. Ensuring the structure is correctly formatted for JSON serialization.

You must ensure the rotator structure is stored in the expected format. (**As seen in example below**) This node automatically applies the proper formatting, making it the **recommended** way to write rotator data into JSON for compatibility with other JSON utility nodes.

### Example

**{**\
&#x20;  **"PlayerRotation":  {**\
&#x20;     **"Roll": 0,**\
&#x20;     **"Pitch": 0,**\
&#x20;     **"Yaw": -90**\
&#x20;  **}**\
**}**

## Inputs

* **JSON Object –** The JSON object you want to modify.
* **Field Name** – The name of the field (**as string**) to create or update.
* **Rotator Data -** The Unreal Engine **Rotator** value you wish to set.

## Outputs

* **Success** – Returns true if the **rotator** field was successfully added or updated. Otherwise false.
* **New Json Object** - The resulting JSON object with the correctly formatted **rotator** field.
  {% endhint %}

***

### Set Json Vector Field

<div data-full-width="false"><figure><img src="/files/hU7zjZfGKRYNaEnUrGNM" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set Json Vector Field

## Overview

JSON functionality used to add or update a **Vector field** in a JSON object. This node takes an Unreal Engine Vector (**composed of X, Y, and Z values**) and assigns it to a specified field within a JSON object using the correct structure.

You must ensure the vector structure is stored in the expected format. (**As seen in example below**) This node automatically applies the proper formatting, making it the **recommended** way to write vector data into JSON for compatibility with other JSON utility nodes.

### Example

**{**\
&#x20;   **"SpawnLocation": {**\
&#x20;   **"X": 120.0,**\
&#x20;   **"Y": 450.0,**\
&#x20;   **"Z": 300.0**\
&#x20; **}**\
**}**

## Inputs

* **JSON Object –** The JSON object you want to modify.
* **Field Name** – The name of the field (**as string**) to create or update.
* **Vector Data -** The Unreal Engine **Vector** value you want to assign, composed of  **X**, **Y**, and **Z**.

## Outputs

* **Success** – Returns true if the **vector** field was successfully written to the JSON object. Otherwise false.
* **New Json Object** - The resulting JSON object with the new or updated **vector** field.
  {% endhint %}

***

### Set Json Vector Field 2D

<div data-full-width="false"><figure><img src="/files/Db0vDwgLNeX8cpVYhW0S" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set Json Vector Field 2D

## Overview

JSON functionality used to safely write a **2D Vector** structure (**Vector2D**) into a JSON object. This node sets the value of a specified field using a **Vector2D**, composed of **X** and **Y** values, and ensures it is formatted correctly for later use.

You must ensure the Vector2D structure is stored in the expected format. (**As seen in example below**) This node automatically applies the proper formatting, making it the **recommended** way to write vector2D data into JSON for compatibility with other JSON utility nodes.

### Example

**{**\
&#x20;   **"PlayerLocation2D": {**\
&#x20;   **"X": 123,**\
&#x20;   **"Y": 321**\
&#x20; **}**\
**}**

## Inputs

* **JSON Object –** The JSON object you want to modify.
* **Field Name** – The name of the field (**as string**) to create or update.
* **Vector Data 2D -** The **Vector2D** value to assign. The **X** and **Y** components will be written into the JSON structure.

## Outputs

* **Success** – Returns true if the field was successfully written into the JSON object. Otherwise, returns false.
* **New Json Object** - The resulting JSON object with the **Vector2D** field added or updated using the correct format.
  {% endhint %}

***

### Set Json Transform Field

<div data-full-width="false"><figure><img src="/files/mY1nPI9pRDacMNreySSq" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set Json Transform Field

## Overview

JSON functionality used to safely write a **Transform** structure into a JSON object. This node sets a specified field using a **Unreal Engine Transform**, composed of a **Location (X, Y, Z)**, **Rotation (Roll, Pitch, Yaw)**, and **Scale** (**Scale X, Scale Y, Scale Z**), all flattened into a single-level JSON format.

You must ensure that the **Transform** structure is stored in the expected format. This node guarantees correct formatting and is the **recommended** way to serialize **Transform** data into JSON.

### Example

**{**\
&#x20;   **"PlayerTransform": {**\
&#x20;   **"X": 123,**\
&#x20;   **"Y": 43,**\
&#x20;   **"Z": 45,**\
&#x20;   **"Roll": 0,**\
&#x20;   **"Pitch": -0,**\
&#x20;   **"Yaw": 90,**\
&#x20;   **"Scale X": 1,**\
&#x20;   **"Scale Y": 1,**\
&#x20;   **"Scale Z": 1**\
&#x20; **}**\
**}**

## Inputs

* **JSON Object –** The JSON object you want to modify.
* **Field Name** – The name of the field (**as string**) to create or update.
* **Transform Data -** The Unreal Engine **Transform** value, including **Location**, **Rotation**, and **Scale** components.

## Outputs

* **Success** – Returns true if the Transform field was successfully written into the JSON object. Otherwise false.
* **New Json Object** - The resulting JSON object with the flattened **Transform** structure added or updated.
  {% endhint %}

***

### Set Json Color Field

<div data-full-width="false"><figure><img src="/files/FD95Ajfq5TZHyu3EGIqc" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set Json Color Field

## Overview

JSON functionality used to add or update a color structure in a JSON object. This node takes an Unreal Engine **Linear Color** (**composed of R, G, B, and A values**) and sets it as the value of a specified object field in the JSON object.

You must ensure the **Linear Color** structure is stored in the expected format. (**As seen in example below**) This node automatically applies the proper formatting, making it the **recommended** way to write **Linear Color** data into JSON for compatibility with other JSON utility nodes.

### Example

**{**\
&#x20;   **"Torch Color": {**\
&#x20;   **"R": 255,**\
&#x20;   **"G": 0,**\
&#x20;   **"B": 50,**\
&#x20;   **"A": 255**\
&#x20; **}**\
**}**

## Inputs

* **JSON Object –** The input JSON object you want to modify.
* **Field Name** – The name of the field (**as string**) to add or update.
* **New Color -** The Unreal Engine **Linear Color** you want to assign to the specified field.

## Outputs

* **Success** – Returns true if the field was successfully written to the object. Otherwise, returns false.
* **New Json Object** - The resulting JSON object with the properly formatted color structure added or updated.
  {% endhint %}

***

### Set Json Array Field

<div data-full-width="false"><figure><img src="/files/6z1n8hkPpMP0XRAyhCr8" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set Json Array Field

## Overview

JSON functionality used to add or update an array field in a JSON object. This node sets a field to hold a JSON array, which can contain values of any type (**Numbers, strings, objects, or nested arrays**), and ensures it is properly formatted for serialization.

## Inputs

* **JSON Object** – The JSON object you want to modify.
* **Field Name** – The name of the field (**as string**) to assign the array to.
* **Root Level JSON** – If **true**, all array entries are placed together into a single object where each entry shares the **same structure** (i.e. same fields, with different values). If **false**, each array entry is placed into its **own individual JSON object**, typically with only one field per object.
* **Array Data** – The array of values to insert into the JSON object.

### Examples

**Root Level JSON = false**

**{**\
&#x20;    **"Inventory": \[**\
&#x20;   **{**\
&#x20;     **"Name": "Health Potion"**\
&#x20;   **},**\
&#x20;   **{**\
&#x20;    **"Type": "Weapon"**\
&#x20;   **},**\
&#x20;   **{**\
&#x20;    **"Effect": "Fireball"**\
&#x20;   **}**\
&#x20;  **]**\
**}**

**Root Level JSON = true**

**\[**\
&#x20;  **{**\
&#x20;   **"Name": "Health Potion",**\
&#x20;   **"Type": "Consumable",**\
&#x20;   **"Effect": "Restore 50 HP"**\
&#x20;  **},**\
&#x20;  **{**\
&#x20;   **"Name": "Iron Sword",**\
&#x20;   **"Type": "Weapon",**\
&#x20;   **"Effect": "Ice walking"**\
&#x20;  **},**\
&#x20;  **{**\
&#x20;   **"Name": "Magic Scroll",**\
&#x20;   **"Type": "Spell",**\
&#x20;   **"Effect": "Fireball"**\
&#x20;  **}**\
**]**

## Outputs

* **Success** – Returns true if the array was successfully added or updated in the JSON object. Otherwise, returns false.
* **Out Array Data** – The JSON array that was written to the specified field or to the root, depending on the configuration.
  {% endhint %}


# JSON PURE

## JSON PURE

### Try Get Json Length

<div data-full-width="false"><figure><img src="/files/XyqEJ5H4A8ZC1ggS2cwL" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Try Get Json Length

## Overview

Attempts to determine the number of key-value pairs inside a given JSON object. This is a pure function that inspects the structure and returns how many fields are present at the top level of the object. Commonly used when iterating through dynamic or unknown JSON data lengths and a length is required.

## Inputs

* **JSON Object** – The JSON object whose length (**number of fields**) you want to retrieve.

## Outputs

* **Length** – An integer representing the number of fields (**keys**) in the provided JSON object.
  {% endhint %}

***

### Try Get Json Value

<div data-full-width="false"><figure><img src="/files/IjJ5JQAoh9GlCdw3nwbW" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set Json Object Field

## Overview

This node is a universal “[**Try Get**](/json-pro/jsonpro-doc/json-get)” function that combines the functionality of all individual JSON “[**Try Get**](/json-pro/jsonpro-doc/json-get)”  nodes into one pure function. It dynamically determines the type of value to retrieve based on the variable type connected to the **Out Data** output pin. This allows developers to fetch Booleans, strings, numbers, objects and more using one flexible node.

**Note**: The wildcard pin must be set before execution. The node will search for the field based on the data type connected to **Out Data**.

## Inputs

* **JSON Object** – The JSON object to search within.
* **Field Name** - The name of the field (**as string**) to find and retrieve the data of.

## Outputs

* **Out Data (Wildcard)** – The resulting value found from the JSON object.
  {% endhint %}

***

### Try Get First Json Field Value

<div data-full-width="false"><figure><img src="/files/Ll0b6p08MPba6ewpEbUP" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Try Get First Json Field Value

## Overview

This node retrieves the value of the first field found in a JSON object. The type of the value to be retrieved is determined by the variable connected to the **Out Data** pin (**Wildcard**). This is useful when you want to inspect or access the first entry of a JSON structure without knowing the field data type.

## Inputs

* **JSON Object** – The JSON object from which the first value will be retrieved.

## Outputs

* **Out Data** – The value of the first found field.
  {% endhint %}

***

### New Json Object From String

<div data-full-width="false"><figure><img src="/files/HNDD6MHcfOhbI5F225cT" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### New Json Object From String

## Overview

This node creates a local JSON object from a string without needing a execution pin. It is a pure function and is often used when working with inline JSON or when importing data from a string format. The provided string must be valid JSON syntax.

**Note:** If you want to quickly debug JSON data or dynamically parse a string into a JSON object, this is a useful node. However, since it is a pure function, the resulting data exists only for the current frame. Be sure to store or process the output immediately, as the data will be lost on the next engine frame.

## Inputs

* **In Json String** – A text string containing valid JSON data to be parsed.

## Outputs

* **Out Value** – A JSON object generated from the input string. If the string is invalid, the object may be empty.
  {% endhint %}

***

### New Pure Json Object

<div data-full-width="false"><figure><img src="/files/En98s42De1Jb3JyYqfSS" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### New Pure Json Object

## Overview

Creates a new, empty JSON object using a pure function. Since this node does not trigger the execution flow, it is ideal for temporary JSON creation in pure logic chains such as function graphs or value assignments.

**Note:** Because it is a pure function, the generated JSON object exists only during the current frame. Be sure to immediately cache or assign the output, or the data will be lost.

## Outputs

* **JSON Object** – A new, empty JSON object that can be modified or passed into other JSON-related nodes.
  {% endhint %}

***

### Make Named Object Json Data

<div data-full-width="false"><figure><img src="/files/8bPjRBF8Nj3qrJu2w1Wl" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Make Named Object Json Data

## Overview

This pure function accepts two arrays as input. The first is an array of strings, where each string represents a key that will be used to construct a JSON object. The second is a wildcard array that provides the values to be assigned to each of these keys.

It is important to note that the number of keys must match the number of values exactly. You cannot provide more keys than values or more values than keys. This mismatch is not supported and will result in an error.

An example of the output generated by this function can be found below.

### Example

#### Parent Data

**{**\
&#x20;  **"Username": "UForge",**\
&#x20;  **"Password": "UForge123",**\
&#x20;  **"Address": "UForge road",**\
&#x20;  **"Class": "Mage"**\
**}**

## Inputs

* **Field Names Array** – An array of string values that represent the keys for the resulting JSON object.
* **In Array** – A wildcard array input. This node accepts any data type supported by Unreal Engine. It loops over each value and assigns it to the corresponding key from the **Field Names Array**, building valid key-value pairs.

## Outputs

* **Out Data** – JSON object that holds the new constructed JSON data.
  {% endhint %}

***

### Set JSON Field

<div data-full-width="false"><figure><img src="/files/4T7c3DzJKdUkkr4nhlUo" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set JSON Field

## Overview

A pure node that allows you to set data into your desired JSON object. The input supports any data type recognized by Unreal Engine, as it uses a wildcard input. This node essentially functions as a universal "[**Set Node**](/json-pro/jsonpro-doc/json-set)," combining the behaviour of all individual set nodes into one.

## Inputs

* **JSON Object** – The JSON object where you want to set a new JSON value.
* **Field Name** – The name of the field you are creating.
* **In Data (Wildcard)** – The data you want to set. This is a wildcard input pin, so it supports any valid data type recognized by Unreal Engine.

## Outputs

* **Out Data** – The new JSON object that contains the newly created JSON field.
  {% endhint %}

***

### Value Only JSON Array

<div data-full-width="false"><figure><img src="/files/GgI17WFjgs5xcWvOrNfP" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Value Only JSON Array

## Overview

A pure JSON node that allows you to create a JSON array containing only values, with no keys assigned to individual elements. The output structure looks like this: **{"words": \["AB", "BC", "CD", "DE", "EF"]}**. To use this node, simply provide a field name and an array containing your data.

## Inputs

* **Field Name** – The name of the JSON array you wish to create.
* **In Array (Wildcard)** – A wildcard input pin that accepts any data type supported by Unreal Engine. This is the array of data you want to include in the value-only JSON array.

## Outputs

* **Out Data** – The new JSON object that contains the value-only JSON array.
  {% endhint %}


# JSON Utility

## JSON Utility

### Create New Json File

<div data-full-width="false"><figure><img src="/files/gxztFHr8LlAQZ0KidYOI" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Create New Json File

## Overview

Creates a new, empty JSON object for use in further JSON operations. This node is typically the starting point when building a new JSON structure from scratch. Once created, fields can be added using the various [**Set JSON Field nodes**](/json-pro/jsonpro-doc/json-set)**.**

## Inputs

**None.**

## Outputs

* **Success** – Returns true if the JSON object was successfully created.
* **Json Object** – The newly created empty JSON object, ready for data to be added.
  {% endhint %}

***

### Convert Json To String

<div data-full-width="false"><figure><img src="/files/2JbXXejAwpEyJSemVmtv" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Convert Json To String

## Overview

Converts a JSON object into a string format for storage, string manipulation or display. This node serializes the given JSON object into a text-based JSON string. Optionally, you can enable **Pretty Print** to format the output with indentation and line breaks for easier readability.

## Inputs

* **JSON Object** – The JSON object you want to convert into a string.
* **Pretty Print** – If checked, the output string will be human-readable with line breaks and indentation. If unchecked, the result will be compact.

## Outputs

* **Success** – Returns true if the JSON object was successfully converted to a string. Otherwise returns false.
* **JSON String** – The serialized string representation of the input JSON object.
  {% endhint %}

***

### String To Json Object

<div data-full-width="false"><figure><img src="/files/ZwVVjGN1TuFhrmIC4IM4" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### String To Json Object

## Overview

Parses a JSON-formatted string and converts it into a usable JSON object. This node is typically used to deserialize data that was loaded from a file, received from a server, for quick debugging and testing.

**Note:** The input string must be a valid JSON. If the format is incorrect or malformed, the conversion will fail and return an empty or null object.

## Inputs

* **Raw String Data** – A string containing valid JSON text that you want to parse into a JSON object.

## Outputs

* **Success** – Returns true if the string was successfully parsed into a JSON object. Otherwise, returns false.
* Loaded Json Object - The resulting JSON object that can be used with other JSON nodes.
  {% endhint %}

***

### Remove Json Field

<div data-full-width="false"><figure><img src="/files/f2hp6Kbj29nBu4pOj4Ve" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Remove Json Field

## Overview

Removes a specific field (**key–value pair**) from a given JSON object. This node returns a new JSON object identical to the input, except without the specified field. This is useful for cleaning structures before saving, serializing, or sending.

**Note:** If the specified field does not exist, the original object is returned unchanged, and **Success** is set to false.

## Inputs

* **JSON Object** – The input JSON object from which you want to remove a field.
* **Field Name** – The name of the field (**as string**) to remove from the JSON object.

## Outputs

* **Success** – Returns true if the field was found and successfully removed. Otherwise, returns false.
* **New Json Object** - A copy of the input JSON object with the specified field removed (**if found**).
  {% endhint %}

***

### Has Field

<div data-full-width="false"><figure><img src="/files/lNvYPcLyk9gl8k4T1XJK" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}
Has Field

## Overview

Checks whether a specified field (**key**) exists within a given JSON object. This node is useful for verifying the presence of data before attempting to retrieve or operate on a specific field, helping prevent errors and ensure safer parsing.

**Note:** This node only checks the top-level of the provided JSON object. It does not search nested objects.

## Inputs

* **JSON Object** – The JSON object in which you want to search for a field.
* **Field to Find** – The name of the field (**as string**) to check for existence.

## Outputs

* **Success** – Returns true if the specified field exists in the JSON object. Otherwise, returns false.
  {% endhint %}

***

### Struct To Json String

<div data-full-width="false"><figure><img src="/files/wCudRRM2YzenIxPiH0Fw" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Struct To Json String

## Overview

Converts any given Unreal Engine **Struct** into a JSON-formatted string. This node serializes all the fields of the **struct** into a valid JSON text format, making it suitable for saving to files, sending over network, or logging.

## Inputs

* **In Struct (Wildcard)** – The input struct to serialize into a JSON string.

## Outputs

* **Success** – Returns true if the struct was successfully converted into a JSON string. Otherwise false.
* **Out JSON** - The resulting JSON-formatted string representing the struct’s data.
  {% endhint %}

***

### Json To Struct

<div data-full-width="false"><figure><img src="/files/fn9e3yRgtquXYgxmbqDd" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Json To Struct

## Overview

Converts a JSON object into a corresponding Unreal Engine **Struct**. The target struct must have its field names match the keys in the JSON object exactly for the conversion to succeed. Each JSON object field name must be identical to struct field names. Otherwise the conversion will fail.

## Inputs

* **JSON Object** – The input JSON object that you want to convert into a struct.

## Outputs

* **Success** – Returns true if the JSON was successfully parsed into the target struct. Otherwise, returns false.
* **Out Struct (Wildcard)** - The resulting struct populated with the data from the JSON object.
  {% endhint %}


# Structs

## Structs

### Make Json PRO File Data

<div data-full-width="false"><figure><img src="/files/8skfa2HmAgZDo5gdSSCc" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### JSON Pro File Data

## Overview

Creates a struct reference to a file using a directory path and file name. This struct is used across various systems for handling file-based operations such as loading or saving files. It serves as a general-purpose file descriptor, simplifying access to files on the user's machine.

## Inputs

* **File Directory** – The full system path to the folder containing the file.
* **File Name** – The name of the file, including its extension (e.g., **example.json**, **output.txt**).

## Outputs

* **Json Pro File Data** – A unified struct representing the target file. It can be used in nodes related to reading or writing and processing JSON file types. This is the core struct used for file-based operations in this plugin.
  {% endhint %}


# Welcome

### WebSocket Pro Plugin Documentation V5.0.0!

Welcome to the main hub for **WebSocket Pro Utility Plugin** Documentation! for Unreal Engine. This space provides access to all sections of the documentation. To begin, select a card below to view the desired documentation.

### Documentation selection

<table data-card-size="large" data-view="cards"><thead><tr><th></th><th data-hidden data-card-cover data-type="files"></th><th data-hidden></th><th data-hidden data-card-target data-type="content-ref"></th></tr></thead><tbody><tr><td>General Utility</td><td></td><td></td><td><a href="/pages/cEHgDv7NGBquDGHeLyQ4">/pages/cEHgDv7NGBquDGHeLyQ4</a></td></tr><tr><td>JSON Utility</td><td></td><td></td><td><a href="/pages/WFglMhPKidrMjoTacMCw">/pages/WFglMhPKidrMjoTacMCw</a></td></tr><tr><td>JSON SET</td><td></td><td></td><td><a href="/pages/ebQQ7xLXZ1olxEkox4L1">/pages/ebQQ7xLXZ1olxEkox4L1</a></td></tr><tr><td>JSON GET</td><td></td><td></td><td><a href="/pages/EMxPMrxlROUWkerXxqio">/pages/EMxPMrxlROUWkerXxqio</a></td></tr><tr><td>JSON Pure</td><td></td><td></td><td><a href="/pages/0mPiGM0sEidNeMuppayF">/pages/0mPiGM0sEidNeMuppayF</a></td></tr><tr><td>HTTP</td><td></td><td></td><td><a href="/pages/BqY720ZGlp576fobevAq">/pages/BqY720ZGlp576fobevAq</a></td></tr><tr><td>WebSocket's</td><td></td><td></td><td><a href="/pages/dDE2x2ayBamSa5jRrFGu">/pages/dDE2x2ayBamSa5jRrFGu</a></td></tr><tr><td>Structures (Structs)</td><td></td><td></td><td><a href="/pages/5XCpSbm8inRgh38p8Goh">/pages/5XCpSbm8inRgh38p8Goh</a></td></tr></tbody></table>

{% hint style="info" %}

### Helpful Links

* **Youtube Tutorials -** [**https://www.youtube.com/@U-Forge/videos**](https://www.youtube.com/@U-Forge/videos)
* **Discord Server -** [**https://discord.gg/zjduQ7ZQNS**](https://discord.gg/zjduQ7ZQNS)
* **Showcase project download** - <https://drive.google.com/file/d/1HzLuNb-nrKTwL2PUG4HbvVJT3kjy24-P/view?usp=sharing>
* **Gumroad Product** - [https://uforge.gumroad.com/l/WebSocketProPlugin](https://uforge.gumroad.com/l/WebSocketPro)
* Fab Marketplace Product - <https://www.fab.com/listings/1f1f6a39-cf1b-4879-b394-6fec5aca16a2>
  {% endhint %}


# General Utility

## ASYNC Nodes

### ASYNC Load Binary File From Disk

<div data-full-width="false"><figure><img src="/files/Rur2cLQMj6cAHXgVhCo3" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## ASYNC Load Binary File From Disk

## Overview

Warning: Previewing the "**Out Binary Data**" array may cause lag. The array can be extremely large, depending on the file size. This node lets you load any binary file from your machine into Unreal Engine as a binary array.

## Inputs

* [File Struct](/websocket-pro/documentation/structs#json-http-file-data) - The File struct contains details needed to load a file, including its **path** and **name**. Ensure the file name also includes its extension.

## Outputs

* **On Success** – Execute logic from here only when a file loads successfully
* **On Fail** – Execute logic from here only if file loading fails.
* **Success** – Indicates success status: true or false, based on file loading results.
* **Out Binary Data** – Provides the loaded binary data of the chosen file.
  {% endhint %}

***

### ASYNC Save Binary File To Disk

<div data-full-width="false"><figure><img src="/files/ERHsFuXBiuH3BGbKFDqZ" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## ASYNC Save Binary File To Disk

## Overview

Warning: Previewing the "**File Binary Data**" array may cause lag. The array can be extremely large, depending on the file size. This node lets you save any binary file from Unreal Engine directly to the users machine.

## Inputs

* **File Binary Data -** An array that contains the binary data of the file to be saved.
* [File Struct](/websocket-pro/documentation/structs#json-http-file-data) - The File struct contains details needed to load a file, including its **path** and **name**. Ensure the file name also includes its extension.

## Outputs

* **On Success** – Execute logic from here only when a file saves successfully
* **On Fail** – Execute logic from here only if file saving fails.
* **Success** – Indicates success status: true or false, based on file saving results.
  {% endhint %}

***

### ASYNC Load Text File From Disk

<div data-full-width="false"><figure><img src="/files/TaumkUNISkyVWQNz5FJJ" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## ASYNC Load Text File From Disk

## Overview

This node enables you to load any text file from the users machine directly into Unreal Engine as string data.

## Inputs

* [File Struct](/websocket-pro/documentation/structs#structs) - The File struct contains details needed to load a file, including its **path** and **name**. Ensure the file name also includes its extension.

## Outputs

* **On Success** – Execute logic from here only when a file loads successfully.
* **On Fail** – Execute logic from here only if file loading fails.
* **Success** – Indicates success status: true or false, based on file loading results.
* Loaded Data - The loaded text data of the specified text file.
  {% endhint %}

***

### ASYNC Save Text File To Disk

<div data-full-width="false"><figure><img src="/files/cfDhiSVXyKRtqO19Cz1C" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## ASYNC Save Text File To Disk

## Overview

This node allows you to save any string text data from Unreal&#x20;Engine directly to the user's machine.

## Inputs

* **raw data** - The string that will be saved to the user's machine, with the file type determined by the file extension specified in the "**File**" struct. This can be any data ranging from raw string, to JSON files.
* [File Struct](/websocket-pro/documentation/structs#structs) - The File struct contains details needed to load a file, including its **path** and **name**. Ensure the file name also includes its extension.

## Outputs

* **On Success** – Execute logic from here only when a file saves successfully.
* **On Fail** – Execute logic from here only if file saving fails.
* **Success** – Indicates success status: true or false, based on file save results.
  {% endhint %}

***

## General Nodes

### Load Binary File From Disk

<div data-full-width="false"><figure><img src="/files/ALMtS9Kc2NYJxlkmc1tV" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## Load Binary File From Disk

## Overview

Warning: Previewing the "**Out Binary Data**" array may cause lag. The array can be extremely large, depending on the file size. This node lets you load any binary file from your machine into Unreal Engine as a binary array.

As this is not a ASYNC node, meaning it will pause logic execution until the file successfully loads or fails.

## Inputs

* [File Struct](/websocket-pro/documentation/structs#json-http-file-data) - The File struct contains details needed to load a file, including its **path** and **name**. Ensure the file name also includes its extension.

## Outputs

* **Success** – Indicates success status: true or false, based on file loading results.
* **Out Binary Data** – Provides the loaded binary data of the chosen file.
  {% endhint %}

***

### Load Text File From Disk

<div data-full-width="false"><figure><img src="/files/rI8S3Zq9kUVu3o072Myf" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## Load Text File From Disk

## Overview

This node enables you to load any text file from the users machine directly into Unreal Engine as string data.

As this is not a ASYNC node, meaning it will pause logic execution until the file successfully loads or fails.

## Inputs

* [File Struct](/websocket-pro/documentation/structs#json-http-file-data) - The File struct contains details needed to load a file, including its **path** and **name**. Ensure the file name also includes its extension.

## Outputs

* **Success** – Indicates success status: true or false, based on file loading results.
* Loaded Data - The loaded text data of the specified text file.
  {% endhint %}

***

### Save Binary File To Disk

<div data-full-width="false"><figure><img src="/files/OjsFUYx6LcpaQ1QsNfdn" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## Save Binary File To Disk

## Overview

Warning: Previewing the "**File Binary Data**" array may cause lag. The array can be extremely large, depending on the file size. This node lets you save any binary file from Unreal Engine directly to the users machine.

As this is not a ASYNC node, meaning it will pause logic execution until the file successfully loads or fails.

## Inputs

* **File Binary Data -** An array that contains the binary data of the file to be saved.
* [File Struct](/websocket-pro/documentation/structs#json-http-file-data) - The File struct contains details needed to load a file, including its **path** and **name**. Ensure the file name also includes its extension.

## Outputs

* **Success** – Indicates success status: true or false, based on file saving results.
  {% endhint %}

***

### Save Text File To Disk

<div data-full-width="false"><figure><img src="/files/mHP0xqZQSTgFN4GljIXC" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## Save Text File To Disk

## Overview

This node allows you to save any string text data from Unreal&#x20;Engine directly to the user's machine.

As this is not a ASYNC node, meaning it will pause logic execution until the file successfully loads or fails.

## Inputs

* **raw data** - The string that will be saved to the user's machine, with the file type determined by the file extension specified in the "**File**" struct.
* [File Struct](/websocket-pro/documentation/structs#json-http-file-data) - The File struct contains details needed to load a file, including its **path** and **name**. Ensure the file name also includes its extension.

## Outputs

* **Success** – Indicates success status: true or false, based on file save results.
  {% endhint %}

***

### Delete File From Disk

<div data-full-width="false"><figure><img src="/files/yLNhxLZLkS9rVx9GgNVS" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Delete File From Disk

## Overview

This node allows you to delete files from the user's machin&#x65;**.** Use it responsibly and ensure that you only remove files that are safe and intended to be deleted. It is your responsibility to verify that each file is appropriate to remove.

## Inputs

* [File Struct](/websocket-pro/documentation/structs#json-http-file-data) - The File struct contains details about the file you wish to remove, including its **path** and **name**. Ensure the file name also includes its extension.
* **Must Exist** - Ensure that the file you intend to remove exists before attempting deletion. If the file does not exist on the user's machine, no action will be taken.
* **Even Read Only** - Decide whether you want to allow the removal of **read-only** files. When this option is enabled, files marked as read-only can also be deleted.
* **Quiet** - This option determines whether an error message should appear if the file deletion fails for any reason. When enabled, debug logs will be printed; when disabled, no output will be shown.

## Outputs

* **Success** – Indicates success status: true or false, based on if the file was deleted.
  {% endhint %}

***

## Pure Nodes

### Check If File Exists

<div data-full-width="false"><figure><img src="/files/KQc3aNNA5Nb82ppRYDv6" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## Check If File Exists

## Overview

This node lets you verify the existence of a specific file on the user's machine. It can be located anywhere, not limited to project files, as long as the file path and name of the file are valid.

## Inputs

* [File Struct](/websocket-pro/documentation/structs#json-http-file-data) - The File struct contains details needed to load a file, including its **path** and **name**. Ensure the file name also includes its extension.

## Outputs

* **Success** – Indicates success status: true or false, based on if the file was found and it exists.
  {% endhint %}

***

### Decode Base64 Encrypted Data To Binary

<div data-full-width="false"><figure><img src="/files/UJN8rbq1dciYUNdo4xmd" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## Decode Base64 Encrypted Data To Binary

## Overview

Warning: Previewing the "**Out Binary Data**" array may cause lag. The array can be extremely large, depending on the decoded file size. This node allows you to decode Base64 encoded binary data back into usable binary data (**Array**). Base64 encoding is a format designed to prevent errors during the transfer of binary information.

## Inputs

* **Base 64 Encrypted String** – The encrypted Base 64 string data you want to Decode into usable binary Data.

## Outputs

* **Success** – Indicates success status: true or false, based on if the data was decrypted successfully.
* **Out Binary Data** – Provides the decrypted binary data as an array from the encrypted Base64 string.
  {% endhint %}

***

### Encode Base64 Encrypted Data

<div data-full-width="false"><figure><img src="/files/QgS2btddAD2xcaJ8XCcP" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## Encode Binary To Base64 Encrypted Data

## Overview

Warning: Previewing the "**Binary Data**" array may cause lag. The array can be extremely large, depending on the file size you want to encrypt. This node allows you to encode raw binary data directly into Base64 encryption. Base64 encoding is a format designed to prevent errors during the transfer of binary information.

## Inputs

* **Binary Data** – The raw binary data you wish to encode into Base64 encryption.

## Outputs

* **Success** – Indicates success status: true or false, based on if the data was encrypted successfully.
* **Base64 Encrypted String** – A string that contains encrypted binary data encoded in Base64 format.
  {% endhint %}

***

### Binary To String Conversation

<div data-full-width="false"><figure><img src="/files/EZ6HZ1OCkyrd7SriXwG9" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## Binary To String Conversation

## Overview

Warning: Previewing the "**Binary Data**" array may cause lag. The array can be extremely large, depending on the data to Decode. This node converts raw binary data encoded in **UTF-8**, **UTF-16**, or similar **ASCII-range** formats into a usable string.

## Inputs

* **Binary Data**– The binary data to convert back into a readable string. Must be encoded in **UTF-8**, **UTF-16**, or a similar **ASCII-range** format.

## Outputs

* **Success** – Returns true if the binary data was successfully decoded into string data. Otherwise returns false.
* **Decoded String** – The usable string containing the decoded content of the provided binary data.
  {% endhint %}

***

### String To Binary Conversation

<div data-full-width="false"><figure><img src="/files/iBkOQpzB3HTmJTEl8cIY" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## String To Binary Conversation

## Overview

Warning: Previewing the "**Encoded Data**" array may cause lag. The array can be extremely large, depending on the data to encode. This node converts string data into binary data using **UTF-8** encoding.

## Inputs

* **Data To Encode** – The raw string to be encoded into **UTF-8** binary format.

## Outputs

* **Success** – Returns true if the binary data was successfully encoded into **UTF-8** binary data otherwise, returns false.
* **Encoded Data**  – The encoded result of the input string, returned as a binary array.
  {% endhint %}

***

### Percentage Based URL Encode

<div data-full-width="false"><figure><img src="/files/o9rnuOiJS5ogv5ZLWuf9" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## Percentage Based URL Encode

## Overview

A utility function, also known as **percent-encoding**, used to encode characters within a **URL** that are either not allowed or have special meaning.&#x20;

This method replaces such characters with a percent sign (`%`) followed by two hexadecimal digits representing the character’s **ASCII** or **Unicode value**.

## Inputs

* **Un Encoded URL** – The original URL containing characters that are not allowed or have special meaning.

## Outputs

* **Encoded URL**  – The resulting URL string, with the original content percent-encoded to safely represent characters that are otherwise illegal in URLs.
  {% endhint %}

***

### Percentage Based URL Decode

<div data-full-width="false"><figure><img src="/files/mYcJD5TUwIUs2JPj31Jz" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## Percentage Based URL Decode

## Overview

A utility function used to decode URLs that have been encoded using **percent-encoding**.\
This method identifies percent-encoded URLs (a `%` followed by two hexadecimal digits) and converts them back to their original characters based on their **ASCII** or **Unicode** values.

## Inputs

* **Encoded URL** – The **percent-encoded** URL string, containing characters in the **%XX** hexadecimal format.

## Outputs

* **Decoded URL**  – The resulting URL string with all percent-encoded characters converted back to their original readable form.
  {% endhint %}

***

### Get URL Base

<div data-full-width="false"><figure><img src="/files/RnFimAuaa1wJWT4UmBkt" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## Get URL Base

## Overview

A utility function used to extract the base part of a URL. This function removes any query parameters             (**?key=value**) and fragment identifiers (**#section**) from the input, returning only the base URL (**typically the scheme, domain, and path**).

### Example

**In URL**  – <https://example.com/products/item?id=123&ref=homepage#details>\
**URL Base**  – <https://example.com/products/item>

## Inputs

* **In URL** – The full URL string from which to extract the base. This may include query parameters or fragments.

## Outputs

* **URL Base**  – The base portion of the input URL, excluding any query parameters or fragment identifiers.
  {% endhint %}

***

### Get URL Domain

<div data-full-width="false"><figure><img src="/files/O00DsTjTJhcs65bmc6Ms" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## Get URL Domain

## Overview

A utility function that extracts the domain (**host**) portion from a given URL. This function returns only the domain name (**with or without subdomain**) and excludes the URL **scheme**, **path**, **query parameters** and **fragment identifiers**.

### Example

**In URL**  – <https://example.com/products/item?id=123&ref=homepage#details>\
**URL Base**  – example.com

## Inputs

* **In URL** – The full URL string from which the domain should be extracted.

## Outputs

* **URL Base**  – The domain portion of the input URL  without the scheme **https\://**, **path** or **parameters**.
  {% endhint %}

***

### Get File Mime Type

<div data-full-width="false"><figure><img src="/files/9eXPVpdeAYgl6QckF0Vp" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

## Get URL Domain

## Overview

A utility function that determines the **MIME type** of a file based on its file extension. **MIME** types (**Multipurpose Internet Mail Extensions**) are used to indicate the nature and format of a file, which is useful for web requests, file uploads or content-type headers.

### Example

**In File path** – C:/Images/photo.png\
**Output Mime type** – image/png

## Inputs

* **In File Path** – The full file path and file name (**including extension**) of the file for which you want to determine the **MIME** type.

## Outputs

* **Out Mime Type**  – A string representing the detected **MIME** type of the file.
  {% endhint %}


# JSON GET

## JSON GET

### Try Get Bool Field

<div data-full-width="false"><figure><img src="/files/jdkxMMmBmeUD2EyU1Uu2" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Try Get Bool Field

## Overview

JSON functionality used to safely retrieve a Boolean value from a JSON object. This node attempts to extract the value of a specified field and interpret it as a Boolean. If the field is found and its value is a valid Boolean, the operation succeeds.

## Inputs

* **JSON Object** – The input JSON object from which you want to retrieve the Boolean value.
* **Field Name** – The name of the field (**as string**) to search for within the JSON object.

## Outputs

* **Success** – Returns true if the field exists and its value was successfully parsed as a Boolean. Otherwise, returns false.
* **Bool Data** – The Boolean value retrieved from the specified field.
  {% endhint %}

***

### Try Get Byte Field

<div data-full-width="false"><figure><img src="/files/NRXPd99i1xFMXoHfwNxc" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Try Get Byte Field

## Overview

JSON functionality used to safely retrieve a byte value from a JSON object. This node attempts to extract the value of a specified field and interpret it as a byte. If the field is found and its value is a valid number within the acceptable range, the operation succeeds.

## Inputs

* **JSON Object** – The input JSON object from which you want to retrieve the byte field.
* **Field Name** – The name of the field (**as string**) to search for within the JSON object.

## Outputs

* **Success** – Returns true if the field exists and its value was successfully parsed as a byte. Otherwise, returns false.
* **Number Data** – The numeric value retrieved from the specified field, interpreted as a byte.
  {% endhint %}

***

### Try Get Number Field

<div data-full-width="false"><figure><img src="/files/RpICnRCBM3JLnXs2rMM7" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Try Get Number Field

## Overview

JSON functionality used to safely retrieve a numeric value from a JSON object. This node attempts to extract the value of a specified field and interpret it as a number (**Float**). If the field is found and its value is a valid number, the operation succeeds.

## Inputs

* **JSON Object** – The input JSON object from which you want to retrieve the number field.
* **Field Name** – The name of the field (**as string**) to search for within the JSON object.

## Outputs

* **Success** – Returns true if the field exists and its value was successfully parsed as a number. Otherwise, returns false.
* **Number Data** - The numeric value retrieved from the specified field, interpreted as a float.
  {% endhint %}

***

### Try Get String Field

<div data-full-width="false"><figure><img src="/files/Wpd7eV4fXsq72HVVDDfD" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Try Get String Field

## Overview

JSON functionality used to safely retrieve a string value from a JSON object. This node attempts to extract the value of a specified field and interpret it as a string. If the field is found and its value is a valid string, the operation succeeds.

## Inputs

* **JSON Object** – The input JSON object from which you want to retrieve the string field.
* **Field Name** – The name of the field (**as string**) to search for within the JSON object.

## Outputs

* **Success** – Returns true if the field exists and its value was successfully parsed as a string. Otherwise, returns false.
* **String Data** - The string value retrieved from the specified field.
  {% endhint %}

***

### Try Get Object Field

<div data-full-width="false"><figure><img src="/files/NI6P5wRXWQAwTYF9il6T" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Try Get Object Field

## Overview

JSON functionality used to safely retrieve a nested JSON object from within a parent JSON structure. This node attempts to extract the value of a specified field and interpret it as a valid JSON object. If the field is found the operation succeeds.

## Inputs

* **JSON Object** – The input JSON object from which you want to retrieve a nested object field.
* **Field Name** – The name of the field (**as string**) to search for within the JSON object.

## Outputs

* **Success** – Returns true if the field exists and its value was successfully parsed as a JSON object. Otherwise, returns false.
* **JSON Object Field** – The nested JSON object retrieved from the specified field.
  {% endhint %}

***

### Try Get Array Field

<div data-full-width="false"><figure><img src="/files/RyOd0gBpldiIuLalbLvF" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Try Get Array Field

## Overview

JSON functionality used to safely retrieve an array from a JSON object. This node attempts to extract the value of a specified field and interpret it as a JSON array. If the field is found and its value is a valid array structure, the operation succeeds.

## Inputs

* **JSON Object** – The input JSON object from which you want to retrieve the array field.
* **Field Name** – The name of the field (**as string**) to search for within the JSON object.

## Outputs

* **Success** – Returns true if the field exists and its value was successfully parsed as a JSON array. Otherwise, returns false.
* **Out JSON Array** – The JSON array retrieved from the specified field.
  {% endhint %}

***

### Try Get All Object Field Names

<div data-full-width="false"><figure><img src="/files/q7bGcEcDFnD1X9OeGrkH" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Try Get All Object Field Names

## Overview

JSON functionality used to retrieve all the field (**key**) names from a JSON object. This node extracts a list of all keys within the given object, If the input is a valid JSON object, the operation succeeds.

## Inputs

* **JSON Object** – The input JSON object from which you want to extract all field names.

## Outputs

* **Success** – Returns true if the input was a valid JSON object and field names were successfully retrieved. Otherwise, returns false.
* **Field Names** – An array of strings containing all field names (**keys**) present inside the provided JSON object.
  {% endhint %}

***

### Try Get All Object Field Values

<div data-full-width="false"><figure><img src="/files/RF22RYqalbB3FMiULhcN" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Try Get All Object Field Values

## Overview

JSON functionality used to retrieve all field values from a JSON object and output them as an array. This node collects the values (**ignoring the keys**) in the provided JSON object. If the object is valid, it will return a JSON array containing each value as a JSON array.

**Note:** The Array Name input allows you to label or reference the returned array when accessing the values later. You can use the [**Try Get Array Field**](#try-get-array-field) node to access this data using the "**Array Name"**. Returns an empty array if the object is invalid or empty.

## Inputs

* **JSON Object** – The input JSON object from which you want to retrieve all field values.
* **Array Name** – The name under which the resulting value array will be stored or accessed. Useful for referencing in further operations.

## Outputs

* **Success** – Returns true if the input is a valid JSON object and the values were successfully collected into an array. Otherwise, returns false.
* **JSON Value** – A JSON object that contains a JSON array that holds all the found values from the provided "**Json object**".
  {% endhint %}


# JSON SET

## JSON SET

### Set New Json Object Field

<div data-full-width="false"><figure><img src="/files/gcX95m0V2G4gK2DeiRrT" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set New Json Object Field

## Overview

Creates a new, empty JSON object and inserts it into the specified field within an existing JSON object. This is typically used as a setup step for nesting further data inside a parent JSON. The newly created object is returned for further use and modification. **not the full original JSON object**.

**Note:** This node does not copy the entire structure forward. It only returns the newly created nested object so you can set data into it directly.

## Inputs

* **JSON Object** – The JSON object to which the new nested object should be added.
* **Field Name** – The name of the field (**as string**) to assign the new empty JSON object to.

## Outputs

* **Success** – Returns true if the empty object was successfully created and inserted. Otherwise false.
* **New Json Object** – The newly created empty object, returned for further editing (**not the full input object**).
  {% endhint %}

***

### Set Json Object Field

<div data-full-width="false"><figure><img src="/files/51cXDYds5QSOccJCiNIC" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set Json Object Field

## Overview

Adds or updates a nested JSON object field inside an existing parent JSON object. This node allows you to insert a fully constructed JSON object into another JSON object under a specified field name. If the field already exists, it will be overwritten with the new object.

Unlike [**Set New JSON Object Field**](#set-new-json-object-field), which creates a blank JSON object, this version accepts a fully built JSON object and appends it into a larger JSON.

### Examples

#### Parent Data

**{**\
&#x20; **"PlayerInfo": {**\
&#x20;   **"Name": "ShadowRogue",**\
&#x20;   **"Level": 12,**\
&#x20;   **"Class": "Assassin",**\
&#x20;   **"XP": 3450,**\
&#x20;   **"IsAlive": true**\
&#x20; **}**\
**}**

#### Data To Insert

**{**\
&#x20; **"PlayerStats": {**\
&#x20;   **"Health": 85,**\
&#x20;   **"Mana": 60,**\
&#x20;   **"Stamina": 40,**\
&#x20;   **"Armor": 25,**\
&#x20;   **"CriticalChance": 0.15**\
&#x20; **}**\
**}**

#### Combined Data

**{**\
&#x20; **"PlayerInfo": {**\
&#x20;   **"Name": "ShadowRogue",**\
&#x20;   **"Level": 12,**\
&#x20;   **"Class": "Assassin",**\
&#x20;   **"XP": 3450,**\
&#x20;   **"IsAlive": true**\
&#x20; **},**\
&#x20; **"PlayerStats": {**\
&#x20;   **"Health": 85,**\
&#x20;   **"Mana": 60,**\
&#x20;   **"Stamina": 40,**\
&#x20;   **"Armor": 25,**\
&#x20;   **"CriticalChance": 0.15**\
&#x20; **}**\
**}**

## Inputs

* **JSON Object** – The parent JSON object you want to modify.
* **Object Data** - The desired data to insert into the parent.
* **Field Name** – The name of the field (**as string**) under which the object should be stored.

## Outputs

* **Success** – Returns true if the nested object was successfully inserted. Otherwise false.
* **New Json Object** – The updated full JSON object, including the newly added or modified field.
  {% endhint %}

***

### Insert Json Object

<div data-full-width="false"><figure><img src="/files/u9IToGEKCuW2rB46XD7E" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Insert Json Object

## Overview

This node merges one JSON object into another by copying all fields from the **Data to Insert** object into the **JSON Object**. If any fields already exist in the target, they will be **overwritten** by values from the incoming object. The result is a single, combined JSON object containing fields from both inputs.

**Note:** This operation does not create a nested structure. All top-level fields from both objects are merged into a flat, unified JSON.

### Examples

#### Parent Data

**{**\
&#x20; **"PlayerInfo": {**\
&#x20;   **"Name": "ShadowRogue",**\
&#x20;   **"Level": 12,**\
&#x20;   **"Class": "Assassin",**\
&#x20;   **"XP": 3450**\
&#x20; **}**\
**}**

#### Data To Insert

**{**\
&#x20; **"PlayerStats": {**\
&#x20;   **"Health": 85,**\
&#x20;   **"Mana": 60,**\
&#x20;   **"Stamina": 40,**\
&#x20;   **"Armor": 25**\
&#x20; **}**\
**}**

#### Combined Data

**{**\
&#x20; **"PlayerInfo": {**\
&#x20;   **"Name": "ShadowRogue",**\
&#x20;   **"Level": 12,**\
&#x20;   **"Class": "Assassin",**\
&#x20;   **"XP": 3450,**\
&#x20;   **"Health": 85,**\
&#x20;   **"Mana": 60,**\
&#x20;   **"Stamina": 40,**\
&#x20;   **"Armor": 25**\
&#x20; **}**\
**}**

## Inputs

* **JSON Object** – The target JSON object that will receive the new fields.
* **Data To Insert** – The second JSON object whose fields will be inserted into the first.

## Outputs

* **Success** – Returns true if the merge was successful. Otherwise false.
* **Combined Json** – The resulting JSON object containing fields from both input objects.
  {% endhint %}

***

### Set Json Bool Field

<div data-full-width="false"><figure><img src="/files/b6RHjMXRIuXgYZNj21b4" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set Json Bool Field

## Overview

Adds or updates a Boolean field in a JSON object. This node sets a key–value pair where the value is a Boolean (**true** or **false**) and outputs a new JSON object containing the updated field.

**Note:** If the specified field already exists, its value will be overwritten. If it does not exist, it will be added.

## Inputs

* **JSON Object** – The input JSON object you want to modify.
* **Field Name** – The name of the field (**as string**) to add or update.
* **Value** - The Boolean value (**true or false**) to assign to the specified field.

## Outputs

* **Success** – Returns true if the field was successfully set in the object. Otherwise false.
* **New Json Object** – The updated JSON object with the Boolean field set.
  {% endhint %}

***

### Set Json Byte Field

<div data-full-width="false"><figure><img src="/files/eHBGoSBSq1oXi1en95yz" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set Json Byte Field

## Overview

Adds or updates a byte value field in a JSON object. This node sets a key–value pair where the value is treated as a byte and outputs a new JSON object containing the updated data.

**Note:** If the specified field already exists, its value will be overwritten. If it does not exist, it will be added.

## Inputs

* **JSON Object** – The input JSON object you want to modify.
* **Field Name** – The name of the field (**as string**) to add or update.
* **Value** - The byte value (**0–255**) to assign to the specified field.

## Outputs

* **Success** – Returns true if the field was successfully set in the object. Otherwise false.
* **New Json Object** – The updated JSON object with the new or modified byte field.
  {% endhint %}

***

### Set Json Number Field

<div data-full-width="false"><figure><img src="/files/lisd9YDxp5LPz1iOt6nA" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set Json Number Field

## Overview

Adds or updates a numeric field (**Float**) in a JSON object. This node sets a key–value pair where the value is a number (**float**), and outputs a new JSON object with the updated content.

**Note:** If the specified field already exists, its value will be overwritten. If it does not exist, it will be added.

## Inputs

* **JSON Object** – The input JSON object you want to modify.
* **Field Name** – The name of the field (**as string**) to add or update.
* **Value** - The numeric value (**float**) to assign to the specified field.

## Outputs

* **Success** – Returns true if the field was successfully set in the object. Otherwise false.
* **New Json Object** – The updated JSON object with the number (**float**) field added or changed.
  {% endhint %}

***

### Set Json String Field

<div data-full-width="false"><figure><img src="/files/sB04UYwn7iHujgaZ80TU" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set Json String Field

## Overview

Adds or updates a string field in a JSON object. This node sets a key–value pair where the value is a string and outputs a new JSON object containing the updated or newly created field.

**Note:** If the specified field already exists, its value will be overwritten. If it does not exist, it will be added.

## Inputs

* **JSON Object** – The input JSON object you want to modify.
* **Field Name** – The name of the field (**as string**) to add or update.
* **Value** - The string value to assign to the specified field.

## Outputs

* **Success** – Returns true if the field was successfully set in the object. Otherwise false.
* **New Json Object** – The updated JSON object with the string field included.
  {% endhint %}

***

### Set Json Array Field

<div data-full-width="false"><figure><img src="/files/6z1n8hkPpMP0XRAyhCr8" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set Json Array Field

## Overview

JSON functionality used to add or update an array field in a JSON object. This node sets a field to hold a JSON array, which can contain values of any type (**Numbers, strings, objects, or nested arrays**), and ensures it is properly formatted for serialization.

## Inputs

* **JSON Object** – The JSON object you want to modify.
* **Field Name** – The name of the field (**as string**) to assign the array to.
* **Root Level JSON** – If **true**, all array entries are placed together into a single object where each entry shares the **same structure** (i.e. same fields, with different values). If **false**, each array entry is placed into its **own individual JSON object**, typically with only one field per object.
* **Array Data** – The array of values to insert into the JSON object.

### Examples

**Root Level JSON = false**

**{**\
&#x20;    **"Inventory": \[**\
&#x20;   **{**\
&#x20;     **"Name": "Health Potion"**\
&#x20;   **},**\
&#x20;   **{**\
&#x20;    **"Type": "Weapon"**\
&#x20;   **},**\
&#x20;   **{**\
&#x20;    **"Effect": "Fireball"**\
&#x20;   **}**\
&#x20;  **]**\
**}**

**Root Level JSON = true**

**\[**\
&#x20;  **{**\
&#x20;   **"Name": "Health Potion",**\
&#x20;   **"Type": "Consumable",**\
&#x20;   **"Effect": "Restore 50 HP"**\
&#x20;  **},**\
&#x20;  **{**\
&#x20;   **"Name": "Iron Sword",**\
&#x20;   **"Type": "Weapon",**\
&#x20;   **"Effect": "Ice walking"**\
&#x20;  **},**\
&#x20;  **{**\
&#x20;   **"Name": "Magic Scroll",**\
&#x20;   **"Type": "Spell",**\
&#x20;   **"Effect": "Fireball"**\
&#x20;  **}**\
**]**

## Outputs

* **Success** – Returns true if the array was successfully added or updated in the JSON object. Otherwise, returns false.
* **Out Array Data** – The JSON array that was written to the specified field or to the root, depending on the configuration.
  {% endhint %}


# JSON PURE

## JSON PURE

### Try Get Json Length

<div data-full-width="false"><figure><img src="/files/XyqEJ5H4A8ZC1ggS2cwL" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Try Get Json Length

## Overview

Attempts to determine the number of key-value pairs inside a given JSON object. This is a pure function that inspects the structure and returns how many fields are present at the top level of the object. Commonly used when iterating through dynamic or unknown JSON data lengths and a length is required.

## Inputs

* **JSON Object** – The JSON object whose length (**number of fields**) you want to retrieve.

## Outputs

* **Length** – An integer representing the number of fields (**keys**) in the provided JSON object.
  {% endhint %}

***

### Try Get Json Value

<div data-full-width="false"><figure><img src="/files/IjJ5JQAoh9GlCdw3nwbW" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set Json Object Field

## Overview

This node is a universal “[**Try Get**](/websocket-pro/documentation/json-get)” function that combines the functionality of all individual JSON “[**Try Get**](/websocket-pro/documentation/json-get)”  nodes into one pure function. It dynamically determines the type of value to retrieve based on the variable type connected to the **Out Data** output pin. This allows developers to fetch Booleans, strings, numbers, objects and more using one flexible node.

**Note**: The wildcard pin must be set before execution. The node will search for the field based on the data type connected to **Out Data**.

## Inputs

* **JSON Object** – The JSON object to search within.
* **Field Name** - The name of the field (**as string**) to find and retrieve the data of.

## Outputs

* **Out Data (Wildcard)** – The resulting value found from the JSON object.
  {% endhint %}

***

### Try Get First Json Field Value

<div data-full-width="false"><figure><img src="/files/Ll0b6p08MPba6ewpEbUP" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Try Get First Json Field Value

## Overview

This node retrieves the value of the first field found in a JSON object. The type of the value to be retrieved is determined by the variable connected to the **Out Data** pin (**Wildcard**). This is useful when you want to inspect or access the first entry of a JSON structure without knowing the field data type.

## Inputs

* **JSON Object** – The JSON object from which the first value will be retrieved.

## Outputs

* **Out Data** – The value of the first found field.
  {% endhint %}

***

### New Json Object From String

<div data-full-width="false"><figure><img src="/files/HNDD6MHcfOhbI5F225cT" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### New Json Object From String

## Overview

This node creates a local JSON object from a string without needing a execution pin. It is a pure function and is often used when working with inline JSON or when importing data from a string format. The provided string must be valid JSON syntax.

**Note:** If you want to quickly debug JSON data or dynamically parse a string into a JSON object, this is a useful node. However, since it is a pure function, the resulting data exists only for the current frame. Be sure to store or process the output immediately, as the data will be lost on the next engine frame.

## Inputs

* **In Json String** – A text string containing valid JSON data to be parsed.

## Outputs

* **Out Value** – A JSON object generated from the input string. If the string is invalid, the object may be empty.
  {% endhint %}

***

### New Pure Json Object

<div data-full-width="false"><figure><img src="/files/En98s42De1Jb3JyYqfSS" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### New Pure Json Object

## Overview

Creates a new, empty JSON object using a pure function. Since this node does not trigger the execution flow, it is ideal for temporary JSON creation in pure logic chains such as function graphs or value assignments.

**Note:** Because it is a pure function, the generated JSON object exists only during the current frame. Be sure to immediately cache or assign the output, or the data will be lost.

## Outputs

* **JSON Object** – A new, empty JSON object that can be modified or passed into other JSON-related nodes.
  {% endhint %}

***

### Make Named Object Json Data

<div data-full-width="false"><figure><img src="/files/8bPjRBF8Nj3qrJu2w1Wl" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Make Named Object Json Data

## Overview

This pure function accepts two arrays as input. The first is an array of strings, where each string represents a key that will be used to construct a JSON object. The second is a wildcard array that provides the values to be assigned to each of these keys.

It is important to note that the number of keys must match the number of values exactly. You cannot provide more keys than values or more values than keys. This mismatch is not supported and will result in an error.

An example of the output generated by this function can be found below.

### Example

#### Parent Data

**{**\
&#x20;  **"Username": "UForge",**\
&#x20;  **"Password": "UForge123",**\
&#x20;  **"Address": "UForge road",**\
&#x20;  **"Class": "Mage"**\
**}**

## Inputs

* **Field Names Array** – An array of string values that represent the keys for the resulting JSON object.
* **In Array** – A wildcard array input. This node accepts any data type supported by Unreal Engine. It loops over each value and assigns it to the corresponding key from the **Field Names Array**, building valid key-value pairs.

## Outputs

* **Out Data** – JSON object that holds the new constructed JSON data.
  {% endhint %}

***

### Set JSON Field

<div data-full-width="false"><figure><img src="/files/4T7c3DzJKdUkkr4nhlUo" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set JSON Field

## Overview

A pure node that allows you to set data into your desired JSON object. The input supports any data type recognized by Unreal Engine, as it uses a wildcard input. This node essentially functions as a universal "[**Set Node**](/websocket-pro/documentation/json-set)," combining the behaviour of all individual set nodes into one.

## Inputs

* **JSON Object** – The JSON object where you want to set a new JSON value.
* **Field Name** – The name of the field you are creating.
* **In Data (Wildcard)** – The data you want to set. This is a wildcard input pin, so it supports any valid data type recognized by Unreal Engine.

## Outputs

* **Out Data** – The new JSON object that contains the newly created JSON field.
  {% endhint %}

***

### Value Only JSON Array

<div data-full-width="false"><figure><img src="/files/GgI17WFjgs5xcWvOrNfP" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Value Only JSON Array

## Overview

A pure JSON node that allows you to create a JSON array containing only values, with no keys assigned to individual elements. The output structure looks like this: **{"words": \["AB", "BC", "CD", "DE", "EF"]}**. To use this node, simply provide a field name and an array containing your data.

## Inputs

* **Field Name** – The name of the JSON array you wish to create.
* **In Array (Wildcard)** – A wildcard input pin that accepts any data type supported by Unreal Engine. This is the array of data you want to include in the value-only JSON array.

## Outputs

* **Out Data** – The new JSON object that contains the value-only JSON array.
  {% endhint %}


# JSON Utility

## JSON Utility

### Create New Json File

<div data-full-width="false"><figure><img src="/files/gxztFHr8LlAQZ0KidYOI" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Create New Json File

## Overview

Creates a new, empty JSON object for use in further JSON operations. This node is typically the starting point when building a new JSON structure from scratch. Once created, fields can be added using the various [**Set JSON Field nodes**](/websocket-pro/documentation/json-set)**.**

## Inputs

**None.**

## Outputs

* **Success** – Returns true if the JSON object was successfully created.
* **Json Object** – The newly created empty JSON object, ready for data to be added.
  {% endhint %}

***

### Convert Json To String

<div data-full-width="false"><figure><img src="/files/2JbXXejAwpEyJSemVmtv" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Convert Json To String

## Overview

Converts a JSON object into a string format for storage, string manipulation or display. This node serializes the given JSON object into a text-based JSON string. Optionally, you can enable **Pretty Print** to format the output with indentation and line breaks for easier readability.

## Inputs

* **JSON Object** – The JSON object you want to convert into a string.
* **Pretty Print** – If checked, the output string will be human-readable with line breaks and indentation. If unchecked, the result will be compact.

## Outputs

* **Success** – Returns true if the JSON object was successfully converted to a string. Otherwise returns false.
* **JSON String** – The serialized string representation of the input JSON object.
  {% endhint %}

***

### String To Json Object

<div data-full-width="false"><figure><img src="/files/ZwVVjGN1TuFhrmIC4IM4" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### String To Json Object

## Overview

Parses a JSON-formatted string and converts it into a usable JSON object. This node is typically used to deserialize data that was loaded from a file, received from a server, for quick debugging and testing.

**Note:** The input string must be a valid JSON. If the format is incorrect or malformed, the conversion will fail and return an empty or null object.

## Inputs

* **Raw String Data** – A string containing valid JSON text that you want to parse into a JSON object.

## Outputs

* **Success** – Returns true if the string was successfully parsed into a JSON object. Otherwise, returns false.
* Loaded Json Object - The resulting JSON object that can be used with other JSON nodes.
  {% endhint %}

***

### Remove Json Field

<div data-full-width="false"><figure><img src="/files/f2hp6Kbj29nBu4pOj4Ve" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Remove Json Field

## Overview

Removes a specific field (**key–value pair**) from a given JSON object. This node returns a new JSON object identical to the input, except without the specified field. This is useful for cleaning structures before saving, serializing, or sending.

**Note:** If the specified field does not exist, the original object is returned unchanged, and **Success** is set to false.

## Inputs

* **JSON Object** – The input JSON object from which you want to remove a field.
* **Field Name** – The name of the field (**as string**) to remove from the JSON object.

## Outputs

* **Success** – Returns true if the field was found and successfully removed. Otherwise, returns false.
* **New Json Object** - A copy of the input JSON object with the specified field removed (**if found**).
  {% endhint %}

***

### Has Field

<div data-full-width="false"><figure><img src="/files/lNvYPcLyk9gl8k4T1XJK" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}
Has Field

## Overview

Checks whether a specified field (**key**) exists within a given JSON object. This node is useful for verifying the presence of data before attempting to retrieve or operate on a specific field, helping prevent errors and ensure safer parsing.

**Note:** This node only checks the top-level of the provided JSON object. It does not search nested objects.

## Inputs

* **JSON Object** – The JSON object in which you want to search for a field.
* **Field to Find** – The name of the field (**as string**) to check for existence.

## Outputs

* **Success** – Returns true if the specified field exists in the JSON object. Otherwise, returns false.
  {% endhint %}


# HTTP

## Utility

### ASYNC Has Internet Check

<div data-full-width="false"><figure><img src="/files/Mo1GzkQEeBjdL8AANwDJ" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### ASYNC Has Internet Check

## Overview

This utility checks whether the user's system is currently connected to the internet. It does this by performing a lightweight HTTP request to [**https://www.google.com**](https://www.google.com/). If the request is successful, the node returns **true** otherwise, it returns **false**.

## Inputs

**None.**

## Outputs

* **Success** – Executes If the user has a valid internet connection.
* **False** – Executes If the user does not have a valid internet connection.
* **Has Internet** – A Boolean output: **true** if the system is online, **false** otherwise.
  {% endhint %}


# Websockets

## Websocket's

### Create New WebSocket Request

<div data-full-width="false"><figure><img src="/files/iWleEyEdzxU2vghhRsqv" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Create New WebSocket Request

## Overview

Creates a new **WebSocket request** object that can be configured and used to establish a connection with a WebSocket server. This node is typically used as the starting point for initiating WebSocket-based communication in your application.

The output is a **WebSocketProxy** object that allows further configuration before connecting to the server.

## Inputs

* **URL** – The WebSocket server URL to which the connection will be made. This node will only work with URLs such as: **wss\://example.com/socket**
* [**WebSocket Settings**](/websocket-pro/documentation/structs#make-web-socket-settings) – Optional settings structure to define headers and protocols.

## Outputs

* **Success** – Returns true if the WebSocket request was created successfully. Otherwise false.
* **Out Websocket Request** – The request object to be used for further setup or initiating the connection.
  {% endhint %}

***

### Connect To WebSocket

<div data-full-width="false"><figure><img src="/files/gzt5ykPflJVdE7q7Hmt3" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Connect To WebSocket&#x20;

## Overview

Initiates a connection to a **WebSocket** server using the provided **WebSocket** request object "**WebSocket Proxy**". This node attempts to open the connection defined in the request. If successful, the socket can be used to send and receive **real-time** data.

This should be called after the request has been fully configured (**URL, headers, delegate binds etc...**).

## Inputs

* **Target** – The WebSocket request object used to establish the connection. Must be of type **WebSocket Proxy**.

## Outputs

* **Success** – Returns **true** if the connection to the **WebSocket server** was successfully established. Otherwise **false**.
  {% endhint %}

***

### Close WebSocket Connection

<div data-full-width="false"><figure><img src="/files/6tkxH3cBTejl1PtOm2b1" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Close WebSocket Connection

## Overview

Closes an **active WebSocket connection**. You can specify a closure code and an optional reason to explain the disconnection. This node should be used when the connection is no longer needed or to gracefully shut down the session.

Common use cases include clean-up on exit, handling network errors, or controlled shutdowns from the client side.

Note: A useful website that provides most of the common **WebSocket** closure codes along with a description of each: <https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent/code>

## Inputs

* **Target** – The **WebSocket Proxy** object representing the active connection you want to close.
* **Code** – Optional WebSocket close code.
* **Reason** – Optional string reason for the closure, which can be used for logging or diagnostics.

## Outputs

* **Success** – Returns true if the connection was successfully closed. Otherwise false.
  {% endhint %}

***

### Send Binary Data

<div data-full-width="false"><figure><img src="/files/SpHqP4DcSIRrchDNFcZI" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Send Binary Data

## Overview

Sends **binary** data through an established **WebSocket** connection. This is used for transferring non-text payloads such as files or encoded assets to the server.

This node is part of the **WebSocket** communication system and should only be used after a **successful** connection is made.

**Note**: We recommend using a node [**Is Websocket Connected**](#is-websocket-connected) to first check if a valid connection is established between the client and the server.

## Inputs

* **Target** – The **WebSocket Proxy** object representing the active connection you want to use for binary data sending.
* **Binary Data** – The binary payload to send.

## Outputs

* **Success** – Returns true if the data was successfully sent to the server, otherwise false.
  {% endhint %}

***

### Send String Data

<div data-full-width="false"><figure><img src="/files/1QLOImgr61J80cjipgkq" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Send String Data

## Overview

Sends a **text-based** message to the connected **WebSocket server**. This is used for sending **JSON** data to the WebSocket connection.&#x20;

This node should only be called after a successful connection has been established.

**Note**: Recommended node to check connection is [**Is Websocket Connected**](#is-websocket-connected) to first check if a valid connection is established between the client and the server.

## Inputs

* **Target** – The **WebSocket Proxy** object representing the active connection you want to use for string data sending.
* **Data** – The Json object that contains the data you wish to send to the server.

## Outputs

* **Success** – Returns true if the message was successfully sent to the server, otherwise false.
  {% endhint %}

***

### Set New Websocket Headers

<div data-full-width="false"><figure><img src="/files/Bx3DDbxL8gNyU1BiKIsH" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set New WebSocket Headers

## Overview

Replaces the current WebSocket headers with a new set of headers. This is typically used to configure authentication tokens, custom identifiers, or other metadata **before** initiating a **WebSocket** connection.

This must be called **before** attempting to connect to the server.

**Note**: Recommended node to check connection is [**Is Websocket Connected**](#is-websocket-connected) to first check if a valid connection is established between the client and the server.

## Inputs

* **Target** – The **WebSocket Proxy** instance to apply the new headers to.
* **Headers** – A map of key–value pairs (**as strings**) representing the new headers to use in the **WebSocket**.

## Outputs

**None.**
{% endhint %}

***

### Add New WebSocket Header

<div data-full-width="false"><figure><img src="/files/kc9LeFHgPNQbiFyv538I" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Add New WebSocket Header

## Overview

Appends new header entries to the existing **WebSocket header list** without replacing previously defined headers. This is useful when you want to add custom metadata or authentication fields incrementally before initiating a connection.

This node is additive. it does **not** overwrite the current header set.

**Note**: Recommended node to check connection is [**Is Websocket Connected**](#is-websocket-connected) to first check if a valid connection is established between the client and the server.

## Inputs

* **Target** – The **WebSocket Proxy** instance to append the new header to.
* **Headers** – A map of key–value pairs (**as strings**) representing the headers you want to add.

## Outputs

* **Success** – Returns **true** if the headers were successfully added. Otherwise **false**.
  {% endhint %}

***

### Remove WebSocket Header

<div data-full-width="false"><figure><img src="/files/RGL1uq1ehvGkyfg1bPqX" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Remove WebSocket Header

## Overview

Removes one header from the current **WebSocket configuration** using the specified **key**. This is useful for dynamically cleaning up or adjusting headers before attempting a connection. If the key exists in the current header map, all associated entries will be deleted.

**Note**: Recommended node to check connection is [**Is Websocket Connected**](#is-websocket-connected) to first check if a valid connection is established between the client and the server.

## Inputs

* **Target** – The **WebSocket Proxy** instance to remove a header from.
* **Header Key** – A string key identifying the header to remove. This key must match exactly a key in the already existing headers. Otherwise the node does nothing.

## Outputs

None.
{% endhint %}

***

### Set New WebSocket Protocols

<div data-full-width="false"><figure><img src="/files/yUVkHzrBtmPqkwxzvAvN" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set New WebSocket Protocols

## Overview

Replaces the current array of protocols in the **WebSocket Proxy** instance with the new array of provided protocols. This configuration must be set before initiating the connection.

**Note**: Recommended node to check connection is [**Is Websocket Connected**](#is-websocket-connected) to first check if a valid connection is established between the client and the server.

## Inputs

* **Target** – The **WebSocket Proxy** instance to override the protocols for.
* **Protocols** – An array of **string** values representing the new protocols to include in the **WebSocket** handshake.

## Outputs

None.
{% endhint %}

***

### Add New WebSocket Protocol

<div data-full-width="false"><figure><img src="/files/4WQ58JowLhUyHKW9dsbh" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

#### Add New WebSocket Protocol

## Overview

Adds a new **protocol** to the list of existing **WebSocket protocols**. WebSocket protocols help define the subprotocol to use during the connection handshake. This node can be used to append one protocol name dynamically before initiating the connection.

**Note:** Protocols should be added before calling the [**Connect to WebSocket** node](#connect-to-websocket). Changing protocols after connection has no effect.

## Inputs

* **Target** – The **WebSocket Proxy** instance to add a new protocol too.
* **Protocols** – An array of protocol **strings** to add. Each entry defines a new protocol to support in the WebSocket handshake.

## Outputs

* **Success** – Returns **true** if the protocols were successfully added to the proxy. Otherwise **false**.
  {% endhint %}

***

### Remove WebSocket Protocol

<div data-full-width="false"><figure><img src="/files/i0Mhr410hgSXyrqWXMkr" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Remove WebSocket Protocol

## Overview

Removes all instances of a specific protocol from the WebSocket protocol list. This is useful for dynamically cleaning or updating the list of supported subprotocols before initiating the **WebSocket connection.**

**Note:** Protocols should be added before calling the [**Connect to WebSocket** node](#connect-to-websocket). Changing protocols after connection has no effect.

## Inputs

* **Target** – The **WebSocket Proxy** instance to remove all instances of a protocol.
* **Protocol to Remove** – The name of the protocol (**as a string**) that should be removed from the array.

## Outputs

None.
{% endhint %}

***

### Set New WebSocket URL

<div data-full-width="false"><figure><img src="/files/ioWfm9zzvOQqvaTaIqIO" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set New WebSocket URL

## Overview

Replaces the current **WebSocket** connection **URL** with a new one. This node is typically used when you want to reconfigure or repoint a **WebSocket** request to a different server before attempting a connection.

**Note:** Protocols should be added before calling the [**Connect to WebSocket** node](#connect-to-websocket). Changing URL after connection has no effect.

## Inputs

* **Target** – The **WebSocket Proxy** instance of witch the URL is being modified.
* **New URL** – The new WebSocket URL (**as string**) to assign. Must follow valid WebSocket formats like **ws\://** or **wss\://**.

## Outputs

**None.**
{% endhint %}

***

### Set New Text Memory Limit

<div data-full-width="false"><figure><img src="/files/jlDud7gsipqCp9cJMySp" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Set New Text Memory Limit

## Overview

Adjusts the maximum **UTF-8** text memory limit that can be received from the connected server on this socket. This is useful when handling larger payloads or expanding the allowed message size during WebSocket communication.

**Note:** If not modified, the limit defaults to **1 MB**. Changing this value after the connection is established has no effect.

## Inputs

* **Target** – The **WebSocket Proxy** instance of witch the Text Memory Limit is being modified.
* **Size** – The new buffer size of the memory limit you wish to recieve from a given server on the current socket.

## Outputs

**Success** – Returns **true** if the text memory limit has been changed. Otherwise **false**.
{% endhint %}

***

## WebSocket's Pure

### Is WebSocket Connected

<div data-full-width="false"><figure><img src="/files/ZFUBCIdR2F3fGu3c0zHY" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Is WebSocket Connected

## Overview

Checks whether the **WebSocket** is currently connected to a server. This is a simple status-check node that returns a Boolean result, allowing you to verify the active state of the WebSocket connection before attempting further operations like sending or receiving data.

## Inputs

* **Target** – The **WebSocket Proxy** instance you wish to check if its currently connected to a server.

## Outputs

* **Is Connected** – Returns **true** if the **WebSocket** is actively connected to a server, **false** otherwise.
  {% endhint %}

***

## WebSocket's Delegates

### Delegate On Connected

<div data-full-width="false"><figure><img src="/files/ijsjTzjXQheAwFjChltr" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### WebSocket On Connected

## Overview

Binds a custom event to the **OnConnected** delegate of a **WebSocket Proxy** instance. This event is triggered when the WebSocket connection is successfully established with the server.<br>

This delegate should be bound before calling the [**Connect To WebSocket**](#connect-to-websocket) function, or the event may not fire correctly.

## Inputs

* **Target** – The **WebSocket Proxy** instance you wish to bind the event from.

## Outputs

**None.**
{% endhint %}

***

### Delegate On Closed

<div data-full-width="false"><figure><img src="/files/ibKhAvQc3m4949AHVkOv" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### WebSocket On Closed

## Overview

Binds a custom event to the **OnClosed** delegate of a **WebSocket Proxy** instance. This event is triggered when the WebSocket connection is closed, either by the client or the server.

The bound event provides details about the closure, including status code, reason, and whether the connection was cleanly closed.

This delegate should be bound before calling the [**Connect To WebSocket**](#connect-to-websocket) function, or the event may not fire correctly.

## Inputs

* **Target** – The **WebSocket Proxy** instance you wish to bind the event from.

## Outputs

* **Status Code** – The WebSocket close code that describes why the connection was terminated.
* **Reason** – A human-readable reason **string**, why the connection was closed. Provided by the remote server. Parsed into a JSON object.
* **Was Clean** – A **Boolean** indicating whether the connection was closed cleanly (**true**) or abruptly (**false**).
  {% endhint %}

***

### Delegate Binary Data Sent

<div data-full-width="false"><figure><img src="/files/x382rPO8HanBzJHMDkkn" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### WebSocket Binary Data Sent

## Overview

Binds a custom event to the **Binary Data Sent** delegate of a **WebSocket Proxy** instance. This event is triggered whenever binary data is successfully sent through the **WebSocket** connection.

The bound event provides access to the exact binary payload, the size of the data sent, and the remaining bytes queued for transmission (**if any**). Use this to track upload status or perform post-send actions.

This delegate should be bound before calling the [**Connect To WebSocket**](#connect-to-websocket) function, or the event may not fire correctly.

## Inputs

* **Target** – The **WebSocket Proxy** instance you wish to bind the event from.

## Outputs

* **Binary Data** – The actual binary payload that was sent.
* **Binary Size** – The size (**in bytes**) of the sent binary data.
* **Bytes Remaining** – The number of bytes still pending transmission (**useful for chunked or large data sends**).
  {% endhint %}

***

### Delegate On Text Sent  (As Json)

<div data-full-width="false"><figure><img src="/files/i4tgGdeaBGQW7OFlDFRo" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### On Text Sent (As Json)

## Overview

Binds a custom event to the **On Text Sent** delegate of a **WebSocket Proxy** instance. This event is triggered whenever a **string**-based message is successfully sent over the **WebSocket** connection.

Use this to confirm message delivery or track/log text data that was sent. The event provides the full text payload sent to the server.

This delegate should be bound before calling the [**Connect To WebSocket**](#connect-to-websocket) function, or the event may not fire correctly.

## Inputs

* **Target** – The **WebSocket Proxy** instance you wish to bind the event from.

## Outputs

* **Data Sent** – The full string as a Json object that was sent to the WebSocket server.
  {% endhint %}

***

### Delegate Binary Data Received

<div data-full-width="false"><figure><img src="/files/WsrgK5FsePZiN4IMpqbO" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### WebSocket Binary Data Received

## Overview

Binds a custom event to the **Binary Data Received** delegate of a **WebSocket Proxy** instance. This event is triggered whenever binary data is received from the **WebSocket server**.

Use this to handle **incoming binary payloads**, such as **files**, b**yte-encoded objects**, or **custom binary protocols**. If the message is received in parts (**fragments**), the final fragment will be marked accordingly.

This delegate should be bound before calling the [**Connect To WebSocket**](#connect-to-websocket) function, or the event may not fire correctly.

## Inputs

* **Target** – The **WebSocket Proxy** instance you wish to bind the event from.

## Outputs

* **Binary Data** – The raw byte array received from the server.
* **Binary Size** – The total size (**in bytes**) of the received data.
* **Is Last Fragment** – Boolean indicating whether this chunk is the final part of a fragmented message.
  {% endhint %}

***

### Delegate On Message Received

<div data-full-width="false"><figure><img src="/files/xsCmliC3rknFf1W2oFTL" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### WebSocket On Message Received

## Overview

Binds a custom event to the **On Message Received** delegate of a **WebSocket Proxy** instance. This event is triggered when a complete **UTF-8** text message is received from the **WebSocket server,** and is automatically parsed into a valid JSON object for further JSON manipulation.

This is useful for applications that communicate using JSON, plain text, or other string-based protocols over WebSocket.

This delegate should be bound before calling the [**Connect To WebSocket**](#connect-to-websocket) function, or the event may not fire correctly.

## Inputs

* **Target** – The **WebSocket Proxy** instance you wish to bind the event from.

## Outputs

* **Message Received** – A JSON object containing the full content of the received text message.
  {% endhint %}

***

### Delegate On Connection Error

<div data-full-width="false"><figure><img src="/files/Z86fC7jVL2JFfwU4O3i9" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### WebSocket On Connection Error

## Overview

Binds a custom event to the **On Connection Error** delegate of a **WebSocket Proxy** instance. This event is triggered if the **WebSocket** fails to connect to the server due to issues like an invalid URL, network failure, timeout, or server-side rejection. Use this node to catch and handle connection problems.

This delegate should be bound before calling the [**Connect To WebSocket**](#connect-to-websocket) function, or the event may not fire correctly.

## Inputs

* **Target** – The **WebSocket Proxy** instance you wish to bind the event from.

## Outputs

* **Error** – Automatically parsed string into a **JSON** object describing the cause of the connection failure.
  {% endhint %}


# Structs

## Structs

### Make WebSocket File Data

<div data-full-width="false"><figure><img src="/files/8skfa2HmAgZDo5gdSSCc" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### WebSocket File Data

## Overview

Creates a struct reference to a file using a directory path and file name. This struct is used across various systems for handling file-based operations such as loading or saving files. It serves as a general-purpose file descriptor, simplifying access to files on the user's machine.

## Inputs

* **File Directory** – The full system path to the folder containing the file.
* **File Name** – The name of the file, including its extension (e.g., **example.json**, **output.txt**).

## Outputs

* **WebSocket File Data** – A unified struct representing the target file. It can be used in nodes related to reading, writing, uploading, or processing both JSON and binary file types. This is the core struct used for file-based operations in this plugin.
  {% endhint %}

***

### Make Web Socket Settings

<div data-full-width="false"><figure><img src="/files/bQcqhcG92fYxK4gEJI7Q" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}

### Web Socket Settings

## Overview

Creates a WebSocket settings struct that defines optional subprotocols and HTTP-like headers used during the initial WebSocket handshake. This struct is typically used when initiating a connection to a WebSocket server.

Use this node to customize the connection behaviour, especially when connecting to servers that require specific headers or support particular subprotocols.

## Inputs

* **Protocols** – An array of strings representing WebSocket subprotocols. These are sent during the connection request and help the server determine how to interpret communication.
* **Headers** – A map of key-value string pairs to include as HTTP-style headers during the WebSocket handshake. Useful for passing authentication tokens, custom metadata, or client info.

## Outputs

* **WebSocket Settings** – A unified struct containing the protocols and headers to use when establishing a WebSocket connection. This is passed into [Create New WebSocket Request](/websocket-pro/documentation/websockets#create-new-websocket-request) nodes to configure the initial handshake.
  {% endhint %}


