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.

EventWhat Fluos does
user.createdRecords the canonical server-side signup (user_signed_up)
user.deletedRuns 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/clerk
  • https://www.fluos.io/api/stripe/webhook
  • https://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.