Update a scheduled test job
Updates the specified scheduled test job.
PATCH
/
ai
/
tests
/
schedules
/
v1
/
cron-jobs
/
{id}
Update a scheduled test job
curl --request PATCH \
--url https://api.telnyx.com/v2/ai/tests/schedules/v1/cron-jobs/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Nightly regression - updated",
"notify_on": "both",
"is_active": true,
"crontab_expression": "0 4 * * *"
}
'import requests
url = "https://api.telnyx.com/v2/ai/tests/schedules/v1/cron-jobs/{id}"
payload = {
"name": "Nightly regression - updated",
"notify_on": "both",
"is_active": True,
"crontab_expression": "0 4 * * *"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'Nightly regression - updated',
notify_on: 'both',
is_active: true,
crontab_expression: '0 4 * * *'
})
};
fetch('https://api.telnyx.com/v2/ai/tests/schedules/v1/cron-jobs/{id}', 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.telnyx.com/v2/ai/tests/schedules/v1/cron-jobs/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Nightly regression - updated',
'notify_on' => 'both',
'is_active' => true,
'crontab_expression' => '0 4 * * *'
]),
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.telnyx.com/v2/ai/tests/schedules/v1/cron-jobs/{id}"
payload := strings.NewReader("{\n \"name\": \"Nightly regression - updated\",\n \"notify_on\": \"both\",\n \"is_active\": true,\n \"crontab_expression\": \"0 4 * * *\"\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.telnyx.com/v2/ai/tests/schedules/v1/cron-jobs/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Nightly regression - updated\",\n \"notify_on\": \"both\",\n \"is_active\": true,\n \"crontab_expression\": \"0 4 * * *\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.telnyx.com/v2/ai/tests/schedules/v1/cron-jobs/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Nightly regression - updated\",\n \"notify_on\": \"both\",\n \"is_active\": true,\n \"crontab_expression\": \"0 4 * * *\"\n}"
response = http.request(request)
puts response.read_body{
"id": 1188,
"name": "Nightly regression",
"agent": 1259,
"crontab_expression": "0 3 * * *",
"timezone": "America/Chicago",
"scenario_ids": [
9512
],
"scenarios_data": [
{
"id": 9512,
"agent": 1259,
"name": "Refund escalation flow",
"personality": 4643,
"personality_name": "Interruptive (High)"
}
],
"personality": null,
"personalities": [
4643
],
"tags": [
"regression"
],
"frequency": 1,
"run_as_text": false,
"execution_mode": "voice",
"notify_on": "failure",
"is_active": true,
"created_at": "2026-10-13T18:04:05.123456Z",
"updated_at": "2026-10-13T18:04:05.123456Z"
}{
"errors": [
{
"code": "10015",
"title": "Bad Request",
"detail": "The AI Tests service rejected the request."
}
]
}{
"errors": [
{
"code": "10003",
"title": "Unauthorized",
"detail": "The API key is missing or invalid."
}
]
}{
"errors": [
{
"code": "10005",
"title": "Not Found",
"detail": "The requested resource or URL could not be found."
}
]
}{
"errors": [
{
"code": "10018",
"title": "Unprocessable Entity",
"detail": "Validation failed for the request payload."
}
]
}{
"errors": [
{
"code": "10029",
"title": "Too Many Requests",
"detail": "Too many requests; retry later."
}
]
}{
"errors": [
{
"code": "10063",
"title": "Service Unavailable",
"detail": "The test framework service is temporarily unavailable."
}
]
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Numeric ID of the scheduled test job.
Body
application/json
Execution mode for the test runs, such as voice, text, or sip.
Available options:
never, success, failure, both Cron expression controlling when the job runs.
Response
Updated scheduled test job.
ID of the test agent the job belongs to.
Cron expression controlling when the job runs, in the job's timezone.
Scenario IDs the job executes.
Show child attributes
Show child attributes
Whether the job runs scenarios as text chat rather than voice calls.
Execution mode for the test runs, such as voice, text, or sip.
When the job sends a notification.
Available options:
never, success, failure, both Was this page helpful?
Update a scheduled test job
curl --request PATCH \
--url https://api.telnyx.com/v2/ai/tests/schedules/v1/cron-jobs/{id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"name": "Nightly regression - updated",
"notify_on": "both",
"is_active": true,
"crontab_expression": "0 4 * * *"
}
'import requests
url = "https://api.telnyx.com/v2/ai/tests/schedules/v1/cron-jobs/{id}"
payload = {
"name": "Nightly regression - updated",
"notify_on": "both",
"is_active": True,
"crontab_expression": "0 4 * * *"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: 'Nightly regression - updated',
notify_on: 'both',
is_active: true,
crontab_expression: '0 4 * * *'
})
};
fetch('https://api.telnyx.com/v2/ai/tests/schedules/v1/cron-jobs/{id}', 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.telnyx.com/v2/ai/tests/schedules/v1/cron-jobs/{id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "PATCH",
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Nightly regression - updated',
'notify_on' => 'both',
'is_active' => true,
'crontab_expression' => '0 4 * * *'
]),
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.telnyx.com/v2/ai/tests/schedules/v1/cron-jobs/{id}"
payload := strings.NewReader("{\n \"name\": \"Nightly regression - updated\",\n \"notify_on\": \"both\",\n \"is_active\": true,\n \"crontab_expression\": \"0 4 * * *\"\n}")
req, _ := http.NewRequest("PATCH", 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.patch("https://api.telnyx.com/v2/ai/tests/schedules/v1/cron-jobs/{id}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"Nightly regression - updated\",\n \"notify_on\": \"both\",\n \"is_active\": true,\n \"crontab_expression\": \"0 4 * * *\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.telnyx.com/v2/ai/tests/schedules/v1/cron-jobs/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Patch.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"Nightly regression - updated\",\n \"notify_on\": \"both\",\n \"is_active\": true,\n \"crontab_expression\": \"0 4 * * *\"\n}"
response = http.request(request)
puts response.read_body{
"id": 1188,
"name": "Nightly regression",
"agent": 1259,
"crontab_expression": "0 3 * * *",
"timezone": "America/Chicago",
"scenario_ids": [
9512
],
"scenarios_data": [
{
"id": 9512,
"agent": 1259,
"name": "Refund escalation flow",
"personality": 4643,
"personality_name": "Interruptive (High)"
}
],
"personality": null,
"personalities": [
4643
],
"tags": [
"regression"
],
"frequency": 1,
"run_as_text": false,
"execution_mode": "voice",
"notify_on": "failure",
"is_active": true,
"created_at": "2026-10-13T18:04:05.123456Z",
"updated_at": "2026-10-13T18:04:05.123456Z"
}{
"errors": [
{
"code": "10015",
"title": "Bad Request",
"detail": "The AI Tests service rejected the request."
}
]
}{
"errors": [
{
"code": "10003",
"title": "Unauthorized",
"detail": "The API key is missing or invalid."
}
]
}{
"errors": [
{
"code": "10005",
"title": "Not Found",
"detail": "The requested resource or URL could not be found."
}
]
}{
"errors": [
{
"code": "10018",
"title": "Unprocessable Entity",
"detail": "Validation failed for the request payload."
}
]
}{
"errors": [
{
"code": "10029",
"title": "Too Many Requests",
"detail": "Too many requests; retry later."
}
]
}{
"errors": [
{
"code": "10063",
"title": "Service Unavailable",
"detail": "The test framework service is temporarily unavailable."
}
]
}