Base URLs
8Space uses different base URLs depending on the service:Landing page and API gateway endpoints
Local Next.js development server
Local Supabase instance from
packages/app/supabase/config.tomlAPI Groups
The 8Space API is organized into six functional groups:Landing
Next.js API routes for lead collection and authentication callbacks. Endpoints:POST /api/lead- Store lead email from landing page (triggered byButtonLeadcomponent)GET /auth/callback- Exchange OAuth code and redirect user
Billing
Stripe checkout and customer portal routes. Endpoints:POST /api/stripe/create-checkout- Create Stripe Checkout session (triggered byButtonCheckoutcomponent)POST /api/stripe/create-portal- Create Stripe billing portal session (triggered byButtonAccountcomponent, requires auth)
Webhooks
Stripe webhook receiver for billing lifecycle events. Endpoints:POST /api/webhook/stripe- Receive and verify Stripe webhook events
Supabase Auth
Authentication endpoints used by landing and app clients. Endpoints:POST /auth/v1/signup- Sign up with email/passwordPOST /auth/v1/token?grant_type=password- Sign in with password grantGET /auth/v1/authorize?provider=google- Start Google OAuth flowGET /auth/v1/user- Get authenticated user (requires auth)POST /auth/v1/logout- Log out user session (requires auth)
Supabase Data
PostgREST table endpoints used by the 8Space app. Response shape depends on theselect query parameter.
Endpoints:
GET /rest/v1/profiles- Query user profilesGET /rest/v1/project_members- Query project membership and member listsGET /rest/v1/workflow_columns- List project workflow columnsPATCH /rest/v1/projects- Update project settingsGET /rest/v1/tasks- List tasks by projectPOST /rest/v1/tasks- Create taskPATCH /rest/v1/tasks- Update task by idDELETE /rest/v1/tasks- Delete task by idGET /rest/v1/task_assignees- Query task assigneesPOST /rest/v1/task_assignees- Assign users to tasksDELETE /rest/v1/task_assignees- Remove task assigneesGET /rest/v1/task_label_links- Query task labels linked to tasksGET /rest/v1/task_checklist_items- Query task checklist itemsGET /rest/v1/task_attachments- Query task attachmentsGET /rest/v1/task_dependencies- List task dependencies by projectPOST /rest/v1/task_dependencies- Create task dependenciesDELETE /rest/v1/task_dependencies- Delete dependencies by project/successor filter
Supabase RPC
PostgreSQL RPC functions used by the 8Space app. Endpoints:POST /rest/v1/rpc/create_project_with_defaults- Create new project with default columnsPOST /rest/v1/rpc/current_project_role- Get caller’s role in a projectPOST /rest/v1/rpc/move_task- Move task between columns and set rankPOST /rest/v1/rpc/dashboard_metrics- Calculate dashboard metrics
PostgREST Query Parameters
Supabase Data endpoints support PostgREST query parameters:Controls response shape. Example:
id,display_name,avatar_url or *,project(*) for joinsFilter operators. Examples:
id=eq.9b7f...(equals)user_id=eq.<uuid>(equals UUID)task_id=in.(uuid1,uuid2)(in array)
Sort results. Example:
position.asc or order_rank.ascPostgREST responses depend on the
select query string. Schemas document the fields actually used by 8Space, not every field Supabase provides.Common Response Types
Error Responses
Landing API Error:Status Codes
Request successful
Resource created successfully
Request successful, no response body
Redirect response with
Location headerValidation error or invalid request
Authentication required or invalid credentials
Forbidden by Row Level Security policies
Server error occurred
Data Types
Enums
ProjectRole:owner- Full project accesseditor- Can edit project dataviewer- Read-only access
p0- Critical priorityp1- High priorityp2- Normal priority
backlog- Backlog columntodo- To-do columnin_progress- In progress columndone- Done columncustom- Custom workflow column
FS- Finish-to-start dependency
This specification focuses on endpoints actually called in the 8Space codebase, not every endpoint Supabase provides.
Rate Limits
Supabase enforces rate limits on API requests. Consult your Supabase project settings for current limits.Next Steps
Authentication
Learn how authentication works with Supabase Auth