Channel Connections

Create a channel connection

Changed on

Create a new channel connection for a resource for given integration. Only one channel connection is allowed per resource and integration.

post/v1/channel-connections

Request

  • Base URL
    https://api.novu.co
  • Auth
    API key in header Authorization

Headers

idempotency-keystring

A header for idempotency purposes

Request body

identifierstring

The unique identifier for the channel connection. If not provided, one will be generated automatically.

subscriberIdstring

The subscriber ID to link the channel connection to

contextobject
connectionMode'subscriber' | 'shared'

Connection mode that determines how the channel connection is scoped. Use "subscriber" (default) to associate the connection with a specific subscriber. Use "shared" to associate the connection with a context instead of a subscriber — subscriberId will not be stored on the connection.

integrationIdentifierstring required

The identifier of the integration to use for this channel connection.

Example request

{
  "identifier": "slack-prod-user123-abc4",
  "subscriberId": "subscriber-123",
  "connectionMode": "shared",
  "integrationIdentifier": "slack-prod",
  "workspace": {
    "id": "T123456",
    "name": "Acme HQ",
    "botUserId": "U0123456789"
  },
  "auth": {
    "accessToken": "Workspace access token",
    "refreshToken": "Workspace refresh token",
    "expiresAt": "2026-06-15T12:00:00.000Z",
    "refreshTokenExpiresAt": "2026-09-15T12:00:00.000Z"
  }
}

Response

Created

identifierstring required

The unique identifier of the channel endpoint.

channel'in_app' | 'email' | 'sms' | 'chat' | 'push' | 'tool' nullable required

The channel type (email, sms, push, chat, etc.).

providerId'anypost' | 'emailjs' | 'mailgun' | 'mailjet' | 'mandrill' | 'nodemailer' | 'postmark' | 'sendgrid' | 'sendinblue' | 'ses' | 'netcore' | 'infobip-email' | 'resend' | 'plunk' | 'mailersend' | 'mailtrap' | 'clickatell' | 'outlook365' | 'novu-email' | 'sparkpost' | 'email-webhook' | 'braze' | 'novu-email-agent' | 'agent-email-inbox' | 'nexmo' | 'plivo' | 'sms77' | 'sms-central' | 'sns' | 'telnyx' | 'twilio' | 'gupshup' | 'firetext' | 'infobip-sms' | 'burst-sms' | 'bulk-sms' | 'isend-sms' | 'forty-six-elks' | 'kannel' | 'maqsam' | 'termii' | 'africas-talking' | 'novu-sms' | 'sendchamp' | 'generic-sms' | 'clicksend' | 'bandwidth' | 'messagebird' | 'simpletexting' | 'azure-sms' | 'ring-central' | 'brevo-sms' | 'eazy-sms' | 'mobishastra' | 'afro-message' | 'unifonic' | 'smsmode' | 'imedia' | 'sinch' | 'isendpro-sms' | 'cm-telecom' | 'ruach-sms' | 'fcm' | 'apns' | 'expo' | 'one-signal' | 'pushpad' | 'push-webhook' | 'pusher-beams' | 'appio' | 'novu' | 'slack' | 'discord' | 'google-chat' | 'msteams' | 'webex-messaging' | 'mattermost' | 'ryver' | 'zulip' | 'grafana-on-call' | 'getstream' | 'rocket-chat' | 'whatsapp-business' | 'line' | 'chat-webhook' | 'novu-slack' | 'telegram' | 'sendblue' | 'photon-imessage' | 'novu-web-chat' | 'anthropic' | 'novu-anthropic' | 'anthropic-aws' | 'pagerduty' | 'opsgenie' | 'grafana' | 'tool-webhook' nullable required

The provider identifier (e.g., sendgrid, twilio, slack, etc.).

integrationIdentifierstring nullable required

The identifier of the integration to use for this channel endpoint.

subscriberIdstring nullable required

The subscriber ID to which the channel connection is linked

contextKeysstring[] required

The context of the channel connection

createdAtstring required

The timestamp indicating when the channel endpoint was created, in ISO 8601 format.

updatedAtstring required

The timestamp indicating when the channel endpoint was last updated, in ISO 8601 format.

Example response

{
  "providerId": "slack",
  "integrationIdentifier": "slack-prod",
  "subscriberId": "subscriber-123",
  "contextKeys": [
    "tenant:org-123",
    "region:us-east-1"
  ],
  "workspace": {
    "id": "T123456",
    "name": "Acme HQ",
    "botUserId": "U0123456789"
  },
  "auth": {
    "accessToken": "Workspace access token",
    "refreshToken": "Workspace refresh token",
    "expiresAt": "2026-06-15T12:00:00.000Z",
    "refreshTokenExpiresAt": "2026-09-15T12:00:00.000Z"
  }
}

Changes

    • warning

      added the new agent-email-inbox enum value to the response property for the response status

    • warning

      added the new google-chat enum value to the response property for the response status

    • warning

      added the new photon-imessage enum value to the response property for the response status