Place Phone Call
curl --request POST \
--url https://catalystapi.superdashhq.com/api/v1/voice/placeoutboundcall/{workspaceId}/{assistantId} \
--header 'Content-Type: application/json' \
--header 'x-api-key: <x-api-key>' \
--data '
{
"fromNumber": "<string>",
"toNumber": "<string>",
"priority": 123,
"attributes": {
"customField1": "<string>",
"customField2": "<string>",
"customField3": "<string>",
"customField4": "<string>",
"customField5": "<string>",
"customField6": "<string>",
"customField7": "<string>",
"customField8": "<string>"
}
}
'import requests
url = "https://catalystapi.superdashhq.com/api/v1/voice/placeoutboundcall/{workspaceId}/{assistantId}"
payload = {
"fromNumber": "<string>",
"toNumber": "<string>",
"priority": 123,
"attributes": {
"customField1": "<string>",
"customField2": "<string>",
"customField3": "<string>",
"customField4": "<string>",
"customField5": "<string>",
"customField6": "<string>",
"customField7": "<string>",
"customField8": "<string>"
}
}
headers = {
"x-api-key": "<x-api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<x-api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
fromNumber: '<string>',
toNumber: '<string>',
priority: 123,
attributes: {
customField1: '<string>',
customField2: '<string>',
customField3: '<string>',
customField4: '<string>',
customField5: '<string>',
customField6: '<string>',
customField7: '<string>',
customField8: '<string>'
}
})
};
fetch('https://catalystapi.superdashhq.com/api/v1/voice/placeoutboundcall/{workspaceId}/{assistantId}', 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://catalystapi.superdashhq.com/api/v1/voice/placeoutboundcall/{workspaceId}/{assistantId}",
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([
'fromNumber' => '<string>',
'toNumber' => '<string>',
'priority' => 123,
'attributes' => [
'customField1' => '<string>',
'customField2' => '<string>',
'customField3' => '<string>',
'customField4' => '<string>',
'customField5' => '<string>',
'customField6' => '<string>',
'customField7' => '<string>',
'customField8' => '<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <x-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://catalystapi.superdashhq.com/api/v1/voice/placeoutboundcall/{workspaceId}/{assistantId}"
payload := strings.NewReader("{\n \"fromNumber\": \"<string>\",\n \"toNumber\": \"<string>\",\n \"priority\": 123,\n \"attributes\": {\n \"customField1\": \"<string>\",\n \"customField2\": \"<string>\",\n \"customField3\": \"<string>\",\n \"customField4\": \"<string>\",\n \"customField5\": \"<string>\",\n \"customField6\": \"<string>\",\n \"customField7\": \"<string>\",\n \"customField8\": \"<string>\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<x-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://catalystapi.superdashhq.com/api/v1/voice/placeoutboundcall/{workspaceId}/{assistantId}")
.header("x-api-key", "<x-api-key>")
.header("Content-Type", "application/json")
.body("{\n \"fromNumber\": \"<string>\",\n \"toNumber\": \"<string>\",\n \"priority\": 123,\n \"attributes\": {\n \"customField1\": \"<string>\",\n \"customField2\": \"<string>\",\n \"customField3\": \"<string>\",\n \"customField4\": \"<string>\",\n \"customField5\": \"<string>\",\n \"customField6\": \"<string>\",\n \"customField7\": \"<string>\",\n \"customField8\": \"<string>\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://catalystapi.superdashhq.com/api/v1/voice/placeoutboundcall/{workspaceId}/{assistantId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<x-api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"fromNumber\": \"<string>\",\n \"toNumber\": \"<string>\",\n \"priority\": 123,\n \"attributes\": {\n \"customField1\": \"<string>\",\n \"customField2\": \"<string>\",\n \"customField3\": \"<string>\",\n \"customField4\": \"<string>\",\n \"customField5\": \"<string>\",\n \"customField6\": \"<string>\",\n \"customField7\": \"<string>\",\n \"customField8\": \"<string>\"\n }\n}"
response = http.request(request)
puts response.read_body{
"msg": "Call placed to {toNumber}",
"status": "placed",
"callId": "The queueId of the call"
}
{
"msg": "Call to {toNumber} been queued due to concurrent call limit",
"status": "queued",
"callId": "The queueId of the call"
}
{
"msg": "string"
}
{
"msg": "Api key is not valid"
}
{
"msg": "Forbidden"
}
{
"msg": "Server Error"
}
Call
Place Phone Call
Use this API endpoint to immediately initiate a call to a specified number.
POST
/
v1
/
voice
/
placeoutboundcall
/
{workspaceId}
/
{assistantId}
Place Phone Call
curl --request POST \
--url https://catalystapi.superdashhq.com/api/v1/voice/placeoutboundcall/{workspaceId}/{assistantId} \
--header 'Content-Type: application/json' \
--header 'x-api-key: <x-api-key>' \
--data '
{
"fromNumber": "<string>",
"toNumber": "<string>",
"priority": 123,
"attributes": {
"customField1": "<string>",
"customField2": "<string>",
"customField3": "<string>",
"customField4": "<string>",
"customField5": "<string>",
"customField6": "<string>",
"customField7": "<string>",
"customField8": "<string>"
}
}
'import requests
url = "https://catalystapi.superdashhq.com/api/v1/voice/placeoutboundcall/{workspaceId}/{assistantId}"
payload = {
"fromNumber": "<string>",
"toNumber": "<string>",
"priority": 123,
"attributes": {
"customField1": "<string>",
"customField2": "<string>",
"customField3": "<string>",
"customField4": "<string>",
"customField5": "<string>",
"customField6": "<string>",
"customField7": "<string>",
"customField8": "<string>"
}
}
headers = {
"x-api-key": "<x-api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<x-api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
fromNumber: '<string>',
toNumber: '<string>',
priority: 123,
attributes: {
customField1: '<string>',
customField2: '<string>',
customField3: '<string>',
customField4: '<string>',
customField5: '<string>',
customField6: '<string>',
customField7: '<string>',
customField8: '<string>'
}
})
};
fetch('https://catalystapi.superdashhq.com/api/v1/voice/placeoutboundcall/{workspaceId}/{assistantId}', 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://catalystapi.superdashhq.com/api/v1/voice/placeoutboundcall/{workspaceId}/{assistantId}",
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([
'fromNumber' => '<string>',
'toNumber' => '<string>',
'priority' => 123,
'attributes' => [
'customField1' => '<string>',
'customField2' => '<string>',
'customField3' => '<string>',
'customField4' => '<string>',
'customField5' => '<string>',
'customField6' => '<string>',
'customField7' => '<string>',
'customField8' => '<string>'
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-api-key: <x-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://catalystapi.superdashhq.com/api/v1/voice/placeoutboundcall/{workspaceId}/{assistantId}"
payload := strings.NewReader("{\n \"fromNumber\": \"<string>\",\n \"toNumber\": \"<string>\",\n \"priority\": 123,\n \"attributes\": {\n \"customField1\": \"<string>\",\n \"customField2\": \"<string>\",\n \"customField3\": \"<string>\",\n \"customField4\": \"<string>\",\n \"customField5\": \"<string>\",\n \"customField6\": \"<string>\",\n \"customField7\": \"<string>\",\n \"customField8\": \"<string>\"\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<x-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://catalystapi.superdashhq.com/api/v1/voice/placeoutboundcall/{workspaceId}/{assistantId}")
.header("x-api-key", "<x-api-key>")
.header("Content-Type", "application/json")
.body("{\n \"fromNumber\": \"<string>\",\n \"toNumber\": \"<string>\",\n \"priority\": 123,\n \"attributes\": {\n \"customField1\": \"<string>\",\n \"customField2\": \"<string>\",\n \"customField3\": \"<string>\",\n \"customField4\": \"<string>\",\n \"customField5\": \"<string>\",\n \"customField6\": \"<string>\",\n \"customField7\": \"<string>\",\n \"customField8\": \"<string>\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://catalystapi.superdashhq.com/api/v1/voice/placeoutboundcall/{workspaceId}/{assistantId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<x-api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"fromNumber\": \"<string>\",\n \"toNumber\": \"<string>\",\n \"priority\": 123,\n \"attributes\": {\n \"customField1\": \"<string>\",\n \"customField2\": \"<string>\",\n \"customField3\": \"<string>\",\n \"customField4\": \"<string>\",\n \"customField5\": \"<string>\",\n \"customField6\": \"<string>\",\n \"customField7\": \"<string>\",\n \"customField8\": \"<string>\"\n }\n}"
response = http.request(request)
puts response.read_body{
"msg": "Call placed to {toNumber}",
"status": "placed",
"callId": "The queueId of the call"
}
{
"msg": "Call to {toNumber} been queued due to concurrent call limit",
"status": "queued",
"callId": "The queueId of the call"
}
{
"msg": "string"
}
{
"msg": "Api key is not valid"
}
{
"msg": "Forbidden"
}
{
"msg": "Server Error"
}
Authorizations
string
required
Path Parameters
string
required
The ID associated with a workspace.
string
required
The ID associated with an assistant.
Body Parameters
string
required
The number from which the call will be placed and it should be linked to the assistant.
string
required
The number to which the call will be placed
number
default:1
Indicates the priority level assigned to the call.
Allowed Values:
Where,
Allowed Values:
0, 1, 2. Where,
0 = Low Priority 1 = Medium Prioriry 2 = High Priorityobject
Additional attributes for the call
Show Properties
Show Properties
string
Any value you want to dynamically access while placing the call, like first name, last name, company name, etc.
string
Any value you want to dynamically access while placing the call, like first name, last name, company name, etc.
string
Any value you want to dynamically access while placing the call, like first name, last name, company name, etc.
string
Any value you want to dynamically access while placing the call, like first name, last name, company name, etc.
string
Any value you want to dynamically access while placing the call, like first name, last name, company name, etc.
string
Any value you want to dynamically access while placing the call, like first name, last name, company name, etc.
string
Any value you want to dynamically access while placing the call, like first name, last name, company name, etc.
string
Any value you want to dynamically access while placing the call, like first name, last name, company name, etc.
Response
string
Confirmation message indicating the call was placed
string
The status of the call
string
A newly created Id for the call
{
"msg": "Call placed to {toNumber}",
"status": "placed",
"callId": "The queueId of the call"
}
{
"msg": "Call to {toNumber} been queued due to concurrent call limit",
"status": "queued",
"callId": "The queueId of the call"
}
{
"msg": "string"
}
{
"msg": "Api key is not valid"
}
{
"msg": "Forbidden"
}
{
"msg": "Server Error"
}
Retrieve Call Properties Post-Call
By adding a webhook, all call properties—such as summary, transcript, callStartTime, and more—are automatically sent via the webhook. Additionally, you can extract custom variables using the extraction option available in the Dashboard Modules section and include them in the same webhook. Note: Webhooks are triggered at the end of the call.
⌘I