Introduction
What is Supabase?
Supabase is an open-source Firebase alternative that provides a PostgreSQL database with automatic REST API generation. Key features include:
- Instant REST APIs for your database tables
- Real-time subscriptions
- Row Level Security (RLS) for fine-grained access control
- Built-in authentication
- Storage for files and media
Getting Started
Prerequisites
Before using the Supabase App, you will need:
- A Supabase account (free tier available at supabase.com)
- A Supabase project with at least one table
- Your Supabase Project URL and API Key
Finding Your Credentials
1. Log in to your Supabase Dashboard
2. Select your project
3. Click the Settings icon (gear) in the left sidebar
4. Navigate to API under Project Settings
5. Copy your Project URL and API Key
API Key Types
| Key Type | Use Case | Security |
| Publishable Key (anon) | Frontend apps, respects Row Level Security | Safe to expose, limited by RLS policies |
| Secret Key (service_role) | Backend/server operations, full access | Bypasses RLS - keep secure! |
Recommendation: For Flows automation, use the Secret Key (service_role) to ensure full access to your data. Keep this key secure and never expose it in client-side code.
Available Stages
| Stage | Method | Description |
| Query Rows | GET | Retrieve one or more rows with filtering, sorting, and column selection |
| Insert Rows | POST | Create one or more new rows |
| Update Rows | PATCH | Modify existing rows matching filter conditions |
| Upsert Rows | POST | Insert new row, or update if it already exists |
| Delete Rows | DELETE | Remove rows matching filter conditions |
Filter Operators Reference
All stages that use filters support these operators:
| Operator | Description | Example |
| eq | Equals | status=eq.active |
| neq | Not equals | status=neq.deleted |
| gt | Greater than | amount=gt.100 |
| gte | Greater than or equal | age=gte.18 |
| lt | Less than | price=lt.50 |
| lte | Less than or equal | quantity=lte.10 |
| like | Pattern match (case-sensitive) | name=like.*john* |
| ilike | Pattern match (case-insensitive) | email=ilike.*@gmail.com |
| in | Value in list | status=in.(active,pending) |
| is | Is null/not null | deleted_at=is.null |
Combining Filters (AND):
Use & between conditions:
status=eq.active&category=eq.premium&age=gte.18