curl --request POST \
--url https://api.example.com/v1/schedules \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"kind": "playbook",
"target": {
"project_id": "proj_123",
"playbook_id": "file_123"
},
"description": "Daily executive report",
"schedule": {
"type": "daily",
"zone_id": "America/Los_Angeles",
"time_of_day": "09:00"
},
"config": {
"params": {
"region": "west"
},
"output_folder": "/Reports",
"email_recipients": [
{
"email": "ops@example.com",
"type": "to"
}
]
}
}
'import requests
url = "https://api.example.com/v1/schedules"
payload = {
"kind": "playbook",
"target": {
"project_id": "proj_123",
"playbook_id": "file_123"
},
"description": "Daily executive report",
"schedule": {
"type": "daily",
"zone_id": "America/Los_Angeles",
"time_of_day": "09:00"
},
"config": {
"params": { "region": "west" },
"output_folder": "/Reports",
"email_recipients": [
{
"email": "ops@example.com",
"type": "to"
}
]
}
}
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({
kind: 'playbook',
target: {project_id: 'proj_123', playbook_id: 'file_123'},
description: 'Daily executive report',
schedule: {type: 'daily', zone_id: 'America/Los_Angeles', time_of_day: '09:00'},
config: {
params: {region: 'west'},
output_folder: '/Reports',
email_recipients: [{email: 'ops@example.com', type: 'to'}]
}
})
};
fetch('https://api.example.com/v1/schedules', 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/v1/schedules",
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([
'kind' => 'playbook',
'target' => [
'project_id' => 'proj_123',
'playbook_id' => 'file_123'
],
'description' => 'Daily executive report',
'schedule' => [
'type' => 'daily',
'zone_id' => 'America/Los_Angeles',
'time_of_day' => '09:00'
],
'config' => [
'params' => [
'region' => 'west'
],
'output_folder' => '/Reports',
'email_recipients' => [
[
'email' => 'ops@example.com',
'type' => 'to'
]
]
]
]),
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.example.com/v1/schedules"
payload := strings.NewReader("{\n \"kind\": \"playbook\",\n \"target\": {\n \"project_id\": \"proj_123\",\n \"playbook_id\": \"file_123\"\n },\n \"description\": \"Daily executive report\",\n \"schedule\": {\n \"type\": \"daily\",\n \"zone_id\": \"America/Los_Angeles\",\n \"time_of_day\": \"09:00\"\n },\n \"config\": {\n \"params\": {\n \"region\": \"west\"\n },\n \"output_folder\": \"/Reports\",\n \"email_recipients\": [\n {\n \"email\": \"ops@example.com\",\n \"type\": \"to\"\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://api.example.com/v1/schedules")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"kind\": \"playbook\",\n \"target\": {\n \"project_id\": \"proj_123\",\n \"playbook_id\": \"file_123\"\n },\n \"description\": \"Daily executive report\",\n \"schedule\": {\n \"type\": \"daily\",\n \"zone_id\": \"America/Los_Angeles\",\n \"time_of_day\": \"09:00\"\n },\n \"config\": {\n \"params\": {\n \"region\": \"west\"\n },\n \"output_folder\": \"/Reports\",\n \"email_recipients\": [\n {\n \"email\": \"ops@example.com\",\n \"type\": \"to\"\n }\n ]\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/schedules")
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 \"kind\": \"playbook\",\n \"target\": {\n \"project_id\": \"proj_123\",\n \"playbook_id\": \"file_123\"\n },\n \"description\": \"Daily executive report\",\n \"schedule\": {\n \"type\": \"daily\",\n \"zone_id\": \"America/Los_Angeles\",\n \"time_of_day\": \"09:00\"\n },\n \"config\": {\n \"params\": {\n \"region\": \"west\"\n },\n \"output_folder\": \"/Reports\",\n \"email_recipients\": [\n {\n \"email\": \"ops@example.com\",\n \"type\": \"to\"\n }\n ]\n }\n}"
response = http.request(request)
puts response.read_body{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"request_id": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"request_id": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"request_id": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"request_id": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"request_id": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"request_id": "<string>"
}Create schedule
Create a schedule for a supported Summation resource. Set kind to choose the target type and request schema. The first supported kind is playbook. When workflows are enabled for the organization, scheduling new work belongs to workflows: this operation refuses, and you create a workflow with a schedule trigger through POST /v1/workflows instead. That surface accepts only one_time, daily, weekly, and monthly cadences recurring every one period; other new cadences are unavailable while workflows are enabled. Existing schedules stay listable and editable here either way.
curl --request POST \
--url https://api.example.com/v1/schedules \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"kind": "playbook",
"target": {
"project_id": "proj_123",
"playbook_id": "file_123"
},
"description": "Daily executive report",
"schedule": {
"type": "daily",
"zone_id": "America/Los_Angeles",
"time_of_day": "09:00"
},
"config": {
"params": {
"region": "west"
},
"output_folder": "/Reports",
"email_recipients": [
{
"email": "ops@example.com",
"type": "to"
}
]
}
}
'import requests
url = "https://api.example.com/v1/schedules"
payload = {
"kind": "playbook",
"target": {
"project_id": "proj_123",
"playbook_id": "file_123"
},
"description": "Daily executive report",
"schedule": {
"type": "daily",
"zone_id": "America/Los_Angeles",
"time_of_day": "09:00"
},
"config": {
"params": { "region": "west" },
"output_folder": "/Reports",
"email_recipients": [
{
"email": "ops@example.com",
"type": "to"
}
]
}
}
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({
kind: 'playbook',
target: {project_id: 'proj_123', playbook_id: 'file_123'},
description: 'Daily executive report',
schedule: {type: 'daily', zone_id: 'America/Los_Angeles', time_of_day: '09:00'},
config: {
params: {region: 'west'},
output_folder: '/Reports',
email_recipients: [{email: 'ops@example.com', type: 'to'}]
}
})
};
fetch('https://api.example.com/v1/schedules', 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/v1/schedules",
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([
'kind' => 'playbook',
'target' => [
'project_id' => 'proj_123',
'playbook_id' => 'file_123'
],
'description' => 'Daily executive report',
'schedule' => [
'type' => 'daily',
'zone_id' => 'America/Los_Angeles',
'time_of_day' => '09:00'
],
'config' => [
'params' => [
'region' => 'west'
],
'output_folder' => '/Reports',
'email_recipients' => [
[
'email' => 'ops@example.com',
'type' => 'to'
]
]
]
]),
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.example.com/v1/schedules"
payload := strings.NewReader("{\n \"kind\": \"playbook\",\n \"target\": {\n \"project_id\": \"proj_123\",\n \"playbook_id\": \"file_123\"\n },\n \"description\": \"Daily executive report\",\n \"schedule\": {\n \"type\": \"daily\",\n \"zone_id\": \"America/Los_Angeles\",\n \"time_of_day\": \"09:00\"\n },\n \"config\": {\n \"params\": {\n \"region\": \"west\"\n },\n \"output_folder\": \"/Reports\",\n \"email_recipients\": [\n {\n \"email\": \"ops@example.com\",\n \"type\": \"to\"\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://api.example.com/v1/schedules")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"kind\": \"playbook\",\n \"target\": {\n \"project_id\": \"proj_123\",\n \"playbook_id\": \"file_123\"\n },\n \"description\": \"Daily executive report\",\n \"schedule\": {\n \"type\": \"daily\",\n \"zone_id\": \"America/Los_Angeles\",\n \"time_of_day\": \"09:00\"\n },\n \"config\": {\n \"params\": {\n \"region\": \"west\"\n },\n \"output_folder\": \"/Reports\",\n \"email_recipients\": [\n {\n \"email\": \"ops@example.com\",\n \"type\": \"to\"\n }\n ]\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/v1/schedules")
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 \"kind\": \"playbook\",\n \"target\": {\n \"project_id\": \"proj_123\",\n \"playbook_id\": \"file_123\"\n },\n \"description\": \"Daily executive report\",\n \"schedule\": {\n \"type\": \"daily\",\n \"zone_id\": \"America/Los_Angeles\",\n \"time_of_day\": \"09:00\"\n },\n \"config\": {\n \"params\": {\n \"region\": \"west\"\n },\n \"output_folder\": \"/Reports\",\n \"email_recipients\": [\n {\n \"email\": \"ops@example.com\",\n \"type\": \"to\"\n }\n ]\n }\n}"
response = http.request(request)
puts response.read_body{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"request_id": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"request_id": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"request_id": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"request_id": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"request_id": "<string>"
}{
"type": "<string>",
"title": "<string>",
"status": 123,
"detail": "<string>",
"code": "<string>",
"request_id": "<string>"
}Authorizations
The access token received from the authorization server in the OAuth 2.0 flow.
Body
Show child attributes
Show child attributes
Schedule cadence and timezone. When workflows are enabled, only one_time, daily, weekly, and monthly cadences recurring every one period can instead be created through /v1/workflows; other new cadences are unavailable.
Show child attributes
Show child attributes
Schedule target kind.
"playbook"Human-readable schedule description.
Show child attributes
Show child attributes
Response
Successful Response