Skip to main content

Base URL

For local development:

Authentication

All API requests (except public OAuth callbacks and webhooks) require an Authorization header:
Supapost supports two credential types — Unkey API keys (prefixed sp_live_...) for server-to-server use and Supabase JWTs issued to browser sessions. See Authentication for details.

Response format

Every response uses a consistent JSON shape. Success — the data directly (or a domain-specific envelope):
Error — always success: false plus a human-readable message:

Pagination

Paginated list endpoints use a Stripe-style contract:
Common query params:
  • limit: number of records to return, default 15, max 100
  • starting_after: fetch the next page after the given object ID
  • ending_before: fetch the previous page before the given object ID
Currently documented paginated list endpoints include /assets, /products, /team/members, and /invites.

Status codes

Rate limits

Limits are per-team, bucketed by endpoint tier: Exceeding a limit returns 429 with a Retry-After header.

Async jobs

Expensive generation endpoints (/generate/image and /render) are always async. They return 202 Accepted with a job_id immediately — clients then poll GET /jobs/:id for the result. This avoids long-running HTTP requests and stays within Cloudflare Worker CPU limits.
Job status lifecycle: pendingprocessingcompleted | failed. The work runs on Cloudflare Queues with automatic retries and a dead-letter queue for failed messages.

Endpoints

Generation

Rendering

Jobs (async polling)

Projects

Scheduling

Publishing

Influencers

Products

Stores (Shopify / Etsy)

Assets / library

Team

Social accounts

API keys