API Documentation

Lumiora API Reference

Build mobile apps and integrations with our REST API and Supabase SDK

Authentication
All authenticated endpoints require a valid Supabase access token
Authorization: Bearer YOUR_ACCESS_TOKEN

Obtain access tokens via Supabase authentication. For mobile apps, use the @supabase/supabase-js library to sign in and get tokens automatically.

Endpoints

POST/api/stripe/checkoutAuth Required
Create a Stripe checkout session for subscription or per-event payment

Request Body

{
  "priceId": "string (required) - Stripe price ID",
  "planType": "string (required) - One of: per_event, starter_monthly, starter_annual, pro_monthly, pro_annual"
}

Response

{
  "url": "string - Stripe checkout URL to redirect user"
}
POST/api/stripe/portalAuth Required
Create a Stripe customer portal session to manage subscription

Request Body

No request body required

Response

{
  "url": "string - Stripe portal URL to redirect user"
}
GET/api/eventsAuth Required
List all events for the authenticated user

Response

{
  "events": "Array<Event> - Array of event objects"
}
POST/api/eventsAuth Required
Create a new event

Request Body

{
  "name": "string (required) - Event name",
  "date": "string (optional) - Event date (ISO 8601)",
  "location": "string (optional) - Event location"
}

Response

{
  "event": "Event - Created event object"
}
GET/api/events/:idAuth Required
Get event details by ID

Response

{
  "event": "Event - Event object with full details"
}
PATCH/api/events/:idAuth Required
Update event details

Request Body

{
  "name": "string (optional)",
  "date": "string (optional)",
  "location": "string (optional)",
  "status": "string (optional) - One of: draft, active, completed, archived",
  "gallery_public": "boolean (optional)",
  "config": "EventConfig (optional) - Event configuration object"
}

Response

{
  "event": "Event - Updated event object"
}
DELETE/api/events/:idAuth Required
Delete an event

Response

{
  "success": "boolean"
}
GET/api/events/:id/galleryAuth Required
List all gallery files for an event with signed URLs

Response

{
  "files": "Array<GalleryFile> - Array of file objects with url and thumbnailUrl"
}
GET/api/gallery/:slugPublic
Get public gallery by slug (no authentication required)

Response

{
  "event": "Event - Basic event info",
  "files": "Array<GalleryFile> - Array of gallery files with signed URLs"
}

Ready to build?

Get your API keys and start integrating Lumiora into your mobile app today.