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/Resources
Operational client behavior

Errors, limits, and retries

Use stable error codes, bounded request options, opaque pagination, and deliberate retry/reconciliation.

Updated 2026-08-09•docs/api error catalog · SDK typed error contracts · realtime limits

Stable error boundary

Public failures use a stable code and HTTP status with a request ID and optional retry guidance. SDKs narrow these into typed errors. Raw server messages are not a client contract and should not be displayed or logged.

Choose the recovery action

ClassTypical client action
Authentication expiredAllow the SDK token provider one forced refresh; otherwise end the session.
Resource not foundRemove stale local presentation or re-check the selected scope; do not probe for foreign existence.
Version conflictRead current state, merge or reapply user intent, and submit with the new expected version.
Rate limited / unavailableRespect Retry-After, use backoff, and cancel when the owning workflow is obsolete.
Ambiguous mutation transport failureRead the fixed-identity resource and reconcile before replay.
Realtime gap / stalePause local continuity, refresh authoritative REST state, then resume from an acknowledged baseline.

Important bounds

  • Use the limit documented on each operation; unbounded list queries are not supported.
  • Pass opaque cursors unchanged and keep them inside the scope that issued them.
  • Bound request timeouts and cancel obsolete UI or server work.
  • WebSocket frames, subscriptions, commands, presence watches, typing contexts, and recovery history are bounded.
  • Custom JSON, arrays, text, files, filters, and sorts have operation-specific allowlists and size limits.
PreviousSigned webhooksNext REST API reference
On this pageStable error boundaryChoose the recovery actionImportant bounds
Report a docs issue