Skip to main content
POST
/
api
/
v1
/
channels
/
Typescript (SDK)
import { SyllableSDK } from "syllable-sdk";

const syllableSDK = new SyllableSDK({
  apiKeyHeader: process.env["SYLLABLESDK_API_KEY_HEADER"] ?? "",
});

async function run() {
  const result = await syllableSDK.channels.create({
    name: "twilio",
    channelService: "sip",
    supportedModes: "chat,voice",
    isSystemChannel: false,
    config: {
      accountSid: "AC123...",
      authToken: "sometoken",
      providerCredentials: {
        "api_key": "atk123",
        "username": "test_username",
      },
      telephony: {
        preInputTimeout: 1.2,
        overallInputTimeout: 20,
        interruptibility: "dtmf_only",
        passiveSpeechInputEnabled: true,
        passiveInputStart: 0.5,
      },
      email: {
        sendingDomain: "mail.example.com",
      },
    },
  });

  console.log(result);
}

run();
import os
from syllable_sdk import SyllableSDK, models


with SyllableSDK(
api_key_header=os.getenv("SYLLABLESDK_API_KEY_HEADER", ""),
) as ss_client:

res = ss_client.channels.create(request={
"name": "twilio",
"channel_service": models.ChannelServices.SIP,
"supported_modes": "chat,voice",
"is_system_channel": False,
"config": {
"account_sid": "AC123...",
"auth_token": "sometoken",
"provider_credentials": {
"api_key": "atk123",
"username": "test_username",
},
"telephony": {
"pre_input_timeout": 1.2,
"overall_input_timeout": 20,
"interruptibility": "dtmf_only",
"passive_speech_input_enabled": True,
"passive_input_start": 0.5,
},
"email": {
"sending_domain": "mail.example.com",
},
},
})

# Handle response
print(res)
curl --request POST \
--url https://api.syllable.cloud/api/v1/channels/ \
--header 'Content-Type: application/json' \
--header 'Syllable-API-Key: <api-key>' \
--data '
{
"name": "<string>",
"config": {
"account_sid": "AC123...",
"auth_token": "sometoken",
"provider_credentials": {
"api_key": "atk123",
"username": "test_username"
},
"telephony": {
"interruptibility": "dtmf_only",
"overall_input_timeout": 20,
"passive_input_start": 0.5,
"passive_speech_input_enabled": true,
"pre_input_timeout": 1.2
},
"email": {
"sending_domain": "mail.example.com"
}
},
"supported_modes": "chat,voice",
"is_system_channel": true
}
'
const options = {
method: 'POST',
headers: {'Syllable-API-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
config: {
account_sid: 'AC123...',
auth_token: 'sometoken',
provider_credentials: {api_key: 'atk123', username: 'test_username'},
telephony: {
interruptibility: 'dtmf_only',
overall_input_timeout: 20,
passive_input_start: 0.5,
passive_speech_input_enabled: true,
pre_input_timeout: 1.2
},
email: {sending_domain: 'mail.example.com'}
},
supported_modes: 'chat,voice',
is_system_channel: true
})
};

fetch('https://api.syllable.cloud/api/v1/channels/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "https://api.syllable.cloud/api/v1/channels/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'config' => [
'account_sid' => 'AC123...',
'auth_token' => 'sometoken',
'provider_credentials' => [
'api_key' => 'atk123',
'username' => 'test_username'
],
'telephony' => [
'interruptibility' => 'dtmf_only',
'overall_input_timeout' => 20,
'passive_input_start' => 0.5,
'passive_speech_input_enabled' => true,
'pre_input_timeout' => 1.2
],
'email' => [
'sending_domain' => 'mail.example.com'
]
],
'supported_modes' => 'chat,voice',
'is_system_channel' => true
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"Syllable-API-Key: <api-key>"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"strings"
"net/http"
"io"
)

func main() {

url := "https://api.syllable.cloud/api/v1/channels/"

payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"config\": {\n \"account_sid\": \"AC123...\",\n \"auth_token\": \"sometoken\",\n \"provider_credentials\": {\n \"api_key\": \"atk123\",\n \"username\": \"test_username\"\n },\n \"telephony\": {\n \"interruptibility\": \"dtmf_only\",\n \"overall_input_timeout\": 20,\n \"passive_input_start\": 0.5,\n \"passive_speech_input_enabled\": true,\n \"pre_input_timeout\": 1.2\n },\n \"email\": {\n \"sending_domain\": \"mail.example.com\"\n }\n },\n \"supported_modes\": \"chat,voice\",\n \"is_system_channel\": true\n}")

