A powerful, Laravel-inspired HTTP request plugin for Unreal Engine 5.6+ that simplifies HTTP communication with elegant Blueprint integration and advanced debugging capabilities.
- π Laravel-Inspired API: Clean, intuitive interface for HTTP requests
- π Multiple HTTP Methods: GET, POST, PUT, DELETE, PATCH support
- π§ Flexible Headers: Enum-based common headers + custom headers
- π Content Type Support: JSON, XML, Form-encoded, and more
- π Advanced Debugging: 3-level debug system with file logging
- β‘ Quick Methods: Simplified functions for common operations
- π Smart JSON Decoding: Nested JSON parsing with multiple output types
- π Rich Response Data: Status codes, timing, headers, and more
Drag the plugin files to the Plugins folder in your main project directory.
Delete the Binaries and Intermediate folders from your project directory.
Open your Unreal Engine project. The plugin will automatically be compiled and integrated.
// In Blueprints: Use "Quick Get" node
QuickGet("https://api.example.com/users", ResponseCallback);// In Blueprints: Use "Quick Post" node
FString JsonBody = TEXT("{\"name\":\"John\",\"email\":\"john@example.com\"}");
QuickPost("https://api.example.com/users", JsonBody, ResponseCallback);// Create headers array
TArray<FHttpHeaderEnumValue> Headers;
Headers.Add(MakeBearerToken("your-auth-token"));
Headers.Add(MakeApiKey("your-api-key"));
// Create body data
TArray<FHttpKeyValue> Body;
Body.Add(MakeKeyValue("name", "John Doe"));
Body.Add(MakeKeyValue("email", "john@example.com"));
// Configure options
FHttpOptions Options;
Options.DebugLevel = EDebugLevel::Detailed;
Options.ContentType = EContentType::ApplicationJson;
Options.TimeoutSeconds = 30;
// Send request
SendHttpRequest(
"https://api.example.com/users",
EHttpMethod::POST,
Headers,
{}, // Custom headers
{}, // Query params
Body,
ResponseCallback,
Options
);| Method | Blueprint Node | Description |
|---|---|---|
GET |
Send Http Request | Retrieve data |
POST |
Send Http Request | Create new resource |
PUT |
Send Http Request | Update entire resource |
PATCH |
Send Http Request | Partial update |
DELETE |
Send Http Request | Delete resource |
Authorization- For Bearer tokens, API keysContent-Type- Automatic based on optionsAccept- What content types you acceptUser-Agent- Identify your applicationX-API-Key- API key authenticationX-Auth-Token- Custom auth tokens- And many more...
// Bearer token
FHttpHeaderEnumValue authHeader = MakeBearerToken("your-token");
// API Key
FHttpHeaderEnumValue apiHeader = MakeApiKey("your-api-key");
// Content Type
FHttpHeaderEnumValue contentHeader = MakeContentTypeHeader(EContentType::ApplicationJson);The DecodeJson function provides powerful JSON parsing with multiple output types:
EJsonDecodeResult Result;
FString Value;
TArray<FHttpKeyValue> ObjectFields;
TArray<FString> ArrayValues;
DecodeJson(JsonString, "user.name", Result, Value, ObjectFields, ArrayValues);Failed- JSON parsing failedValue- Single value extracted (string, number, boolean)ObjectFields- Object decomposed into key-value pairsArrayValues- Array elements as strings
// Get root object fields
DecodeJson(JsonString, "", Result, Value, ObjectFields, ArrayValues);
// Get nested value
DecodeJson(JsonString, "user.profile.name", Result, Value, ObjectFields, ArrayValues);
// Get array
DecodeJson(JsonString, "users", Result, Value, ObjectFields, ArrayValues);Options.DebugLevel = EDebugLevel::None;Options.DebugLevel = EDebugLevel::Basic;
// Output: π HTTP POST: https://api.example.com/users | Status: 200 OK | Duration: 0.45sOptions.DebugLevel = EDebugLevel::Detailed;
// Creates organized log files in ProjectSaved/MasterHttpDebug/Options.DebugLevel = EDebugLevel::Verbose;
// Includes full response headers and body contentFiles are saved to: YourProject/Saved/MasterHttpDebug/
Filename format: STATUS_URL_METHOD_TIMESTAMP_STATUSCODE.txt
Example: SUCCESS_api_example_com_users_POST_2025-08-22_14-30-15_200.txt
The response object contains rich information:
struct FHttpResponseSimple
{
bool bSuccess; // Request succeeded
FString Data; // Response body
int32 StatusCode; // HTTP status code (200, 404, etc.)
FString StatusText; // Human-readable status
FString ErrorMessage; // Error description if failed
TArray<FHttpKeyValue> Headers; // Response headers
float RequestDurationSeconds; // How long the request took
int32 ContentLength; // Response size in bytes
FString ContentType; // Response content type
FString URL; // Final URL (after redirects)
};| Enum Value | Content-Type Header |
|---|---|
ApplicationJson |
application/json |
ApplicationXml |
application/xml |
ApplicationFormEncoded |
application/x-www-form-urlencoded |
MultipartFormData |
multipart/form-data |
TextPlain |
text/plain |
TextHtml |
text/html |
TextXml |
text/xml |
Custom |
Your custom type |
Functions are organized in Blueprint categories for easy access:
- HTTP Request - Main SendHttpRequest function
- HTTP Request | Quick Methods - QuickGet, QuickPost
- HTTP Request | Helpers - Helper functions and utilities
- Development:
DetailedorVerbose - Production:
NoneorBasic
// Check if request succeeded
if (Response.bSuccess && IsSuccessStatusCode(Response.StatusCode))
{
// Process successful response
DecodeJson(Response.Data, "data", Result, Value, ObjectFields, ArrayValues);
}
else
{
// Handle error
UE_LOG(LogTemp, Error, TEXT("HTTP Error: %s"), *Response.ErrorMessage);
}// Instead of manual header creation
FHttpHeaderEnumValue Header;
Header.Key = EHttpHeaderKey::Authorization;
Header.Value = "Bearer " + Token;
// Use helper
FHttpHeaderEnumValue Header = MakeBearerToken(Token);FHttpOptions Options;
Options.TimeoutSeconds = 30; // Default
Options.TimeoutSeconds = 60; // For slow APIs
Options.TimeoutSeconds = 10; // For fast APIs| Code | Meaning | Description |
|---|---|---|
| 200 | OK | Request successful |
| 201 | Created | Resource created successfully |
| 400 | Bad Request | Invalid request format |
| 401 | Unauthorized | Authentication required |
| 403 | Forbidden | Access denied |
| 404 | Not Found | Resource doesn't exist |
| 429 | Too Many Requests | Rate limited |
| 500 | Internal Server Error | Server error |
Use IsSuccessStatusCode(StatusCode) to check if a status code indicates success (2xx range).
- Copy plugin files to your project's
Pluginsfolder - Delete
BinariesandIntermediatefolders - Open your project - plugin will auto-compile
Navigate to: C:\Program Files\Epic Games\UE_5.6\Engine\Build\BatchFiles
.\RunUAT.bat BuildPlugin -plugin="Path\To\Your\MasterHttpRequest.uplugin" -package="Output\Path" -TargetPlatforms=Win64Replace paths with your specific locations.
// Step 1: Login
TArray<FHttpKeyValue> LoginBody;
LoginBody.Add(MakeKeyValue("username", "user@example.com"));
LoginBody.Add(MakeKeyValue("password", "password123"));
QuickPost("https://api.example.com/auth/login", LoginBody, LoginCallback);
// Step 2: Use token in subsequent requests
FHttpHeaderEnumValue AuthHeader = MakeBearerToken(ReceivedToken);
TArray<FHttpHeaderEnumValue> Headers;
Headers.Add(AuthHeader);
SendHttpRequest("https://api.example.com/protected-endpoint", EHttpMethod::GET, Headers, {}, {}, {}, DataCallback, Options);FHttpOptions Options;
Options.ContentType = EContentType::MultipartFormData;
TArray<FHttpKeyValue> FormData;
FormData.Add(MakeKeyValue("file_name", "document.pdf"));
FormData.Add(MakeKeyValue("file_data", Base64EncodedData));
SendHttpRequest("https://api.example.com/upload", EHttpMethod::POST, {}, {}, {}, FormData, UploadCallback, Options);- Plugin not compiling: Ensure you're using UE 5.6+
- Headers not working: Check enum values match your API requirements
- JSON parsing fails: Verify JSON format with verbose debugging
- Timeout errors: Increase timeout in Options
- SSL errors: Check
bVerifySSLoption
For additional support:
- Check debug logs in
ProjectSaved/MasterHttpDebug/ - Use
EDebugLevel::Verbosefor detailed information - Refer to Unreal Engine Forums
Made with β€οΈ by MJGT Studio
Simplifying HTTP requests in Unreal Engine, one request at a time.