Skip to main content
Documentation
StartOverviewArchitectureAuthenticationSend your first message
TypeScript SDKOverviewTrusted app serverApp-user clientsRealtimeErrors & webhooks
Flutter SDKOverviewInstallationAuthenticationChannels & messagesOffline & syncRealtimeUI componentsPush & lifecycle
ConceptsTenancy & scopeChannels & messagesDelivery & reconciliationSecurity checklist
ProtocolsRealtimeSigned webhooks
ReferenceREST APIErrors, limits & retriesDeploy docs to Coolify
VV ChatDocs API v1
Recommended starting points
Build chat without rebuilding infrastructureV Chat is a multi-tenant messaging backend with typed server, web, and Flutter integration paths.StartArchitecture at a glanceUnderstand the control plane, data plane, realtime path, and SDK boundaries before integrating.StartAuthentication and credentialsSelect the correct credential for dashboard, trusted-server, app-user, realtime, and webhook flows.StartSend your first messageUse the trusted TypeScript server client to create the minimum safe messaging flow.StartTypeScript SDK overviewChoose the correct typed client for trusted servers, app users, dashboard sessions, realtime, and webhooks.TypeScript SDKTrusted app-server clientUse AppServerClient from a protected backend to manage data-plane resources and mint app-user tokens.TypeScript SDKApp-user clientsBuild browser or Node app-user flows with VChatClient or the lower-level AppUserClient.TypeScript SDK
↑↓ Navigate↵ Openesc Close
API reference
StartOverviewArchitectureAuthenticationSend your first message
TypeScript SDKOverviewTrusted app serverApp-user clientsRealtimeErrors & webhooks
Flutter SDKOverviewInstallationAuthenticationChannels & messagesOffline & syncRealtimeUI componentsPush & lifecycle
ConceptsTenancy & scopeChannels & messagesDelivery & reconciliationSecurity checklist
ProtocolsRealtimeSigned webhooks
ReferenceREST APIErrors, limits & retriesDeploy docs to Coolify
Contract sourceOpenAPI JSON
Docs/Realtime & webhooks
Server-to-server delivery

Signed webhooks

Configure delivery, verify signatures, process at-least-once events, and recover failed deliveries safely.

Updated 2026-08-09•docs/guides/receiving-signed-webhooks.md · artifacts/events/webhook-events.v1.json

Receiver checklist

  1. Expose an HTTPS endpoint with a bounded raw-body limit.
  2. Read the timestamp and signature headers and verify the exact raw bytes before parsing JSON.
  3. Enforce the released timestamp tolerance and current/overlap secret rules.
  4. Deduplicate stable delivery and event identities in your durable queue.
  5. Return success quickly after durable acceptance; perform business work asynchronously.

Delivery semantics

Webhook delivery is at-least-once. V Chat retries bounded eligible failures with backoff and keeps operator-visible delivery state. Consumers must be idempotent and must not depend on arrival order across unrelated channels.

A 2xx means accepted, not processed

Acknowledge only after your receiver has durably accepted the event. Do not hold the request open for downstream provider calls or long business workflows.

Secret rotation

Store webhook secrets outside source control. During an approved rotation overlap, verify against the released current/previous secret contract, monitor failures, and remove the old secret after the overlap window. Never log the signature secret or raw content payload.

Use the server verifier

TypeScript verification

Use the documented Node-only webhooks/server export.

Read guide
PreviousRealtime protocolNext Errors, limits, and retries
On this pageReceiver checklistDelivery semanticsSecret rotationUse the server verifier
Report a docs issue