HTTP API

API reference

Overview

Public routes live under /api/*. They accept JSON bodies unless noted, return JSON, and use standard HTTP status codes. Many routes rate-limit per IP to protect Supabase and email providers.

Base URL

POST https://satellitelabs.xyz/api/<resource>

Authentication

Form-style endpoints (newsletter, careers, waitlists) are unauthenticated by design but validated with Zod schemas and optional RPCs on the server. Do not expose service keys in the browser, call these routes from your backend if you need to hide attribution or apply your own auth layer.

Request format

Send JSON with a explicit content type:

POST /api/newsletter/subscribe
Content-Type: application/json

{
  "email": "you@company.com",
  "first_name": "Jane",
  "last_name": "Doe",
  "source": "footer"
}

Errors

Failed validation returns 400 with an error string. Rate limits respond with 429. Server or upstream failures use 500, treat them as retryable with backoff.

Newsletter

POST /api/newsletter/subscribe requires email, first_name, and last_name (all trimmed, max 100 chars for names). Optional source identifies where the signup came from (for example footer, blog, or blog-post). Successful subscriptions return JSON with a status from the Supabase RPC layer.

Careers

POST /api/careers/apply carries application payloads (role, links, CV metadata) into the hiring pipeline. Keep attachments in object storage and pass URLs, do not post raw binary to the route.

Introduction