Version 1.34.2 | Production Ready | Unreal Engine 5.5+
Comprehensive reference for all Supabase Plugin API endpoints, methods, and Blueprint nodes. This documentation covers HTTP operations, async actions, database queries, authentication, and real-time functionality.
Production-ready HTTP API request handler with comprehensive error handling and validation.
// C++ Usage
UAsyncApiRequest* Request = UAsyncApiRequest::ApiRequestAsync(
this,
TEXT("https://api.example.com/data"),
EHttpMethod::GET,
Headers,
TEXT("")
);
Request->OnSuccess.AddDynamic(this, &AMyActor::OnApiSuccess);
Request->Activate();
Blueprint Node: Api Request Async
// C++ Usage with full configuration
UAsyncApiRequest* Request = UAsyncApiRequest::ApiRequestAdvanced(
this,
TEXT("https://api.example.com/data"),
EHttpMethod::POST,
Headers,
PayloadJSON,
30.0f, // Timeout
true, // Validate SSL
TEXT("application/json")
);
Blueprint Node: Api Request Advanced
// C++ Usage for Supabase endpoints
UAsyncApiRequest* Request = UAsyncApiRequest::SupabaseApiRequestAsync(
this,
TEXT("/rest/v1/users"),
EHttpMethod::GET,
TEXT(""),
ESupabaseKey::Service
);
Blueprint Node: Supabase Api Request Async
| Method | Description | Supports Payload |
|---|---|---|
| GET | Retrieve data | No |
| POST | Create new resource | Yes |
| PUT | Update entire resource | Yes |
| PATCH | Partial update | Yes |
| DELETE | Remove resource | No |
| HEAD | Get headers only | No |
| OPTIONS | Get allowed methods | No |
Execute SELECT queries with filtering, sorting, and pagination.
// C++ Usage
UAsyncQuery* Query = UAsyncQuery::QueryTableAsync(
this,
TEXT("users"),
TEXT("id,email,created_at"),
QueryFilter,
ESupabaseKey::Service
);
Query->OnSuccess.AddDynamic(this, &AMyActor::OnQuerySuccess);
Blueprint Node: Query Table Async
Insert new records into database tables.
// C++ Usage
UAsyncInsert* Insert = UAsyncInsert::InsertRowAsync(
this,
TEXT("users"),
UserDataJSON,
ESupabaseKey::Service
);
Blueprint Node: Insert Row Async
Update existing records with filtering.
// C++ Usage
UAsyncUpdate* Update = UAsyncUpdate::UpdateRowAsync(
this,
TEXT("users"),
TEXT("12345"),
UpdateDataJSON,
ESupabaseKey::Service
);
Blueprint Node: Update Row Async
Delete records by ID or filters.
// C++ Usage by ID
UAsyncDeleteRow* Delete = UAsyncDeleteRow::DeleteRowAsync(
this,
TEXT("users"),
TEXT("12345"),
ESupabaseKey::Service
);
// C++ Usage with filters
UAsyncDeleteRow* Delete = UAsyncDeleteRow::DeleteRowWithFiltersAsync(
this,
TEXT("users"),
FilterMap,
ESupabaseKey::Service
);
Blueprint Nodes:
Delete Row Async - Delete by IDDelete Row With Filters Async - Delete with custom filtersExecute raw SQL queries with optional Edge Function support.
// C++ Usage
UAsyncExecuteSQL* SQLExec = UAsyncExecuteSQL::ExecuteSQLAsync(
TEXT("SELECT * FROM users WHERE active = true"),
TEXT(""),
false,
Headers
);
Blueprint Node: Execute SQL Async
Authenticate users with email/password or phone/password.
// C++ Usage
UAsyncLogin* Login = UAsyncLogin::LoginAsync(
this,
TEXT("user@example.com"),
TEXT("password123"),
ELoginMethod::Email
);
Login->OnSuccess.AddDynamic(this, &AMyActor::OnLoginSuccess);
Blueprint Node: Login Async
Register new users with comprehensive validation.
// C++ Usage
UAsyncRegister* Register = UAsyncRegister::RegisterAsync(
this,
TEXT("newuser@example.com"),
TEXT("securepassword"),
TEXT("securepassword"),
RegistrationOptions,
ERegistrationMode::Email
);
Blueprint Node: Register Async
Safely logout users and clean up sessions.
// C++ Usage with subsystem
UAsyncLogout* Logout = UAsyncLogout::LogoutAsync(this);
// C++ Usage with specific connection
UAsyncLogout* Logout = UAsyncLogout::LogoutAdvanced(this, Connection);
Blueprint Nodes:
Logout Async - Using subsystemLogout Advanced - With specific connectionSubscribe to real-time database changes with WebSocket connections.
// C++ Usage
UAsyncRealtime* Realtime = UAsyncRealtime::SubscribeToTableChanges(
this,
TEXT("users"),
Connection
);
Realtime->OnInsert.AddDynamic(this, &AMyActor::OnUserInserted);
Realtime->OnUpdate.AddDynamic(this, &AMyActor::OnUserUpdated);
Blueprint Node: Subscribe To Table Changes
// Real-time configuration
struct FRealtimeConfig
{
float HeartbeatInterval = 30.0f;
bool bEnableReconnection = true;
int32 MaxReconnectAttempts = 5;
float ConnectionTimeout = 10.0f;
FString SchemaOverride = TEXT("public");
TArray<FString> SubscribedEventTypes; // "INSERT", "UPDATE", "DELETE", "*"
};
Static utility class providing simplified access to all Supabase functionality.
// C++ Access
USupabaseSubsystem* Subsystem = USupabaseManager::GetSupabaseSubsystem(this);
USupabaseClient* Client = USupabaseManager::GetSupabaseClient(this);
USupabaseConnection* Connection = USupabaseManager::GetActiveConnection(this);
Blueprint Nodes:
Get Supabase SubsystemGet Supabase ClientGet Active Connection// C++ Initialization
bool bSuccess = USupabaseManager::InitializeSupabase(this, Connection);
USupabaseManager::TestConnection(this);
Blueprint Nodes:
Initialize SupabaseTest Connection// C++ Shortcuts
USupabaseManager::LoginWithEmail(this, TEXT("user@example.com"), TEXT("password"));
USupabaseManager::RegisterWithEmail(this, TEXT("user@example.com"), TEXT("password"));
USupabaseManager::Logout(this);
USupabaseManager::RefreshToken(this);
Blueprint Nodes:
Login With EmailRegister With EmailLogoutRefresh Token// C++ Status checks
bool bConnected = USupabaseManager::IsConnected(this);
bool bAuthenticated = USupabaseManager::IsAuthenticated(this);
FUser CurrentUser = USupabaseManager::GetCurrentUser(this);
FString Status = USupabaseManager::GetConnectionStatus(this);
Blueprint Nodes:
Is ConnectedIs AuthenticatedGet Current UserGet Connection Status| Error Type | Description | Common Causes |
|---|---|---|
| Network Error | Connection issues | Internet connectivity, DNS issues |
| Authentication Error | Auth failures | Invalid credentials, expired tokens |
| Validation Error | Input validation | Missing required fields, invalid format |
| Rate Limit Error | Too many requests | Exceeding API limits |
| Server Error | Supabase issues | Service downtime, database errors |
// C++ Error type detection
bool bIsNetworkError = USupabaseManager::IsNetworkError(ErrorMessage);
bool bIsAuthError = USupabaseManager::IsAuthenticationError(ErrorMessage);
FString FormattedError = USupabaseManager::FormatErrorMessage(Context, Error);
Blueprint Nodes:
Is Network ErrorIs Authentication ErrorFormat Error Message| HTTP Code | Meaning | Resolution |
|---|---|---|
| 400 | Bad Request | Check request format and required fields |
| 401 | Unauthorized | Verify authentication tokens |
| 403 | Forbidden | Check user permissions and RLS policies |
| 404 | Not Found | Verify endpoint URL and resource existence |
| 429 | Rate Limited | Implement request throttling |
| 500 | Server Error | Check Supabase service status |
// Adding custom headers
TMap<FString, FString> Headers;
Headers.Add(TEXT("Authorization"), TEXT("Bearer your-token"));
Headers.Add(TEXT("X-Custom-Header"), TEXT("custom-value"));
Headers.Add(TEXT("User-Agent"), TEXT("UnrealEngine/5.5"));
| Key Type | Usage | Security Level |
|---|---|---|
| Anonymous | Public read operations | Low |
| Service | Admin operations | High |
| User | Authenticated user operations | Medium |
// Using subsystem (recommended - automatic pooling)
if (bUseSubsystem) {
SupabaseClient = Subsystem->GetSupabaseClient(); // Reused connection
} else {
SupabaseClient = NewObject<USupabaseClient>(this); // New connection
}
All async operations implement automatic cleanup:
// Automatic cleanup in BeginDestroy
virtual void BeginDestroy() override
{
SafeCleanup();
Super::BeginDestroy();
}
void SafeCleanup()
{
if (HttpRequest.IsValid()) {
HttpRequest->OnProcessRequestComplete().Unbind();
HttpRequest->CancelRequest();
HttpRequest.Reset();
}
}
All operations are thread-safe with proper synchronization:
// Thread-safe delegate execution
void SafeBroadcastOnGameThread(TFunction<void()> BroadcastFunction)
{
if (IsInGameThread()) {
BroadcastFunction();
} else {
AsyncTask(ENamedThreads::GameThread, BroadcastFunction);
}
}
// C++ Debug logging
USupabaseManager::EnableDebugLogging(this, true);
Blueprint Node: Enable Debug Logging
// C++ Health monitoring
USupabaseSubsystem* Supabase = USupabaseManager::GetSupabaseSubsystem(this);
if (Supabase) {
UE_LOG(LogTemp, Log, TEXT("Connection Status: %s"), *Supabase->GetConnectionStatus());
UE_LOG(LogTemp, Log, TEXT("Is Connected: %s"), Supabase->IsConnected() ? TEXT("Yes") : TEXT("No"));
}
Last updated: Version 1.34.2 | For the most current API reference, check the latest plugin documentation.