Create contacts for a campaign
curl --request POST \
--url https://api.callers.ai/campaigns/{campaignId}/contacts/bulk \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"contacts": [
{
"name": "<string>",
"data": {},
"phoneNumber": "<string>",
"phoneNumbers": [
"<string>"
],
"timezone": "<string>",
"archived": false
}
]
}
'import requests
url = "https://api.callers.ai/campaigns/{campaignId}/contacts/bulk"
payload = { "contacts": [
{
"name": "<string>",
"data": {},
"phoneNumber": "<string>",
"phoneNumbers": ["<string>"],
"timezone": "<string>",
"archived": False
}
] }
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
contacts: [
{
name: '<string>',
data: {},
phoneNumber: '<string>',
phoneNumbers: ['<string>'],
timezone: '<string>',
archived: false
}
]
})
};
fetch('https://api.callers.ai/campaigns/{campaignId}/contacts/bulk', 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.callers.ai/campaigns/{campaignId}/contacts/bulk",
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([
'contacts' => [
[
'name' => '<string>',
'data' => [
],
'phoneNumber' => '<string>',
'phoneNumbers' => [
'<string>'
],
'timezone' => '<string>',
'archived' => false
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json"
],
]);
$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.callers.ai/campaigns/{campaignId}/contacts/bulk"
payload := strings.NewReader("{\n \"contacts\": [\n {\n \"name\": \"<string>\",\n \"data\": {},\n \"phoneNumber\": \"<string>\",\n \"phoneNumbers\": [\n \"<string>\"\n ],\n \"timezone\": \"<string>\",\n \"archived\": false\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<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.callers.ai/campaigns/{campaignId}/contacts/bulk")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"contacts\": [\n {\n \"name\": \"<string>\",\n \"data\": {},\n \"phoneNumber\": \"<string>\",\n \"phoneNumbers\": [\n \"<string>\"\n ],\n \"timezone\": \"<string>\",\n \"archived\": false\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.callers.ai/campaigns/{campaignId}/contacts/bulk")
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 \"contacts\": [\n {\n \"name\": \"<string>\",\n \"data\": {},\n \"phoneNumber\": \"<string>\",\n \"phoneNumbers\": [\n \"<string>\"\n ],\n \"timezone\": \"<string>\",\n \"archived\": false\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"requested": 123,
"added": 123,
"modified": 123,
"contactIds": [
"<string>"
],
"contactDetails": [
{
"contactId": "<string>",
"phoneNumber": "<string>"
}
]
}{
"status": "error",
"message": "<string>",
"data": [
{}
]
}{
"status": "error",
"message": "<string>"
}{
"status": "error",
"message": "<string>"
}Contacts
Create contacts for a campaign
Adds contacts to the specified campaign. Optionally fixes US phone numbers by adding a leading 1 if not present.
POST
/
campaigns
/
{campaignId}
/
contacts
/
bulk
Create contacts for a campaign
curl --request POST \
--url https://api.callers.ai/campaigns/{campaignId}/contacts/bulk \
--header 'Authorization: <api-key>' \
--header 'Content-Type: application/json' \
--data '
{
"contacts": [
{
"name": "<string>",
"data": {},
"phoneNumber": "<string>",
"phoneNumbers": [
"<string>"
],
"timezone": "<string>",
"archived": false
}
]
}
'import requests
url = "https://api.callers.ai/campaigns/{campaignId}/contacts/bulk"
payload = { "contacts": [
{
"name": "<string>",
"data": {},
"phoneNumber": "<string>",
"phoneNumbers": ["<string>"],
"timezone": "<string>",
"archived": False
}
] }
headers = {
"Authorization": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
contacts: [
{
name: '<string>',
data: {},
phoneNumber: '<string>',
phoneNumbers: ['<string>'],
timezone: '<string>',
archived: false
}
]
})
};
fetch('https://api.callers.ai/campaigns/{campaignId}/contacts/bulk', 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.callers.ai/campaigns/{campaignId}/contacts/bulk",
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([
'contacts' => [
[
'name' => '<string>',
'data' => [
],
'phoneNumber' => '<string>',
'phoneNumbers' => [
'<string>'
],
'timezone' => '<string>',
'archived' => false
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: <api-key>",
"Content-Type: application/json"
],
]);
$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.callers.ai/campaigns/{campaignId}/contacts/bulk"
payload := strings.NewReader("{\n \"contacts\": [\n {\n \"name\": \"<string>\",\n \"data\": {},\n \"phoneNumber\": \"<string>\",\n \"phoneNumbers\": [\n \"<string>\"\n ],\n \"timezone\": \"<string>\",\n \"archived\": false\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "<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.callers.ai/campaigns/{campaignId}/contacts/bulk")
.header("Authorization", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"contacts\": [\n {\n \"name\": \"<string>\",\n \"data\": {},\n \"phoneNumber\": \"<string>\",\n \"phoneNumbers\": [\n \"<string>\"\n ],\n \"timezone\": \"<string>\",\n \"archived\": false\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.callers.ai/campaigns/{campaignId}/contacts/bulk")
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 \"contacts\": [\n {\n \"name\": \"<string>\",\n \"data\": {},\n \"phoneNumber\": \"<string>\",\n \"phoneNumbers\": [\n \"<string>\"\n ],\n \"timezone\": \"<string>\",\n \"archived\": false\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"requested": 123,
"added": 123,
"modified": 123,
"contactIds": [
"<string>"
],
"contactDetails": [
{
"contactId": "<string>",
"phoneNumber": "<string>"
}
]
}{
"status": "error",
"message": "<string>",
"data": [
{}
]
}{
"status": "error",
"message": "<string>"
}{
"status": "error",
"message": "<string>"
}Authorizations
Headers
Optional sub organization ID. Must belong to your main organization API key.
Path Parameters
Query Parameters
Will add 1 to the phone number if it doesn't starts with 1
When true, returns detailed contact information including phone numbers and status (created/updated) for each contact. Default is false (returns only contact IDs)
Body
application/json
Array of contacts to create.
Show child attributes
Show child attributes
Response
Number of contacts received in the request
Number of new contacts created
Number of contacts modified
List of IDs for contacts created or modified
Detailed contact information with phone numbers and status (created/updated). Only included when verbose=true
Show child attributes
Show child attributes
⌘I