REST API Proxy - cURL Examples¶
Base URL: https://txpaxbxhnvnhsjwwaeoy.supabase.co/functions/v1/rest-api-proxy
Authentication¶
Use either:
- X-API-Key: cg_your_api_key (API key from Settings → API Keys)
- Authorization: Bearer <supabase_jwt_token> (from user session)
1. CREATE DEAL¶
curl -X POST \
"https://txpaxbxhnvnhsjwwaeoy.supabase.co/functions/v1/rest-api-proxy/deals" \
-H "Content-Type: application/json" \
-H "X-API-Key: cg_your_api_key_here" \
-d '{
"title": "Enterprise Software Deal",
"stage": "LEAD",
"value": 50000,
"currency": "USD",
"contact_id": "uuid-of-contact",
"company_id": "uuid-of-company",
"expected_close_date": "2025-12-31",
"probability": 30,
"priority": "high",
"source": "referral"
}'
Response: Returns created deal with auto-generated id, organization_id, timestamps.
2. UPDATE DEAL¶
# Update deal by ID
curl -X PATCH \
"https://txpaxbxhnvnhsjwwaeoy.supabase.co/functions/v1/rest-api-proxy/deals?id=eq.deal-uuid-here" \
-H "Content-Type: application/json" \
-H "X-API-Key: cg_your_api_key_here" \
-d '{
"stage": "NEGOTIATION",
"value": 75000,
"probability": 60,
"notes": "Advanced to negotiation phase"
}'
# Update multiple deals by stage
curl -X PATCH \
"https://txpaxbxhnvnhsjwwaeoy.supabase.co/functions/v1/rest-api-proxy/deals?stage=eq.LEAD" \
-H "Content-Type: application/json" \
-H "X-API-Key: cg_your_api_key_here" \
-d '{"priority": "low"}'
3. CREATE CONTACT (Customer)¶
curl -X POST \
"https://txpaxbxhnvnhsjwwaeoy.supabase.co/functions/v1/rest-api-proxy/contacts" \
-H "Content-Type: application/json" \
-H "X-API-Key: cg_your_api_key_here" \
-d '{
"first_name": "John",
"last_name": "Doe",
"emails": ["john.doe@example.com", "john@company.com"],
"phones": ["+1234567890"],
"company_id": "uuid-of-company",
"tags": ["lead", "warm"],
"source": "website",
"description": "Interested in enterprise package",
"custom_fields": {
"job_title": "CTO",
"linkedin": "linkedin.com/in/johndoe"
}
}'
Response: Returns created contact with auto-generated id, organization_id, timestamps.
4. UPDATE CONTACT¶
# Update contact by ID
curl -X PATCH \
"https://txpaxbxhnvnhsjwwaeoy.supabase.co/functions/v1/rest-api-proxy/contacts?id=eq.contact-uuid-here" \
-H "Content-Type: application/json" \
-H "X-API-Key: cg_your_api_key_here" \
-d '{
"first_name": "Jonathan",
"tags": ["lead", "warm", "qualified"],
"emails": ["john.doe@newcompany.com"]
}'
# Update contacts by tag
curl -X PATCH \
"https://txpaxbxhnvnhsjwwaeoy.supabase.co/functions/v1/rest-api-proxy/contacts?tags=cs.{\"cold\"}" \
-H "Content-Type: application/json" \
-H "X-API-Key: cg_your_api_key_here" \
-d '{"source": "cold_call_campaign"}'
Note: organization_id is automatically set on create and filtered on update. Cannot be changed.
5. QUERY / READ¶
# Get all deals (organization-scoped)
curl -X GET \
"https://txpaxbxhnvnhsjwwaeoy.supabase.co/functions/v1/rest-api-proxy/deals?limit=100" \
-H "X-API-Key: cg_your_api_key_here"
# Get deal by ID
curl -X GET \
"https://txpaxbxhnvnhsjwwaeoy.supabase.co/functions/v1/rest-api-proxy/deals?id=eq.deal-uuid" \
-H "X-API-Key: cg_your_api_key_here"
# Search contacts by name (case-insensitive)
curl -X GET \
"https://txpaxbxhnvnhsjwwaeoy.supabase.co/functions/v1/rest-api-proxy/contacts?first_name=ilike.*John*" \
-H "X-API-Key: cg_your_api_key_here"
# Get deals with stage filter
curl -X GET \
"https://txpaxbxhnvnhsjwwaeoy.supabase.co/functions/v1/rest-api-proxy/deals?stage=eq.CLOSED_WON&order=created_at.desc" \
-H "X-API-Key: cg_your_api_key_here"
6. DELETE¶
# Delete deal by ID
curl -X DELETE \
"https://txpaxbxhnvnhsjwwaeoy.supabase.co/functions/v1/rest-api-proxy/deals?id=eq.deal-uuid" \
-H "X-API-Key: cg_your_api_key_here"
# Delete contacts by tag (batch)
curl -X DELETE \
"https://txpaxbxhnvnhsjwwaeoy.supabase.co/functions/v1/rest-api-proxy/contacts?tags=cs.{\"test\"}" \
-H "X-API-Key: cg_your_api_key_here"
Supported Operators¶
| Operator | Description | Example |
|---|---|---|
eq |
Equals | ?stage=eq.LEAD |
neq |
Not equals | ?stage=neq.CLOSED_LOST |
gt |
Greater than | ?value=gt.1000 |
gte |
Greater or equal | ?created_at=gte.2025-01-01 |
lt |
Less than | ?value=lt.5000 |
lte |
Less or equal | ?probability=lte.50 |
like |
Pattern match | ?title=like.*Corp* |
ilike |
Case-insensitive match | ?first_name=ilike.*john* |
is |
Is null | ?company_id=is.null |
in |
In list | ?stage=in.(LEAD,PROSPECT) |
cs |
Contains (arrays) | ?tags=cs.{\"warm\"} |
Response Format¶
Success (200):
Error (4xx/5xx):