req, _ := http.NewRequest("POST", url, payload)

req.Header.Add("Syllable-API-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.post("https://api.syllable.cloud/api/v1/channels/")
.header("Syllable-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"config\": {\n \"account_sid\": \"AC123...\",\n \"auth_token\": \"sometoken\",\n \"provider_credentials\": {\n \"api_key\": \"atk123\",\n \"username\": \"test_username\"\n },\n \"telephony\": {\n \"interruptibility\": \"dtmf_only\",\n \"overall_input_timeout\": 20,\n \"passive_input_start\": 0.5,\n \"passive_speech_input_enabled\": true,\n \"pre_input_timeout\": 1.2\n },\n \"email\": {\n \"sending_domain\": \"mail.example.com\"\n }\n },\n \"supported_modes\": \"chat,voice\",\n \"is_system_channel\": true\n}")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.syllable.cloud/api/v1/channels/")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Syllable-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"config\": {\n \"account_sid\": \"AC123...\",\n \"auth_token\": \"sometoken\",\n \"provider_credentials\": {\n \"api_key\": \"atk123\",\n \"username\": \"test_username\"\n },\n \"telephony\": {\n \"interruptibility\": \"dtmf_only\",\n \"overall_input_timeout\": 20,\n \"passive_input_start\": 0.5,\n \"passive_speech_input_enabled\": true,\n \"pre_input_timeout\": 1.2\n },\n \"email\": {\n \"sending_domain\": \"mail.example.com\"\n }\n },\n \"supported_modes\": \"chat,voice\",\n \"is_system_channel\": true\n}"

response = http.request(request)
puts response.read_body
{
  "name": "<string>",
  "id": 123,
  "supported_modes": "chat,voice",
  "is_system_channel": true,
  "config": {
    "telephony": {
      "interruptibility": "dtmf_only",
      "overall_input_timeout": 20,
      "passive_input_start": 0.5,
      "passive_speech_input_enabled": true,
      "pre_input_timeout": 1.2
    }
  }
}
{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}

Authorizations

Syllable-API-Key
string
header
required

Body

application/json

Request model to create a channel through the organizations API

name
string
required

The channel name

Example:

"twilio"

channel_service
enum<string>
required

The service that facilitates communication on the channel

Available options:
sip,
twilio,
email,
webchat,
africastalking,
whatsapp
Example:

"webchat"

config
OrganizationChannelConfig · object
required

The configuration of the channel

Examples:
{
"account_sid": "AC123",
"auth_token": "sometoken",
"telephony": {
"interruptibility": "dtmf_only",
"passive_input_start": 0.5,
"passive_speech_input_enabled": true,
"pre_input_timeout": 3
}
}
{
"provider_credentials": {
"api_key": "atk123",
"username": "test_username"
},
"telephony": {
"interruptibility": "dtmf_only",
"passive_input_start": 0.5,
"passive_speech_input_enabled": true,
"pre_input_timeout": 3
}
}
supported_modes
string | null

The comma-delimited list of supported modes for the channel, which defines the possible communication methods for channel targets linked to it.

Example:

"chat,voice"

is_system_channel
boolean
default:true

Whether the channel is a built-in system channel (i.e., is not customizable)

Example:

false

Response

Successful Response

name
string
required

The channel name

Example:

"syllable-webchat"

channel_service
enum<string>
required

The service that facilitates communication on the channel

Available options:
sip,
twilio,
email,
webchat,
africastalking,
whatsapp
Example:

"webchat"

id
integer
required

The channel ID

supported_modes
string | null

The comma-delimited list of supported modes for the channel, which defines the possible communication methods for channel targets linked to it.

Example:

"chat,voice"

is_system_channel
boolean
default:true

Whether the channel is a built-in system channel (i.e., is not customizable)

Example:

false

config
ChannelConfigView · object | null

Configuration for the channel

Example:
{
"telephony": {
"interruptibility": "dtmf_only",
"overall_input_timeout": 20,
"passive_input_start": 0.5,
"passive_speech_input_enabled": true,
"pre_input_timeout": 1.2
}
}