curl --request POST \
--url https://api.meetzy.io/call \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"phone": "<string>",
"playbook_id": "<string>",
"version_id": "<string>",
"voice_id": "<string>",
"voice_model": "<string>",
"language": "<string>",
"interrupt": true,
"<custom_param_1>": "<string>",
"<custom_param_2>": "<string>",
"<custom_param_N>": "<string>"
}
'import requests
url = "https://api.meetzy.io/call"
payload = {
"phone": "<string>",
"playbook_id": "<string>",
"version_id": "<string>",
"voice_id": "<string>",
"voice_model": "<string>",
"language": "<string>",
"interrupt": True,
"<custom_param_1>": "<string>",
"<custom_param_2>": "<string>",
"<custom_param_N>": "<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: '<string>',
playbook_id: '<string>',
version_id: '<string>',
voice_id: '<string>',
voice_model: '<string>',
language: '<string>',
interrupt: true,
'<custom_param_1>': '<string>',
'<custom_param_2>': '<string>',
'<custom_param_N>': '<string>'
})
};
fetch('https://api.meetzy.io/call', 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.meetzy.io/call",
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' => '<string>',
'playbook_id' => '<string>',
'version_id' => '<string>',
'voice_id' => '<string>',
'voice_model' => '<string>',
'language' => '<string>',
'interrupt' => true,
'<custom_param_1>' => '<string>',
'<custom_param_2>' => '<string>',
'<custom_param_N>' => '<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://api.meetzy.io/call"
payload := strings.NewReader("{\n \"phone\": \"<string>\",\n \"playbook_id\": \"<string>\",\n \"version_id\": \"<string>\",\n \"voice_id\": \"<string>\",\n \"voice_model\": \"<string>\",\n \"language\": \"<string>\",\n \"interrupt\": true,\n \"<custom_param_1>\": \"<string>\",\n \"<custom_param_2>\": \"<string>\",\n \"<custom_param_N>\": \"<string>\"\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://api.meetzy.io/call")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"phone\": \"<string>\",\n \"playbook_id\": \"<string>\",\n \"version_id\": \"<string>\",\n \"voice_id\": \"<string>\",\n \"voice_model\": \"<string>\",\n \"language\": \"<string>\",\n \"interrupt\": true,\n \"<custom_param_1>\": \"<string>\",\n \"<custom_param_2>\": \"<string>\",\n \"<custom_param_N>\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.meetzy.io/call")
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\": \"<string>\",\n \"playbook_id\": \"<string>\",\n \"version_id\": \"<string>\",\n \"voice_id\": \"<string>\",\n \"voice_model\": \"<string>\",\n \"language\": \"<string>\",\n \"interrupt\": true,\n \"<custom_param_1>\": \"<string>\",\n \"<custom_param_2>\": \"<string>\",\n \"<custom_param_N>\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"success": true,
"message": "<string>"
}{
"error": true,
"message": "<string>"
}Init a call
API that start a call using a pre-trained playbook.
curl --request POST \
--url https://api.meetzy.io/call \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"phone": "<string>",
"playbook_id": "<string>",
"version_id": "<string>",
"voice_id": "<string>",
"voice_model": "<string>",
"language": "<string>",
"interrupt": true,
"<custom_param_1>": "<string>",
"<custom_param_2>": "<string>",
"<custom_param_N>": "<string>"
}
'import requests
url = "https://api.meetzy.io/call"
payload = {
"phone": "<string>",
"playbook_id": "<string>",
"version_id": "<string>",
"voice_id": "<string>",
"voice_model": "<string>",
"language": "<string>",
"interrupt": True,
"<custom_param_1>": "<string>",
"<custom_param_2>": "<string>",
"<custom_param_N>": "<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: '<string>',
playbook_id: '<string>',
version_id: '<string>',
voice_id: '<string>',
voice_model: '<string>',
language: '<string>',
interrupt: true,
'<custom_param_1>': '<string>',
'<custom_param_2>': '<string>',
'<custom_param_N>': '<string>'
})
};
fetch('https://api.meetzy.io/call', 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.meetzy.io/call",
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' => '<string>',
'playbook_id' => '<string>',
'version_id' => '<string>',
'voice_id' => '<string>',
'voice_model' => '<string>',
'language' => '<string>',
'interrupt' => true,
'<custom_param_1>' => '<string>',
'<custom_param_2>' => '<string>',
'<custom_param_N>' => '<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://api.meetzy.io/call"
payload := strings.NewReader("{\n \"phone\": \"<string>\",\n \"playbook_id\": \"<string>\",\n \"version_id\": \"<string>\",\n \"voice_id\": \"<string>\",\n \"voice_model\": \"<string>\",\n \"language\": \"<string>\",\n \"interrupt\": true,\n \"<custom_param_1>\": \"<string>\",\n \"<custom_param_2>\": \"<string>\",\n \"<custom_param_N>\": \"<string>\"\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://api.meetzy.io/call")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"phone\": \"<string>\",\n \"playbook_id\": \"<string>\",\n \"version_id\": \"<string>\",\n \"voice_id\": \"<string>\",\n \"voice_model\": \"<string>\",\n \"language\": \"<string>\",\n \"interrupt\": true,\n \"<custom_param_1>\": \"<string>\",\n \"<custom_param_2>\": \"<string>\",\n \"<custom_param_N>\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.meetzy.io/call")
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\": \"<string>\",\n \"playbook_id\": \"<string>\",\n \"version_id\": \"<string>\",\n \"voice_id\": \"<string>\",\n \"voice_model\": \"<string>\",\n \"language\": \"<string>\",\n \"interrupt\": true,\n \"<custom_param_1>\": \"<string>\",\n \"<custom_param_2>\": \"<string>\",\n \"<custom_param_N>\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"success": true,
"message": "<string>"
}{
"error": true,
"message": "<string>"
}Overview
This endpoint initiates an outbound call using a pre-trained playbook. The call will be made using your configured phone number and the AI will follow the playbook’s instructions.Version Control
By default, this endpoint uses the production version of your playbook. This ensures that all API calls use the same configuration you’ve designated as production-ready in the dashboard.version_id parameter to use a specific version of your playbook. This is useful for testing new versions before marking them as production. See Agent Versioning for more details.Default Behavior
When you call this endpoint without aversion_id:
- The system looks for the playbook’s production version
- If found, it uses that version’s configuration (prompt, voice, settings, etc.)
- If no versions exist, it falls back to the current playbook configuration
Using a Specific Version
{
"phone": "+34600000000",
"playbook_id": "your-playbook-id",
"version_id": "optional-version-uuid"
}
Response
A successful response includes the call ID which you can use to track the call status:{
"success": true,
"id": "call-uuid",
"message": "Call processing started"
}
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
Params to execute the call
The phone to call with country prefix (e.g. +34600000000).
The id of the playbook you want to use to make the call. You can get the list of playbooks using your dashboard (/playbook endpoint will be available soon).
Optional. The ID of a specific playbook version to use for this call. If not provided, the system will automatically use the version marked as 'production'. This allows you to test specific versions or use historical configurations.
The number of the voice to use (values: 1, 2, 3, 4, 5, 6, 7) - Default 6.
Choose from our speech models: - 'fast' (less latency, nice voices) or 'human' (our natural sounding voices - (beta)) - Default model: 'human'
The language used by Flark during the call (values: ES, EN, FR, DE, IT, PT, ...) - Default ES.
If the user can interrupt to the IA during the call - Default false.
A custom param like email, firstname, lastname, email, program_of_insterest, etc. Flark will use this param to personalize the call.
A custom param like email, firstname, lastname, email, program_of_insterest, etc. Flark will use this param to personalize the call.
You can add as many custom params as you want. Flark will use this param to personalize the call.
Was this page helpful?

