---
title: "List all channel endpoints"
method: GET
path: "/v1/channel-endpoints"
tags: ["Channel Endpoints"]
---

# List all channel endpoints

`GET /v1/channel-endpoints`

## Request

- Base URL: `https://api.notifly.io`
- URL: `https://api.notifly.io/v1/channel-endpoints`
- Auth: one of:
  - API key in header `Authorization`
  - API key in header `Authorization`

List all channel endpoints for a resource based on query filters.

## Query parameters

- `after` string
- `before` string
- `limit` number
- `orderDirection` 'ASC' | 'DESC'
- `orderBy` string
- `includeCursor` boolean
- `subscriberId` string
- `contextKeys` string[]
- `channel` 'in_app' | 'email' | 'sms' | 'chat' | 'push' | 'tool'
- `providerId` 'anypost' | 'emailjs' | 'mailgun' | 'mailjet' | 'mandrill' | 'nodemailer' | 'postmark' | 'sendgrid' | 'sendinblue' | 'ses' | 'netcore' | 'infobip-email' | 'resend' | 'sendly' | 'plunk' | 'mailersend' | 'mailtrap' | 'clickatell' | 'outlook365' | 'novu-email' | 'sparkpost' | 'email-webhook' | 'braze' | 'novu-email-agent' | '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' | 'web-push' | 'novu' | 'slack' | 'discord' | 'msteams' | 'webex-messaging' | 'mattermost' | 'ryver' | 'zulip' | 'grafana-on-call' | 'getstream' | 'rocket-chat' | 'whatsapp-business' | 'line' | 'chat-webhook' | 'novu-slack' | 'telegram' | 'sendblue' | 'novu-web-chat' | 'anthropic' | 'novu-anthropic' | 'anthropic-aws' | 'pagerduty' | 'opsgenie' | 'grafana' | 'tool-webhook': Provider ID of the job
- `integrationIdentifier` string
- `connectionIdentifier` string

## Response `200`

OK

- object
  - `data` ListChannelEndpointsResponseDto
    - `data` GetChannelEndpointResponseDto[], required: List of returned Channel Endpoints
      - `identifier` string, 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' | 'sendly' | 'plunk' | 'mailersend' | 'mailtrap' | 'clickatell' | 'outlook365' | 'novu-email' | 'sparkpost' | 'email-webhook' | 'braze' | 'novu-email-agent' | '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' | 'web-push' | 'novu' | 'slack' | 'discord' | 'msteams' | 'webex-messaging' | 'mattermost' | 'ryver' | 'zulip' | 'grafana-on-call' | 'getstream' | 'rocket-chat' | 'whatsapp-business' | 'line' | 'chat-webhook' | 'novu-slack' | 'telegram' | 'sendblue' | 'novu-web-chat' | 'anthropic' | 'novu-anthropic' | 'anthropic-aws' | 'pagerduty' | 'opsgenie' | 'grafana' | 'tool-webhook', nullable, required: The provider identifier (e.g., sendgrid, twilio, slack, etc.).
      - `integrationIdentifier` string, nullable, required: The identifier of the integration to use for this channel endpoint.
      - `connectionIdentifier` string, nullable, required: The identifier of the channel connection used for this endpoint.
      - `subscriberId` string, nullable, required: The subscriber ID to which the channel endpoint is linked
      - `contextKeys` string[], required: The context of the channel connection
      - `type` 'slack_channel' | 'slack_user' | 'webhook' | 'phone' | 'ms_teams_channel' | 'ms_teams_user' | 'telegram_chat' | 'webex_room' | 'webex_person' | 'line_user' | 'pagerduty_service' | 'opsgenie_integration' | 'grafana_oncall_integration' | 'tool_webhook', required: Type of channel endpoint
      - `endpoint` union, required: Endpoint data specific to the channel type
        - SlackChannelEndpointDto
          - `channelId` string, required: Slack channel ID
        - SlackUserEndpointDto
          - `userId` string, required: Slack user ID
        - WebhookEndpointDto
          - `url` string, required: Webhook URL
          - `channel` string: Optional channel identifier
        - PhoneEndpointDto
          - `phoneNumber` string, required: Phone number in E.164 format
        - MsTeamsChannelEndpointDto
          - `teamId` string, required: MS Teams team ID
          - `channelId` string, required: MS Teams channel ID
        - MsTeamsUserEndpointDto
          - `userId` string, required: MS Teams user ID
        - TelegramChatEndpointDto
          - `chatId` string, required: Telegram chat ID
        - WebexRoomEndpointDto
          - `roomId` string, required: Webex room ID
          - `parentId` string: Optional Webex parent message ID for threaded replies
        - WebexPersonEndpointDto
          - `personId` string: Webex person ID. Provide exactly one of personId or personEmail.
          - `personEmail` string: Webex person email. Provide exactly one of personId or personEmail.
        - LineUserEndpointDto
          - `userId` string, required: LINE user ID
        - PagerDutyServiceEndpointDto
          - `routingKey` string, required: PagerDuty Events API v2 integration key (32-character alphanumeric string). Encrypted at rest on the channel endpoint (`endpoint` field).
          - `region` 'us' | 'eu', required: PagerDuty account region — determines the events API data-center endpoint.
        - OpsgenieIntegrationEndpointDto
          - `apiKey` string, required: Opsgenie API integration key (GenieKey) in UUID format. Encrypted at rest on the channel endpoint (`endpoint` field).
          - `region` 'us' | 'eu', required: Opsgenie account region that determines the alert API data-center endpoint.
        - GrafanaOnCallIntegrationEndpointDto
          - `url` string, required: Grafana IRM/OnCall incoming-webhook (Formatted Webhook) integration URL. The routing secret is embedded in the URL path. Encrypted at rest on the channel endpoint (`endpoint` field).
          - `authToken` string: Optional Grafana service account bearer token, required when the integration enforces authenticated ingestion. Encrypted at rest on the channel endpoint (`endpoint` field).
        - ToolWebhookEndpointDto
          - `url` string, required: Destination webhook URL (often a per-subscriber capability URL). Encrypted at rest on the channel endpoint (`endpoint` field).
          - `headers` object: Optional headers (e.g. auth tokens) sent with every request to this webhook. Header values are encrypted at rest on the channel endpoint (`endpoint` field).
          - `method` 'POST' | 'PUT' | 'PATCH': Optional HTTP method override for this webhook. Defaults to the integration-level method.
      - `createdAt` string, required: The timestamp indicating when the channel endpoint was created, in ISO 8601 format.
      - `updatedAt` string, required: The timestamp indicating when the channel endpoint was last updated, in ISO 8601 format.
    - `next` string, nullable, required: The cursor for the next page of results, or null if there are no more pages.
    - `previous` string, nullable, required: The cursor for the previous page of results, or null if this is the first page.
    - `totalCount` number, required: The total count of items (up to 50,000)
    - `totalCountCapped` boolean, required: Whether there are more than 50,000 results available

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not Found
- `405`: Method Not Allowed
- `409`: Conflict
- `413`: Payload Too Large
- `414`: URI Too Long
- `415`: Unsupported Media Type
- `422`: Unprocessable Entity
- `429`: The client has sent too many requests in a given amount of time.
- `500`: Internal Server Error
- `503`: The server is currently unable to handle the request due to a temporary overload or scheduled maintenance, which will likely be alleviated after some delay.

---

[API](https://skmtc.dev/notifly/apis/notifly-api.md) · [All operations](https://skmtc.dev/notifly/apis/notifly-api/llms.txt) · [OpenAPI document](https://skmtc.dev/notifly/apis/notifly-api/revisions/af909b9e1e57?raw)
