Create lead
curl --request POST \
--url https://api.example.com/user/lead \
--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://api.example.com/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 = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'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://api.example.com/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://api.example.com/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 => [
"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.example.com/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("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.example.com/user/lead")
.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://api.example.com/user/lead")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
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
Add a new lead to your Famulor outbound calling campaign via API. Submit contact information, custom variables and trigger AI voice agent calls.
POST
/
user
/
lead
Create lead
curl --request POST \
--url https://api.example.com/user/lead \
--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://api.example.com/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 = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'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://api.example.com/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://api.example.com/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 => [
"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.example.com/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("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.example.com/user/lead")
.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://api.example.com/user/lead")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
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"
}
]
}
}
Famulor 1.0 API (legacy). This page applies only to Famulor 1.0 (
app.famulor.de) and is retained for legacy compatibility. For the current platform, use the Famulor 2.0 API reference.Request Body
string
required
Contact phone number in E.164 format (example: +1234567890)
integer
required
The campaign ID where this lead should be added
object
boolean
Permit creating duplicate leads within the same campaign (default: false)
array
Additional contact persons linked to this lead
Response
string
Success confirmation message
object
The created lead object with all associated data
Show data properties
Show data properties
integer
Unique identifier for the new lead
integer
Campaign identifier this lead is assigned to
string
Lead’s contact number in E.164 format
object
string
Current lead status
string
Creation timestamp
string
Last modification timestamp
object
array
List of secondary contacts created with this lead
{
"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"
}
]
}
}
Related pages: Introduction and Authentication Guide, and API Integration Examples.