Waitlist Signup
Frontend API Routes
Waitlist Signup
POST
Waitlist Signup
Waitlist Signup
Submit a waitlist request to join the Umbra beta program.Endpoint
Authentication
Rate Limiting
5 requests per minute per IP address. Returns429 Too Many Requests with a Retry-After header when exceeded.
Security Requirements
- Must be same-origin request (checked via
Originheader) - Must have
Content-Type: application/json - Must include valid form token (10-minute expiry)
- Honeypot field (
checkpoint) must be empty
Request Parameters
Email address (max 160 characters). Must be a valid email format.
Company name (max 160 characters)
Description of intended use case (max 320 characters)
Additional metadata as key-value pairs (max 12 entries)
HMAC-signed form token from
/api/form-tokenRequest Body
Response
Whether the signup was successful
Error Responses
400 Bad Request
- Missing or invalid email
- Missing or expired form token
- Honeypot field not empty
403 Forbidden
- Cross-origin request blocked
415 Unsupported Media Type
- Missing or invalid
Content-Typeheader
422 Unprocessable Entity
- Email format validation failed
429 Too Many Requests
- Rate limit exceeded (includes
Retry-Afterheader with seconds to wait)
500 Internal Server Error
- Database error
- Unexpected server error
Example
Success Response
Error Response
Data Handling
Waitlist requests are stored in Supabase with
upsert behavior using email as the conflict key. Submitting the same email multiple times will update the existing record.Validation Rules
- Email: Required, max 160 characters, must match basic email regex (
/^[^\s@]+@[^\s@]+\.[^\s@]+$/), converted to lowercase - Company: Optional, max 160 characters, trimmed
- Use Case: Optional, max 320 characters, trimmed
- Metadata: Optional object with max 12 string key-value pairs, empty values filtered out
- Form Token: Required, must be valid HMAC signature and not expired (10-minute TTL)
- Checkpoint: Must be empty (honeypot field)
Implementation Details
The endpoint implements multiple security layers:- Same-origin enforcement via header validation
- Rate limiting per IP address (5 req/min)
- HMAC-signed form tokens with expiry
- Honeypot field for bot detection
- Input sanitization and validation
- Supabase Row-Level Security (RLS) policies
frontend/app/api/waitlist/route.ts