curl --request POST \
--url https://api.talkpilot.io/v1/agents/{agentId}/employees \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"name": "Max Mustermann",
"phone_number": "+491701234567",
"email": "max@example.com",
"status": "anwesend",
"active": true,
"get_mail": true
}
'import requests
url = "https://api.talkpilot.io/v1/agents/{agentId}/employees"
payload = {
"name": "Max Mustermann",
"phone_number": "+491701234567",
"email": "max@example.com",
"status": "anwesend",
"active": True,
"get_mail": True
}
headers = {
"X-API-Key": "<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': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'Max Mustermann',
phone_number: '+491701234567',
email: 'max@example.com',
status: 'anwesend',
active: true,
get_mail: true
})
};
fetch('https://api.talkpilot.io/v1/agents/{agentId}/employees', 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.talkpilot.io/v1/agents/{agentId}/employees",
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' => 'Max Mustermann',
'phone_number' => '+491701234567',
'email' => 'max@example.com',
'status' => 'anwesend',
'active' => true,
'get_mail' => true
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-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.talkpilot.io/v1/agents/{agentId}/employees"
payload := strings.NewReader("{\n \"name\": \"Max Mustermann\",\n \"phone_number\": \"+491701234567\",\n \"email\": \"max@example.com\",\n \"status\": \"anwesend\",\n \"active\": true,\n \"get_mail\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-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.talkpilot.io/v1/agents/{agentId}/employees")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Max Mustermann\",\n \"phone_number\": \"+491701234567\",\n \"email\": \"max@example.com\",\n \"status\": \"anwesend\",\n \"active\": true,\n \"get_mail\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.talkpilot.io/v1/agents/{agentId}/employees")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Max Mustermann\",\n \"phone_number\": \"+491701234567\",\n \"email\": \"max@example.com\",\n \"status\": \"anwesend\",\n \"active\": true,\n \"get_mail\": true\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"phone_number": "<string>",
"email": "jsmith@example.com",
"status": "anwesend",
"active": true,
"get_mail": true,
"agent_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"organization_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"back_at_work_at": "2023-12-25",
"notdienst_bereiche": [
"<string>"
],
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}Create an employee
Creates the employee and links it to the agent in the same request
(the link is what the dashboard’s agent detail page and the runtime
lookup by agent use). If the link cannot be written, the employee is
not created and the request returns 500.
curl --request POST \
--url https://api.talkpilot.io/v1/agents/{agentId}/employees \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <api-key>' \
--data '
{
"name": "Max Mustermann",
"phone_number": "+491701234567",
"email": "max@example.com",
"status": "anwesend",
"active": true,
"get_mail": true
}
'import requests
url = "https://api.talkpilot.io/v1/agents/{agentId}/employees"
payload = {
"name": "Max Mustermann",
"phone_number": "+491701234567",
"email": "max@example.com",
"status": "anwesend",
"active": True,
"get_mail": True
}
headers = {
"X-API-Key": "<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': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'Max Mustermann',
phone_number: '+491701234567',
email: 'max@example.com',
status: 'anwesend',
active: true,
get_mail: true
})
};
fetch('https://api.talkpilot.io/v1/agents/{agentId}/employees', 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.talkpilot.io/v1/agents/{agentId}/employees",
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' => 'Max Mustermann',
'phone_number' => '+491701234567',
'email' => 'max@example.com',
'status' => 'anwesend',
'active' => true,
'get_mail' => true
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-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.talkpilot.io/v1/agents/{agentId}/employees"
payload := strings.NewReader("{\n \"name\": \"Max Mustermann\",\n \"phone_number\": \"+491701234567\",\n \"email\": \"max@example.com\",\n \"status\": \"anwesend\",\n \"active\": true,\n \"get_mail\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-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.talkpilot.io/v1/agents/{agentId}/employees")
.header("X-API-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Max Mustermann\",\n \"phone_number\": \"+491701234567\",\n \"email\": \"max@example.com\",\n \"status\": \"anwesend\",\n \"active\": true,\n \"get_mail\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.talkpilot.io/v1/agents/{agentId}/employees")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Max Mustermann\",\n \"phone_number\": \"+491701234567\",\n \"email\": \"max@example.com\",\n \"status\": \"anwesend\",\n \"active\": true,\n \"get_mail\": true\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"phone_number": "<string>",
"email": "jsmith@example.com",
"status": "anwesend",
"active": true,
"get_mail": true,
"agent_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"organization_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"back_at_work_at": "2023-12-25",
"notdienst_bereiche": [
"<string>"
],
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}Authorizations
API key for external access. Format: tp_live_<32-hex-chars>.
Create keys in the TalkPilot Dashboard under Settings > API.
Path Parameters
Agent UUID
Body
1 - 25530Employee availability status:
anwesend— Present / availableurlaub— On vacationkrank— Sick leaveweiterbildung— In trainingnotdienst— Emergency dutyim_termin— In a meetingausser_haus— Out of office
anwesend, urlaub, krank, weiterbildung, notdienst, im_termin, ausser_haus Only kept when status is notdienst. Trimmed and de-duplicated; empty array becomes null. Required (at least one area) for status notdienst when the organization has more than one notdienst_bereiche entry
Response
Employee created
Employee availability status:
anwesend— Present / availableurlaub— On vacationkrank— Sick leaveweiterbildung— In trainingnotdienst— Emergency dutyim_termin— In a meetingausser_haus— Out of office
anwesend, urlaub, krank, weiterbildung, notdienst, im_termin, ausser_haus Whether the employee receives email notifications
Expected return date (YYYY-MM-DD) while absent
Emergency-duty areas of the current shift (from the organization's notdienst_bereiche; one employee can cover several). Cleared automatically when the status leaves notdienst