Fluos webhooks
Inbound Clerk, Stripe, and Resend webhooks Fluos verifies and processes. Not a customer-configurable outbound webhook API.
Fluos receives inbound webhooks from identity, billing, and email providers. These are not customer-configurable outbound webhooks, and agents must not call them — each request is signature-checked against a server-side secret.
The OpenAPI operations are receiveClerkWebhook, receiveStripeWebhook, and receiveResendWebhook in /openapi.json.
Clerk — POST /api/webhooks/clerk
Used for account lifecycle.
| Event | What Fluos does |
|---|---|
user.created | Records the canonical server-side signup (user_signed_up) |
user.deleted | Runs the account deletion cascade |
Auth: Svix headers svix-id, svix-timestamp, svix-signature verified with CLERK_WEBHOOK_SIGNING_SECRET.
Responses: 200 accepted, 400 bad signature, 500 not configured.
Stripe — POST /api/stripe/webhook
Used for Pro subscriptions and enterprise invoices.
Auth: stripe-signature verified with STRIPE_WEBHOOK_SECRET. The raw body is required; do not pre-parse JSON before verification.
Responses: 200 accepted, 400 missing/invalid signature, 500 handler failure (Stripe retries; handlers are idempotent).
Resend — POST /api/webhooks/resend
Used for transactional email open tracking.
Auth: Svix headers verified with RESEND_WEBHOOK_SECRET.
Body (relevant fields):
{
"type": "email.opened",
"data": { "email_id": "..." }
}Configuring endpoints
Register the production URLs with each provider:
https://www.fluos.io/api/webhooks/clerkhttps://www.fluos.io/api/stripe/webhookhttps://www.fluos.io/api/webhooks/resend
Local development uses http://localhost:3000 plus the same paths.
Outbound / customer webhooks
Fluos does not currently offer a public outbound webhook subscription API (no video.exported customer callback URL). Enterprise workflow integration is arranged with Fluos sales.