Channels

Create Channel

Connect a new messaging channel

Required Scopes: channels:create

RCS channels cannot be created here: SendSeven sets up and manages RCS agents (403 rcs_managed_by_sendseven).

post/api/v1/channels

Request

  • Base URL: https://api.sendseven.com
  • URL: https://api.sendseven.com/api/v1/channels
  • Auth: HTTP bearer

Request body

channel_type'whatsapp' | 'telegram' | 'messenger' | 'instagram' | 'sms' | 'viber' | 'live_chat' | 'browser_push' | 'email' | 'rcs' required

Every messaging channel the platform supports.

namestring required
identifierstring required
configobject nullable

Example request

{
  "channel_type": "whatsapp",
  "config": {
    "phone_number_id": "123456789012345",
    "waba_id": "987654321098765"
  },
  "identifier": "491521558086",
  "name": "Main WhatsApp Business"
}

Response

Successful Response

idstring required
tenant_idstring required
channel_type'whatsapp' | 'telegram' | 'messenger' | 'instagram' | 'sms' | 'viber' | 'live_chat' | 'browser_push' | 'email' | 'rcs' required

Every messaging channel the platform supports.

namestring required
identifierstring required
phone_number_formattedstring nullable
is_activeboolean required
is_verifiedboolean
is_coexistenceboolean
created_atstring date-time required
activation_statusstring nullable

ES/Coexistence activation lifecycle. null = ACTIVE (legacy / healthy channels). AVAILABLE = the channel row exists but setup is not complete (see setup_pending_reason); such a channel is is_active=false and MUST NOT be rendered as connected.

setup_pending_reasonstring nullable

Non-null when the channel row exists but setup is INCOMPLETE and needs customer action. coexistence_setup_incomplete = the WhatsApp number must finish Coexistence setup on the phone (keep it active on the WhatsApp Business App, re-run connect, and complete Meta's dialog incl. the QR scan + on-handset confirmation). null for every fully-set-up channel. A channel with this set is NOT connected and must not render as such.

avatar_urlstring nullable

Profile picture of the connected account on this channel (Facebook Page / Instagram account). Null when unavailable or not captured for this channel type. Meta CDN URLs expire — do not persist client-side.

rcs_agent_idstring nullable

[RCS] Google RBM agent id, stored BARE (no '@rbm.goog' suffix). Normalisation happens on write via a model @validates hook.

rcs_partner_idstring nullable

[RCS] Google RBM partner account id.

rcs_launch_stateobject nullable

[RCS] Free-form brand-verification + per-carrier launch status. Absent/empty means NOTHING is launched (fail closed): pre-launch an agent can only reach allowlisted tester devices.

rcs_message_traffic_typestring nullable

[RCS] The channel's DEFAULT messageTrafficType (AUTHENTICATION | TRANSACTION | PROMOTION | SERVICEREQUEST | ACKNOWLEDGEMENT), or null when none is set. A German regulatory declaration about the nature of the message (UWG / telecoms), NOT a billing tier and not a delivery-speed setting. null means unset -- the adapter then falls back to SERVICEREQUEST -- and is what an archived channel reads, since this value is deliberately not preserved across archiving. Returned canonicalised, i.e. exactly the value that will be sent to Google; a stored value outside the five enum values reads as null because that is what the adapter will make of it. Set it with PUT /channels/{id}/rcs/credentials.

rcs_pricing_modestring nullable

[RCS] How this RCS agent is billed (read-only; set by SendSeven): per_message = each message is billed and counts towards your messages; mau = billed once per monthly active recipient, and its messages do NOT count as messages sent. null on every non-RCS channel.

Example response

{
  "channel_type": "whatsapp",
  "created_at": "2026-01-15T10:30:00Z",
  "id": "a1b2c3d4-5678-9abc-def0-1234567890ab",
  "identifier": "491521558086",
  "is_active": true,
  "is_verified": true,
  "name": "Main WhatsApp Business",
  "phone_number_formatted": "+49 1521 558086",
  "tenant_id": "t1e2n3a4-5678-9abc-def0-1234567890ab"
}

Changes

No recorded changes to this operation across all 3 revisions of this API.