Skip to content

Programmatic channel configuration

The OSS engine supports native Slack, Telegram and Discord, SMTP email and signed webhooks. The built-in workspace history is always separate from external transport. A logo on a marketing page is not a claim that an unlisted adapter exists.

Read provider_catalog for the actual provider fields and setup modes. Create a connection through /api/v1/connections with its kind, name, provider config, protected secret where appropriate and enabled state. Connection updates use the current version. Read connection_setup for safe callback URLs, manifests or registration steps.

The Slack, Telegram, Discord, email and webhook guides describe provider-specific fields and native callback requirements. Do not invent an OAuth button when the engine only supports a manifest/token setup.

A Person’s verified provider account link identifies who can reply. A destination chooses where their messages go. Contact policy chooses who may contact them. None of these three steps substitutes for another.

Create a destination with connection_id, principal_id, provider-native address, mode and priority. Primary routes are considered first, copy routes add intended copies, and eligible fallback routes handle safely retryable failures according to current policy. Lower numeric priority is considered first. Use route preview to inspect a concrete operation without sending.

  1. Check non-sending /connections/{id}/diagnostics.
  2. Explicitly send /connections/{id}/test to one configured destination_id, retaining its operation key.
  3. Inspect delivery/request trace evidence.
  4. Obtain a correctly attributed native reply or decision before calling it a round trip.

Queued means accepted locally. Provider-accepted means the remote transport accepted it. A returned authenticated reply is a separate fact. Neither proves a business action executed. Configuration changes reset test evidence.

Rate limits and safe transient errors can retry. An unknown external outcome cannot be treated as a clean failure and blindly resent. Disabling a connection or unlinking an account removes its current authority; it does not erase existing canonical conversation history.

Channel HTTP reference · Signed callback reference · Provider data models


Read this page as Markdown