List all channel connections
List all channel connections for a resource.
import { Novu } from "@novu/api";
const novu = new Novu({
secretKey: "YOUR_SECRET_KEY_HERE",
});
async function run() {
const result = await novu.channelConnections.list({
limit: 10,
subscriberId: "subscriber-123",
channel: "chat",
providerId: "slack",
integrationIdentifier: "slack-prod",
contextKeys: [
"tenant:org-123",
"region:us-east-1",
],
});
console.log(result);
}
run();using Novu;
using Novu.Models.Components;
using Novu.Models.Requests;
using System.Collections.Generic;
var sdk = new NovuSDK(secretKey: "YOUR_SECRET_KEY_HERE");
ChannelConnectionsControllerListChannelConnectionsRequest req = new ChannelConnectionsControllerListChannelConnectionsRequest() {
Limit = 10D,
SubscriberId = "subscriber-123",
Channel = Novu.Models.Requests.Channel.Chat,
ProviderId = ProvidersIdEnum.Slack,
IntegrationIdentifier = "slack-prod",
ContextKeys = new List<string>() {
"tenant:org-123",
"region:us-east-1",
},
};
var res = await sdk.ChannelConnections.ListAsync(req);
// handle responsedeclare(strict_types=1);
require 'vendor/autoload.php';
use novu;
use novu\Models\Components;
use novu\Models\Operations;
$sdk = novu\Novu::builder()
->setSecurity(
'YOUR_SECRET_KEY_HERE'
)
->build();
$request = new Operations\ChannelConnectionsControllerListChannelConnectionsRequest(
limit: 10,
subscriberId: 'subscriber-123',
channel: Operations\Channel::Chat,
providerId: Components\ProvidersIdEnum::Slack,
integrationIdentifier: 'slack-prod',
contextKeys: [
'tenant:org-123',
'region:us-east-1',
],
);
$response = $sdk->channelConnections->list(
request: $request
);
if ($response->listChannelConnectionsResponseDto !== null) {
// handle response
}import novu_py
from novu_py import Novu
with Novu(
secret_key="YOUR_SECRET_KEY_HERE",
) as novu:
res = novu.channel_connections.list(request={
"limit": 10,
"subscriber_id": "subscriber-123",
"channel": novu_py.QueryParamChannel.CHAT,
"provider_id": novu_py.ProvidersIDEnum.SLACK,
"integration_identifier": "slack-prod",
"context_keys": [
"tenant:org-123",
"region:us-east-1",
],
})
# Handle response
print(res)package main
import(
"context"
"github.com/novuhq/novu-go/v3"
"github.com/novuhq/novu-go/v3/models/operations"
"github.com/novuhq/novu-go/v3/models/components"
"log"
)
func main() {
ctx := context.Background()
s := v3.New(
v3.WithSecurity("YOUR_SECRET_KEY_HERE"),
)
res, err := s.ChannelConnections.List(ctx, operations.ChannelConnectionsControllerListChannelConnectionsRequest{
Limit: v3.Pointer[float64](10.0),
SubscriberID: v3.Pointer("subscriber-123"),
Channel: operations.ChannelChat.ToPointer(),
ProviderID: components.ProvidersIDEnumSlack.ToPointer(),
IntegrationIdentifier: v3.Pointer("slack-prod"),
ContextKeys: []string{
"tenant:org-123",
"region:us-east-1",
},
})
if err != nil {
log.Fatal(err)
}
if res.ListChannelConnectionsResponseDto != nil {
// handle response
}
}curl --request GET \
--url https://api.novu.co/v1/channel-connections \
--header 'Authorization: <api-key>'const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://api.novu.co/v1/channel-connections', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));HttpResponse<String> response = Unirest.get("https://api.novu.co/v1/channel-connections")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.novu.co/v1/channel-connections")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": [
{
"identifier": "<string>",
"providerId": "slack",
"integrationIdentifier": "slack-prod",
"subscriberId": "subscriber-123",
"contextKeys": [
"tenant:org-123",
"region:us-east-1"
],
"workspace": {
"id": "T123456",
"name": "Acme HQ"
},
"auth": {
"accessToken": "Workspace access token"
},
"createdAt": "<string>",
"updatedAt": "<string>"
}
],
"next": "<string>",
"previous": "<string>",
"totalCount": 123,
"totalCountCapped": true
}{
"statusCode": 404,
"timestamp": "2024-12-12T13:00:00Z",
"path": "/api/v1/resource",
"message": "xx xx xx ",
"ctx": {
"workflowId": "some_wf_id",
"stepId": "some_wf_id"
},
"errorId": "abc123"
}{
"statusCode": 404,
"timestamp": "2024-12-12T13:00:00Z",
"path": "/api/v1/resource",
"message": "xx xx xx ",
"ctx": {
"workflowId": "some_wf_id",
"stepId": "some_wf_id"
},
"errorId": "abc123"
}{
"statusCode": 404,
"timestamp": "2024-12-12T13:00:00Z",
"path": "/api/v1/resource",
"message": "xx xx xx ",
"ctx": {
"workflowId": "some_wf_id",
"stepId": "some_wf_id"
},
"errorId": "abc123"
}{
"statusCode": 404,
"timestamp": "2024-12-12T13:00:00Z",
"path": "/api/v1/resource",
"message": "xx xx xx ",
"ctx": {
"workflowId": "some_wf_id",
"stepId": "some_wf_id"
},
"errorId": "abc123"
}{
"statusCode": 404,
"timestamp": "2024-12-12T13:00:00Z",
"path": "/api/v1/resource",
"message": "xx xx xx ",
"ctx": {
"workflowId": "some_wf_id",
"stepId": "some_wf_id"
},
"errorId": "abc123"
}{
"statusCode": 404,
"timestamp": "2024-12-12T13:00:00Z",
"path": "/api/v1/resource",
"message": "xx xx xx ",
"ctx": {
"workflowId": "some_wf_id",
"stepId": "some_wf_id"
},
"errorId": "abc123"
}{
"statusCode": 404,
"timestamp": "2024-12-12T13:00:00Z",
"path": "/api/v1/resource",
"message": "xx xx xx ",
"ctx": {
"workflowId": "some_wf_id",
"stepId": "some_wf_id"
},
"errorId": "abc123"
}{
"statusCode": 404,
"timestamp": "2024-12-12T13:00:00Z",
"path": "/api/v1/resource",
"message": "xx xx xx ",
"ctx": {
"workflowId": "some_wf_id",
"stepId": "some_wf_id"
},
"errorId": "abc123"
}{
"statusCode": 404,
"timestamp": "2024-12-12T13:00:00Z",
"path": "/api/v1/resource",
"message": "xx xx xx ",
"ctx": {
"workflowId": "some_wf_id",
"stepId": "some_wf_id"
},
"errorId": "abc123"
}{
"statusCode": 404,
"timestamp": "2024-12-12T13:00:00Z",
"path": "/api/v1/resource",
"errors": {
"fieldName1": {
"messages": [
"Field is required",
"Must be a valid email address"
],
"value": "invalidEmail"
},
"fieldName2": {
"messages": [
"Must be at least 18 years old"
],
"value": 17
},
"fieldName3": {
"messages": [
"Must be a boolean value"
],
"value": true
},
"fieldName4": {
"messages": [
"Must be a valid object"
],
"value": {
"key": "value"
}
},
"fieldName5": {
"messages": [
"Field is missing"
],
"value": null
},
"fieldName6": {
"messages": [
"Undefined value"
]
}
},
"message": "xx xx xx ",
"ctx": {
"workflowId": "some_wf_id",
"stepId": "some_wf_id"
},
"errorId": "abc123"
}"API rate limit exceeded"{
"statusCode": 404,
"timestamp": "2024-12-12T13:00:00Z",
"path": "/api/v1/resource",
"message": "xx xx xx ",
"ctx": {
"workflowId": "some_wf_id",
"stepId": "some_wf_id"
},
"errorId": "abc123"
}"Please wait some time, then try again."Authorizations
API key authentication. Allowed headers-- "Authorization: ApiKey <novu_secret_key>".
Headers
A header for idempotency purposes
Query Parameters
Cursor for pagination indicating the starting point after which to fetch results.
Cursor for pagination indicating the ending point before which to fetch results.
Limit the number of items to return (max 100)
x <= 100Direction of sorting
ASC, DESC Field to order by
Include cursor item in response
The subscriber ID to filter results by
Filter by channel type (email, sms, push, chat, etc.).
in_app, email, sms, chat, push Filter by provider identifier (e.g., sendgrid, twilio, slack, etc.). Provider ID of the job
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, 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, fcm, apns, expo, one-signal, pushpad, push-webhook, pusher-beams, appio, novu, slack, discord, msteams, mattermost, ryver, zulip, grafana-on-call, getstream, rocket-chat, whatsapp-business, chat-webhook, novu-slack, telegram, anthropic, novu-anthropic, anthropic-aws Filter by integration identifier.
Filter by exact context keys, order insensitive (format: "type:id")
Response
OK
List of returned Channel Connections
Show child attributes
Show child attributes
The cursor for the next page of results, or null if there are no more pages.
The cursor for the previous page of results, or null if this is the first page.
The total count of items (up to 50,000)
Whether there are more than 50,000 results available
Was this page helpful?
import { Novu } from "@novu/api";
const novu = new Novu({
secretKey: "YOUR_SECRET_KEY_HERE",
});
async function run() {
const result = await novu.channelConnections.list({
limit: 10,
subscriberId: "subscriber-123",
channel: "chat",
providerId: "slack",
integrationIdentifier: "slack-prod",
contextKeys: [
"tenant:org-123",
"region:us-east-1",
],
});
console.log(result);
}
run();using Novu;
using Novu.Models.Components;
using Novu.Models.Requests;
using System.Collections.Generic;
var sdk = new NovuSDK(secretKey: "YOUR_SECRET_KEY_HERE");
ChannelConnectionsControllerListChannelConnectionsRequest req = new ChannelConnectionsControllerListChannelConnectionsRequest() {
Limit = 10D,
SubscriberId = "subscriber-123",
Channel = Novu.Models.Requests.Channel.Chat,
ProviderId = ProvidersIdEnum.Slack,
IntegrationIdentifier = "slack-prod",
ContextKeys = new List<string>() {
"tenant:org-123",
"region:us-east-1",
},
};
var res = await sdk.ChannelConnections.ListAsync(req);
// handle responsedeclare(strict_types=1);
require 'vendor/autoload.php';
use novu;
use novu\Models\Components;
use novu\Models\Operations;
$sdk = novu\Novu::builder()
->setSecurity(
'YOUR_SECRET_KEY_HERE'
)
->build();
$request = new Operations\ChannelConnectionsControllerListChannelConnectionsRequest(
limit: 10,
subscriberId: 'subscriber-123',
channel: Operations\Channel::Chat,
providerId: Components\ProvidersIdEnum::Slack,
integrationIdentifier: 'slack-prod',
contextKeys: [
'tenant:org-123',
'region:us-east-1',
],
);
$response = $sdk->channelConnections->list(
request: $request
);
if ($response->listChannelConnectionsResponseDto !== null) {
// handle response
}import novu_py
from novu_py import Novu
with Novu(
secret_key="YOUR_SECRET_KEY_HERE",
) as novu:
res = novu.channel_connections.list(request={
"limit": 10,
"subscriber_id": "subscriber-123",
"channel": novu_py.QueryParamChannel.CHAT,
"provider_id": novu_py.ProvidersIDEnum.SLACK,
"integration_identifier": "slack-prod",
"context_keys": [
"tenant:org-123",
"region:us-east-1",
],
})
# Handle response
print(res)package main
import(
"context"
"github.com/novuhq/novu-go/v3"
"github.com/novuhq/novu-go/v3/models/operations"
"github.com/novuhq/novu-go/v3/models/components"
"log"
)
func main() {
ctx := context.Background()
s := v3.New(
v3.WithSecurity("YOUR_SECRET_KEY_HERE"),
)
res, err := s.ChannelConnections.List(ctx, operations.ChannelConnectionsControllerListChannelConnectionsRequest{
Limit: v3.Pointer[float64](10.0),
SubscriberID: v3.Pointer("subscriber-123"),
Channel: operations.ChannelChat.ToPointer(),
ProviderID: components.ProvidersIDEnumSlack.ToPointer(),
IntegrationIdentifier: v3.Pointer("slack-prod"),
ContextKeys: []string{
"tenant:org-123",
"region:us-east-1",
},
})
if err != nil {
log.Fatal(err)
}
if res.ListChannelConnectionsResponseDto != nil {
// handle response
}
}curl --request GET \
--url https://api.novu.co/v1/channel-connections \
--header 'Authorization: <api-key>'const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://api.novu.co/v1/channel-connections', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));HttpResponse<String> response = Unirest.get("https://api.novu.co/v1/channel-connections")
.header("Authorization", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.novu.co/v1/channel-connections")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"data": [
{
"identifier": "<string>",
"providerId": "slack",
"integrationIdentifier": "slack-prod",
"subscriberId": "subscriber-123",
"contextKeys": [
"tenant:org-123",
"region:us-east-1"
],
"workspace": {
"id": "T123456",
"name": "Acme HQ"
},
"auth": {
"accessToken": "Workspace access token"
},
"createdAt": "<string>",
"updatedAt": "<string>"
}
],
"next": "<string>",
"previous": "<string>",
"totalCount": 123,
"totalCountCapped": true
}{
"statusCode": 404,
"timestamp": "2024-12-12T13:00:00Z",
"path": "/api/v1/resource",
"message": "xx xx xx ",
"ctx": {
"workflowId": "some_wf_id",
"stepId": "some_wf_id"
},
"errorId": "abc123"
}{
"statusCode": 404,
"timestamp": "2024-12-12T13:00:00Z",
"path": "/api/v1/resource",
"message": "xx xx xx ",
"ctx": {
"workflowId": "some_wf_id",
"stepId": "some_wf_id"
},
"errorId": "abc123"
}{
"statusCode": 404,
"timestamp": "2024-12-12T13:00:00Z",
"path": "/api/v1/resource",
"message": "xx xx xx ",
"ctx": {
"workflowId": "some_wf_id",
"stepId": "some_wf_id"
},
"errorId": "abc123"
}{
"statusCode": 404,
"timestamp": "2024-12-12T13:00:00Z",
"path": "/api/v1/resource",
"message": "xx xx xx ",
"ctx": {
"workflowId": "some_wf_id",
"stepId": "some_wf_id"
},
"errorId": "abc123"
}{
"statusCode": 404,
"timestamp": "2024-12-12T13:00:00Z",
"path": "/api/v1/resource",
"message": "xx xx xx ",
"ctx": {
"workflowId": "some_wf_id",
"stepId": "some_wf_id"
},
"errorId": "abc123"
}{
"statusCode": 404,
"timestamp": "2024-12-12T13:00:00Z",
"path": "/api/v1/resource",
"message": "xx xx xx ",
"ctx": {
"workflowId": "some_wf_id",
"stepId": "some_wf_id"
},
"errorId": "abc123"
}{
"statusCode": 404,
"timestamp": "2024-12-12T13:00:00Z",
"path": "/api/v1/resource",
"message": "xx xx xx ",
"ctx": {
"workflowId": "some_wf_id",
"stepId": "some_wf_id"
},
"errorId": "abc123"
}{
"statusCode": 404,
"timestamp": "2024-12-12T13:00:00Z",
"path": "/api/v1/resource",
"message": "xx xx xx ",
"ctx": {
"workflowId": "some_wf_id",
"stepId": "some_wf_id"
},
"errorId": "abc123"
}{
"statusCode": 404,
"timestamp": "2024-12-12T13:00:00Z",
"path": "/api/v1/resource",
"message": "xx xx xx ",
"ctx": {
"workflowId": "some_wf_id",
"stepId": "some_wf_id"
},
"errorId": "abc123"
}{
"statusCode": 404,
"timestamp": "2024-12-12T13:00:00Z",
"path": "/api/v1/resource",
"errors": {
"fieldName1": {
"messages": [
"Field is required",
"Must be a valid email address"
],
"value": "invalidEmail"
},
"fieldName2": {
"messages": [
"Must be at least 18 years old"
],
"value": 17
},
"fieldName3": {
"messages": [
"Must be a boolean value"
],
"value": true
},
"fieldName4": {
"messages": [
"Must be a valid object"
],
"value": {
"key": "value"
}
},
"fieldName5": {
"messages": [
"Field is missing"
],
"value": null
},
"fieldName6": {
"messages": [
"Undefined value"
]
}
},
"message": "xx xx xx ",
"ctx": {
"workflowId": "some_wf_id",
"stepId": "some_wf_id"
},
"errorId": "abc123"
}"API rate limit exceeded"{
"statusCode": 404,
"timestamp": "2024-12-12T13:00:00Z",
"path": "/api/v1/resource",
"message": "xx xx xx ",
"ctx": {
"workflowId": "some_wf_id",
"stepId": "some_wf_id"
},
"errorId": "abc123"
}"Please wait some time, then try again."