Base URL: https://continuum.vercel.app
Content-Type: application/json for all request/response bodies
Version: 0.2.0
Join the waitlist.
| Field | Type | Required | Constraints |
|---|---|---|---|
email |
string |
Yes | Valid email address |
name |
string |
No | 2–100 characters |
company |
string |
No | Max 100 characters |
3 requests per hour per IP address (when Upstash Redis is configured).
Returns 429 Too Many Requests when exceeded.
{
"message": "Successfully joined the waitlist!",
"email": "user@example.com"
}
{
"message": "You're already on the waitlist!",
"email": "user@example.com"
}
{
"error": "Invalid email address"
}
{
"error": "Too many requests. Please try again later."
}
{
"error": "Internal server error"
}
curl -X POST https://continuum.vercel.app/api/waitlist \
-H "Content-Type: application/json" \
-d '{"email": "alice@example.com", "name": "Alice", "company": "Acme Corp"}'
Health check for the waitlist route.
{
"status": "ok",
"route": "waitlist"
}
curl https://continuum.vercel.app/api/waitlist
Cron job health check endpoint. Called hourly by Vercel Cron (configured in vercel.json).
Requires Authorization: Bearer <CRON_SECRET> header.
Returns 401 if the header is missing or the token does not match CRON_SECRET.
{
"status": "ok",
"timestamp": "2026-03-12T14:00:00.000Z"
}
{
"error": "Unauthorized"
}
curl https://continuum.vercel.app/api/cron/health \
-H "Authorization: Bearer $CRON_SECRET"
Sign out the current user. Clears sb-access-token and sb-refresh-token cookies.
Requires a valid session cookie (sb-access-token).
No body required.
The response is a 302 redirect to /login with expired cookie headers.
curl -X POST https://continuum.vercel.app/api/auth/signout \
-H "Cookie: sb-access-token=<token>"
Handles the OAuth / magic-link callback. Exchanges a short-lived code query parameter for a full session, sets cookies, and redirects to the dashboard.
| Parameter | Type | Required | Description |
|---|---|---|---|
code |
string |
Yes | One-time auth code from Supabase |
- Receives
?code=<code>from Supabase redirect - Calls
supabase.auth.exchangeCodeForSession(code) - Sets
sb-access-tokenandsb-refresh-tokencookies - Redirects
302to/dashboard/opportunities
This endpoint is called automatically by Supabase after a magic link or OAuth flow:
GET /auth/callback?code=pkce_verifier_code_here
Set via vercel.json:
| Header | Value |
|---|---|
Content-Security-Policy |
default-src 'self'; script-src 'self' 'unsafe-inline'; ... |
Strict-Transport-Security |
max-age=63072000; includeSubDomains; preload |
X-Frame-Options |
DENY |
X-Content-Type-Options |
nosniff |
Referrer-Policy |
strict-origin-when-cross-origin |
Permissions-Policy |
camera=(), microphone=(), geolocation=() |
Configured in vercel.json. Only same-origin requests are permitted by default.