Create lead
curl --request POST \
--url https://app.autocalls.ai/api/user/lead \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"phone_number": "<string>",
"campaign_id": 123,
"variables": {
"customer_name": "<string>",
"email": "<string>"
},
"allow_dupplicate": true,
"secondary_contacts": [
{
"phone_number": "<string>",
"variables": {
"customer_name": "<string>",
"email": "<string>"
}
}
]
}
'import requests
url = "https://app.autocalls.ai/api/user/lead"
payload = {
"phone_number": "<string>",
"campaign_id": 123,
"variables": {
"customer_name": "<string>",
"email": "<string>"
},
"allow_dupplicate": True,
"secondary_contacts": [
{
"phone_number": "<string>",
"variables": {
"customer_name": "<string>",
"email": "<string>"
}
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
phone_number: '<string>',
campaign_id: 123,
variables: {customer_name: '<string>', email: '<string>'},
allow_dupplicate: true,
secondary_contacts: [
{
phone_number: '<string>',
variables: {customer_name: '<string>', email: '<string>'}
}
]
})
};
fetch('https://app.autocalls.ai/api/user/lead', 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://app.autocalls.ai/api/user/lead",
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([
'phone_number' => '<string>',
'campaign_id' => 123,
'variables' => [
'customer_name' => '<string>',
'email' => '<string>'
],
'allow_dupplicate' => true,
'secondary_contacts' => [
[
'phone_number' => '<string>',
'variables' => [
'customer_name' => '<string>',
'email' => '<string>'
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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://app.autocalls.ai/api/user/lead"
payload := strings.NewReader("{\n \"phone_number\": \"<string>\",\n \"campaign_id\": 123,\n \"variables\": {\n \"customer_name\": \"<string>\",\n \"email\": \"<string>\"\n },\n \"allow_dupplicate\": true,\n \"secondary_contacts\": [\n {\n \"phone_number\": \"<string>\",\n \"variables\": {\n \"customer_name\": \"<string>\",\n \"email\": \"<string>\"\n }\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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://app.autocalls.ai/api/user/lead")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"phone_number\": \"<string>\",\n \"campaign_id\": 123,\n \"variables\": {\n \"customer_name\": \"<string>\",\n \"email\": \"<string>\"\n },\n \"allow_dupplicate\": true,\n \"secondary_contacts\": [\n {\n \"phone_number\": \"<string>\",\n \"variables\": {\n \"customer_name\": \"<string>\",\n \"email\": \"<string>\"\n }\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.autocalls.ai/api/user/lead")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"phone_number\": \"<string>\",\n \"campaign_id\": 123,\n \"variables\": {\n \"customer_name\": \"<string>\",\n \"email\": \"<string>\"\n },\n \"allow_dupplicate\": true,\n \"secondary_contacts\": [\n {\n \"phone_number\": \"<string>\",\n \"variables\": {\n \"customer_name\": \"<string>\",\n \"email\": \"<string>\"\n }\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"message": "Lead created successfully",
"data": {
"id": 1,
"campaign_id": 1,
"phone_number": "+1234567890",
"variables": {
"customer_name": "John Doe",
"email": "john.doe@example.com"
},
"status": "created",
"created_at": "2025-06-30 11:53:20",
"updated_at": "2025-06-30 11:53:20",
"campaign": {
"id": 1,
"name": "My new campaign"
},
"secondary_contacts": [
{
"id": 2,
"phone_number": "+1234567891",
"variables": {
"customer_name": "Jane Doe Secondary",
"email": "jane.doe.secondary@example.com"
},
"status": "created",
"created_at": "2025-06-30 11:53:20",
"updated_at": "2025-06-30 11:53:20"
},
{
"id": 3,
"phone_number": "+1234567892",
"variables": {
"customer_name": "Bob Doe Office",
"email": "bob.doe.office@example.com"
},
"status": "created",
"created_at": "2025-06-30 11:53:20",
"updated_at": "2025-06-30 11:53:20"
}
]
}
}
Leads
Create lead
Create a new lead in the HeyFred system
POST
/
user
/
lead
Create lead
curl --request POST \
--url https://app.autocalls.ai/api/user/lead \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"phone_number": "<string>",
"campaign_id": 123,
"variables": {
"customer_name": "<string>",
"email": "<string>"
},
"allow_dupplicate": true,
"secondary_contacts": [
{
"phone_number": "<string>",
"variables": {
"customer_name": "<string>",
"email": "<string>"
}
}
]
}
'import requests
url = "https://app.autocalls.ai/api/user/lead"
payload = {
"phone_number": "<string>",
"campaign_id": 123,
"variables": {
"customer_name": "<string>",
"email": "<string>"
},
"allow_dupplicate": True,
"secondary_contacts": [
{
"phone_number": "<string>",
"variables": {
"customer_name": "<string>",
"email": "<string>"
}
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
phone_number: '<string>',
campaign_id: 123,
variables: {customer_name: '<string>', email: '<string>'},
allow_dupplicate: true,
secondary_contacts: [
{
phone_number: '<string>',
variables: {customer_name: '<string>', email: '<string>'}
}
]
})
};
fetch('https://app.autocalls.ai/api/user/lead', 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://app.autocalls.ai/api/user/lead",
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([
'phone_number' => '<string>',
'campaign_id' => 123,
'variables' => [
'customer_name' => '<string>',
'email' => '<string>'
],
'allow_dupplicate' => true,
'secondary_contacts' => [
[
'phone_number' => '<string>',
'variables' => [
'customer_name' => '<string>',
'email' => '<string>'
]
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"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://app.autocalls.ai/api/user/lead"
payload := strings.NewReader("{\n \"phone_number\": \"<string>\",\n \"campaign_id\": 123,\n \"variables\": {\n \"customer_name\": \"<string>\",\n \"email\": \"<string>\"\n },\n \"allow_dupplicate\": true,\n \"secondary_contacts\": [\n {\n \"phone_number\": \"<string>\",\n \"variables\": {\n \"customer_name\": \"<string>\",\n \"email\": \"<string>\"\n }\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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://app.autocalls.ai/api/user/lead")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"phone_number\": \"<string>\",\n \"campaign_id\": 123,\n \"variables\": {\n \"customer_name\": \"<string>\",\n \"email\": \"<string>\"\n },\n \"allow_dupplicate\": true,\n \"secondary_contacts\": [\n {\n \"phone_number\": \"<string>\",\n \"variables\": {\n \"customer_name\": \"<string>\",\n \"email\": \"<string>\"\n }\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.autocalls.ai/api/user/lead")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"phone_number\": \"<string>\",\n \"campaign_id\": 123,\n \"variables\": {\n \"customer_name\": \"<string>\",\n \"email\": \"<string>\"\n },\n \"allow_dupplicate\": true,\n \"secondary_contacts\": [\n {\n \"phone_number\": \"<string>\",\n \"variables\": {\n \"customer_name\": \"<string>\",\n \"email\": \"<string>\"\n }\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"message": "Lead created successfully",
"data": {
"id": 1,
"campaign_id": 1,
"phone_number": "+1234567890",
"variables": {
"customer_name": "John Doe",
"email": "john.doe@example.com"
},
"status": "created",
"created_at": "2025-06-30 11:53:20",
"updated_at": "2025-06-30 11:53:20",
"campaign": {
"id": 1,
"name": "My new campaign"
},
"secondary_contacts": [
{
"id": 2,
"phone_number": "+1234567891",
"variables": {
"customer_name": "Jane Doe Secondary",
"email": "jane.doe.secondary@example.com"
},
"status": "created",
"created_at": "2025-06-30 11:53:20",
"updated_at": "2025-06-30 11:53:20"
},
{
"id": 3,
"phone_number": "+1234567892",
"variables": {
"customer_name": "Bob Doe Office",
"email": "bob.doe.office@example.com"
},
"status": "created",
"created_at": "2025-06-30 11:53:20",
"updated_at": "2025-06-30 11:53:20"
}
]
}
}
This endpoint allows you to create a new lead in the HeyFred system.
Request body
string
required
The phone number of the lead in E.164 format (e.g. +1234567890)
integer
required
The ID of the campaign to create the lead for
object
Custom variables to pass to the lead. You can include any variables that are defined on your assistant (see Call variables). The examples below are just for illustration — use your own variable names as configured in the assistant settings.
boolean
Whether to allow duplicate leads in a campaign.
array
Array of secondary contact leads to create along with the main lead
Show secondary_contacts properties
Show secondary_contacts properties
Response
string
default:"Lead created successfully"
The message of the response
object
The lead data object
Show data properties
Show data properties
integer
The unique ID of the created lead
integer
The ID of the campaign this lead belongs to
string
The phone number of the lead in E.164 format
object
string
default:"created"
The status of the lead
string
The timestamp when the lead was created
string
The timestamp when the lead was last updated
object
array
Array of secondary contact leads associated with this lead
Show secondary_contacts properties
Show secondary_contacts properties
integer
The id of the secondary contact lead
string
The phone number of the secondary contact in E.164 format
object
The variables associated with the secondary contact
string
The status of the secondary contact
string
The created at date of the secondary contact
string
The updated at date of the secondary contact
{
"message": "Lead created successfully",
"data": {
"id": 1,
"campaign_id": 1,
"phone_number": "+1234567890",
"variables": {
"customer_name": "John Doe",
"email": "john.doe@example.com"
},
"status": "created",
"created_at": "2025-06-30 11:53:20",
"updated_at": "2025-06-30 11:53:20",
"campaign": {
"id": 1,
"name": "My new campaign"
},
"secondary_contacts": [
{
"id": 2,
"phone_number": "+1234567891",
"variables": {
"customer_name": "Jane Doe Secondary",
"email": "jane.doe.secondary@example.com"
},
"status": "created",
"created_at": "2025-06-30 11:53:20",
"updated_at": "2025-06-30 11:53:20"
},
{
"id": 3,
"phone_number": "+1234567892",
"variables": {
"customer_name": "Bob Doe Office",
"email": "bob.doe.office@example.com"
},
"status": "created",
"created_at": "2025-06-30 11:53:20",
"updated_at": "2025-06-30 11:53:20"
}
]
}
}
⌘I

