Create a channel connection
Create a new channel connection for a resource for given integration. Only one channel connection is allowed per resource and integration.
import { Novu } from "@novu/api";
const novu = new Novu({
secretKey: "YOUR_SECRET_KEY_HERE",
});
async function run() {
const result = await novu.channelConnections.create({
identifier: "slack-prod-user123-abc4",
subscriberId: "subscriber-123",
context: {
"key": "org-acme",
},
connectionMode: "shared",
integrationIdentifier: "slack-prod",
workspace: {
id: "T123456",
name: "Acme HQ",
},
auth: {
accessToken: "Workspace access token",
refreshToken: "Workspace refresh token",
expiresAt: "2026-06-15T12:00:00.000Z",
refreshTokenExpiresAt: "2026-09-15T12:00:00.000Z",
},
});
console.log(result);
}
run();using Novu;
using Novu.Models.Components;
using System.Collections.Generic;
var sdk = new NovuSDK(secretKey: "YOUR_SECRET_KEY_HERE");
var res = await sdk.ChannelConnections.CreateAsync(createChannelConnectionRequestDto: new CreateChannelConnectionRequestDto() {
Identifier = "slack-prod-user123-abc4",
SubscriberId = "subscriber-123",
Context = new Dictionary<string, CreateChannelConnectionRequestDtoContext>() {
{ "key", CreateChannelConnectionRequestDtoContext.CreateStr(
"org-acme"
) },
},
ConnectionMode = ConnectionMode.Shared,
IntegrationIdentifier = "slack-prod",
Workspace = new WorkspaceDto() {
Id = "T123456",
Name = "Acme HQ",
},
Auth = new AuthDto() {
AccessToken = "Workspace access token",
},
});
// handle responsedeclare(strict_types=1);
require 'vendor/autoload.php';
use novu;
use novu\Models\Components;
$sdk = novu\Novu::builder()
->setSecurity(
'YOUR_SECRET_KEY_HERE'
)
->build();
$createChannelConnectionRequestDto = new Components\CreateChannelConnectionRequestDto(
identifier: 'slack-prod-user123-abc4',
subscriberId: 'subscriber-123',
context: [
'key' => 'org-acme',
],
connectionMode: Components\ConnectionMode::Shared,
integrationIdentifier: 'slack-prod',
workspace: new Components\WorkspaceDto(
id: 'T123456',
name: 'Acme HQ',
),
auth: new Components\AuthDto(
accessToken: 'Workspace access token',
),
);
$response = $sdk->channelConnections->create(
createChannelConnectionRequestDto: $createChannelConnectionRequestDto
);
if ($response->getChannelConnectionResponseDto !== 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.create(create_channel_connection_request_dto={
"identifier": "slack-prod-user123-abc4",
"subscriber_id": "subscriber-123",
"context": {
"key": "org-acme",
},
"connection_mode": novu_py.ConnectionMode.SHARED,
"integration_identifier": "slack-prod",
"workspace": {
"id": "T123456",
"name": "Acme HQ",
},
"auth": {
"access_token": "Workspace access token",
},
})
# Handle response
print(res)package main
import(
"context"
"github.com/novuhq/novu-go/v3"
"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.Create(ctx, components.CreateChannelConnectionRequestDto{
Identifier: v3.Pointer("slack-prod-user123-abc4"),
SubscriberID: v3.Pointer("subscriber-123"),
Context: map[string]components.CreateChannelConnectionRequestDtoContext{
"key": components.CreateCreateChannelConnectionRequestDtoContextStr(
"org-acme",
),
},
ConnectionMode: components.ConnectionModeShared.ToPointer(),
IntegrationIdentifier: "slack-prod",
Workspace: components.WorkspaceDto{
ID: "T123456",
Name: v3.Pointer("Acme HQ"),
},
Auth: components.AuthDto{
AccessToken: "Workspace access token",
},
}, nil)
if err != nil {
log.Fatal(err)
}
if res.GetChannelConnectionResponseDto != nil {
// handle response
}
}curl --request POST \
--url https://api.novu.co/v1/channel-connections \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"integrationIdentifier": "slack-prod",
"workspace": {
"id": "T123456",
"name": "Acme HQ"
},
"auth": {
"accessToken": "Workspace access token",
"refreshToken": "Workspace refresh token",
"expiresAt": "2026-06-15T12:00:00.000Z",
"refreshTokenExpiresAt": "2026-09-15T12:00:00.000Z"
},
"identifier": "slack-prod-user123-abc4",
"subscriberId": "subscriber-123",
"context": {},
"connectionMode": "shared"
}
'const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
integrationIdentifier: 'slack-prod',
workspace: {id: 'T123456', name: 'Acme HQ'},
auth: {
accessToken: 'Workspace access token',
refreshToken: 'Workspace refresh token',
expiresAt: '2026-06-15T12:00:00.000Z',
refreshTokenExpiresAt: '2026-09-15T12:00:00.000Z'
},
identifier: 'slack-prod-user123-abc4',
subscriberId: 'subscriber-123',
context: {},
connectionMode: 'shared'
})
};
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.post("https://api.novu.co/v1/channel-connections")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"integrationIdentifier\": \"slack-prod\",\n \"workspace\": {\n \"id\": \"T123456\",\n \"name\": \"Acme HQ\"\n },\n \"auth\": {\n \"accessToken\": \"Workspace access token\",\n \"refreshToken\": \"Workspace refresh token\",\n \"expiresAt\": \"2026-06-15T12:00:00.000Z\",\n \"refreshTokenExpiresAt\": \"2026-09-15T12:00:00.000Z\"\n },\n \"identifier\": \"slack-prod-user123-abc4\",\n \"subscriberId\": \"subscriber-123\",\n \"context\": {},\n \"connectionMode\": \"shared\"\n}")
.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::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"integrationIdentifier\": \"slack-prod\",\n \"workspace\": {\n \"id\": \"T123456\",\n \"name\": \"Acme HQ\"\n },\n \"auth\": {\n \"accessToken\": \"Workspace access token\",\n \"refreshToken\": \"Workspace refresh token\",\n \"expiresAt\": \"2026-06-15T12:00:00.000Z\",\n \"refreshTokenExpiresAt\": \"2026-09-15T12:00:00.000Z\"\n },\n \"identifier\": \"slack-prod-user123-abc4\",\n \"subscriberId\": \"subscriber-123\",\n \"context\": {},\n \"connectionMode\": \"shared\"\n}"
response = http.request(request)
puts response.read_body{
"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",
"refreshToken": "Workspace refresh token",
"expiresAt": "2026-06-15T12:00:00.000Z",
"refreshTokenExpiresAt": "2026-09-15T12:00:00.000Z"
},
"createdAt": "<string>",
"updatedAt": "<string>"
}{
"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
Body
The identifier of the integration to use for this channel connection.
"slack-prod"
Show child attributes
Show child attributes
Show child attributes
Show child attributes
The unique identifier for the channel connection. If not provided, one will be generated automatically.
"slack-prod-user123-abc4"
The subscriber ID to link the channel connection to
"subscriber-123"
Show child attributes
Show child attributes
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.
subscriber, shared "shared"
Response
Created
The unique identifier of the channel endpoint.
The channel type (email, sms, push, chat, etc.).
in_app, email, sms, chat, push The provider identifier (e.g., sendgrid, twilio, slack, etc.).
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, 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, webex-messaging, mattermost, ryver, zulip, grafana-on-call, getstream, rocket-chat, whatsapp-business, line, chat-webhook, novu-slack, telegram, sendblue, anthropic, novu-anthropic, anthropic-aws "slack"
The identifier of the integration to use for this channel endpoint.
"slack-prod"
The subscriber ID to which the channel connection is linked
"subscriber-123"
The context of the channel connection
["tenant:org-123", "region:us-east-1"]
Show child attributes
Show child attributes
Show child attributes
Show child attributes
The timestamp indicating when the channel endpoint was created, in ISO 8601 format.
The timestamp indicating when the channel endpoint was last updated, in ISO 8601 format.
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.create({
identifier: "slack-prod-user123-abc4",
subscriberId: "subscriber-123",
context: {
"key": "org-acme",
},
connectionMode: "shared",
integrationIdentifier: "slack-prod",
workspace: {
id: "T123456",
name: "Acme HQ",
},
auth: {
accessToken: "Workspace access token",
refreshToken: "Workspace refresh token",
expiresAt: "2026-06-15T12:00:00.000Z",
refreshTokenExpiresAt: "2026-09-15T12:00:00.000Z",
},
});
console.log(result);
}
run();using Novu;
using Novu.Models.Components;
using System.Collections.Generic;
var sdk = new NovuSDK(secretKey: "YOUR_SECRET_KEY_HERE");
var res = await sdk.ChannelConnections.CreateAsync(createChannelConnectionRequestDto: new CreateChannelConnectionRequestDto() {
Identifier = "slack-prod-user123-abc4",
SubscriberId = "subscriber-123",
Context = new Dictionary<string, CreateChannelConnectionRequestDtoContext>() {
{ "key", CreateChannelConnectionRequestDtoContext.CreateStr(
"org-acme"
) },
},
ConnectionMode = ConnectionMode.Shared,
IntegrationIdentifier = "slack-prod",
Workspace = new WorkspaceDto() {
Id = "T123456",
Name = "Acme HQ",
},
Auth = new AuthDto() {
AccessToken = "Workspace access token",
},
});
// handle responsedeclare(strict_types=1);
require 'vendor/autoload.php';
use novu;
use novu\Models\Components;
$sdk = novu\Novu::builder()
->setSecurity(
'YOUR_SECRET_KEY_HERE'
)
->build();
$createChannelConnectionRequestDto = new Components\CreateChannelConnectionRequestDto(
identifier: 'slack-prod-user123-abc4',
subscriberId: 'subscriber-123',
context: [
'key' => 'org-acme',
],
connectionMode: Components\ConnectionMode::Shared,
integrationIdentifier: 'slack-prod',
workspace: new Components\WorkspaceDto(
id: 'T123456',
name: 'Acme HQ',
),
auth: new Components\AuthDto(
accessToken: 'Workspace access token',
),
);
$response = $sdk->channelConnections->create(
createChannelConnectionRequestDto: $createChannelConnectionRequestDto
);
if ($response->getChannelConnectionResponseDto !== 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.create(create_channel_connection_request_dto={
"identifier": "slack-prod-user123-abc4",
"subscriber_id": "subscriber-123",
"context": {
"key": "org-acme",
},
"connection_mode": novu_py.ConnectionMode.SHARED,
"integration_identifier": "slack-prod",
"workspace": {
"id": "T123456",
"name": "Acme HQ",
},
"auth": {
"access_token": "Workspace access token",
},
})
# Handle response
print(res)package main
import(
"context"
"github.com/novuhq/novu-go/v3"
"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.Create(ctx, components.CreateChannelConnectionRequestDto{
Identifier: v3.Pointer("slack-prod-user123-abc4"),
SubscriberID: v3.Pointer("subscriber-123"),
Context: map[string]components.CreateChannelConnectionRequestDtoContext{
"key": components.CreateCreateChannelConnectionRequestDtoContextStr(
"org-acme",
),
},
ConnectionMode: components.ConnectionModeShared.ToPointer(),
IntegrationIdentifier: "slack-prod",
Workspace: components.WorkspaceDto{
ID: "T123456",
Name: v3.Pointer("Acme HQ"),
},
Auth: components.AuthDto{
AccessToken: "Workspace access token",
},
}, nil)
if err != nil {
log.Fatal(err)
}
if res.GetChannelConnectionResponseDto != nil {
// handle response
}
}curl --request POST \
--url https://api.novu.co/v1/channel-connections \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"integrationIdentifier": "slack-prod",
"workspace": {
"id": "T123456",
"name": "Acme HQ"
},
"auth": {
"accessToken": "Workspace access token",
"refreshToken": "Workspace refresh token",
"expiresAt": "2026-06-15T12:00:00.000Z",
"refreshTokenExpiresAt": "2026-09-15T12:00:00.000Z"
},
"identifier": "slack-prod-user123-abc4",
"subscriberId": "subscriber-123",
"context": {},
"connectionMode": "shared"
}
'const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
integrationIdentifier: 'slack-prod',
workspace: {id: 'T123456', name: 'Acme HQ'},
auth: {
accessToken: 'Workspace access token',
refreshToken: 'Workspace refresh token',
expiresAt: '2026-06-15T12:00:00.000Z',
refreshTokenExpiresAt: '2026-09-15T12:00:00.000Z'
},
identifier: 'slack-prod-user123-abc4',
subscriberId: 'subscriber-123',
context: {},
connectionMode: 'shared'
})
};
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.post("https://api.novu.co/v1/channel-connections")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"integrationIdentifier\": \"slack-prod\",\n \"workspace\": {\n \"id\": \"T123456\",\n \"name\": \"Acme HQ\"\n },\n \"auth\": {\n \"accessToken\": \"Workspace access token\",\n \"refreshToken\": \"Workspace refresh token\",\n \"expiresAt\": \"2026-06-15T12:00:00.000Z\",\n \"refreshTokenExpiresAt\": \"2026-09-15T12:00:00.000Z\"\n },\n \"identifier\": \"slack-prod-user123-abc4\",\n \"subscriberId\": \"subscriber-123\",\n \"context\": {},\n \"connectionMode\": \"shared\"\n}")
.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::Post.new(url)
request["Authorization"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"integrationIdentifier\": \"slack-prod\",\n \"workspace\": {\n \"id\": \"T123456\",\n \"name\": \"Acme HQ\"\n },\n \"auth\": {\n \"accessToken\": \"Workspace access token\",\n \"refreshToken\": \"Workspace refresh token\",\n \"expiresAt\": \"2026-06-15T12:00:00.000Z\",\n \"refreshTokenExpiresAt\": \"2026-09-15T12:00:00.000Z\"\n },\n \"identifier\": \"slack-prod-user123-abc4\",\n \"subscriberId\": \"subscriber-123\",\n \"context\": {},\n \"connectionMode\": \"shared\"\n}"
response = http.request(request)
puts response.read_body{
"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",
"refreshToken": "Workspace refresh token",
"expiresAt": "2026-06-15T12:00:00.000Z",
"refreshTokenExpiresAt": "2026-09-15T12:00:00.000Z"
},
"createdAt": "<string>",
"updatedAt": "<string>"
}{
"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."