API endpoints
Quattora exposes a small set of HTTP routes for integrations, webhooks, and scheduled jobs. In-app create, edit and delete use Server Actions, not public REST for most entities.
Lead capture
POST /api/lead-capture — create a lead with an API key. Headers: Authorization: Bearer {API_KEY} or X-Api-Key.
Plan: Studio. Either kind of key works.
Retries are safe: send an Idempotency-Key header (8–100 letters, digits, -_:.) and a repeat with the same key returns the first answer — the same lead id — with Idempotent-Replayed: true, instead of creating another. The same header works on POST /api/v1/crm/{entity}. A repeat while the first is still running gets 409; keys are kept for 30 days.
Online payments
POST /api/invoice-portal/[token]/checkout — start a Stripe Connect “Pay Now” checkout for a customer invoice from the public portal. Online payments are open on every plan. The same route shape serves the Smart File deposit at POST /api/smart-file-portal/[token]/checkout.
On the Free plan a platform fee of 1% is set on the direct charge (application_fee_amount) — taken from the agency’s payout, never added to what the client pays. Paid plans pay no platform fee.
The connected-account payment lifecycle is synced back via POST /api/webhooks/stripe/connect.
Webhooks & cron
The main billing webhook is POST /api/webhooks/stripe; the Connect payout webhook is POST /api/webhooks/stripe/connect. OAuth callbacks, inbound email, and cron routes are documented in the repository under docs/reference/api-endpoints.md (full list, headers, and error shapes).