curl --request POST \
--url https://api.sidenet.ai/v1/workflow-schedules \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"workflow_id": "4c2f9e18-7a63-4d05-b1e8-93a7c0f2d641",
"user_id": "user_4821",
"timezone": "Europe/Paris",
"copilot_id": "a5e91c07-3f24-4b68-9d15-8c72e0b4a396",
"group": {
"id": "grp_84f20c19",
"name": "<string>"
},
"recurrence": {
"frequency": "weekdays",
"time": "08:00"
},
"cron": "0 8 * * 1-5",
"starts_at": "2023-11-07T05:31:56Z",
"ends_at": "2023-11-07T05:31:56Z",
"input": {
"channel": "#growth"
},
"notify": "thread",
"thread_title": "Daily signups digest",
"name": "<string>"
}
'import requests
url = "https://api.sidenet.ai/v1/workflow-schedules"
payload = {
"workflow_id": "4c2f9e18-7a63-4d05-b1e8-93a7c0f2d641",
"user_id": "user_4821",
"timezone": "Europe/Paris",
"copilot_id": "a5e91c07-3f24-4b68-9d15-8c72e0b4a396",
"group": {
"id": "grp_84f20c19",
"name": "<string>"
},
"recurrence": {
"frequency": "weekdays",
"time": "08:00"
},
"cron": "0 8 * * 1-5",
"starts_at": "2023-11-07T05:31:56Z",
"ends_at": "2023-11-07T05:31:56Z",
"input": { "channel": "#growth" },
"notify": "thread",
"thread_title": "Daily signups digest",
"name": "<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({
workflow_id: '4c2f9e18-7a63-4d05-b1e8-93a7c0f2d641',
user_id: 'user_4821',
timezone: 'Europe/Paris',
copilot_id: 'a5e91c07-3f24-4b68-9d15-8c72e0b4a396',
group: {id: 'grp_84f20c19', name: '<string>'},
recurrence: {frequency: 'weekdays', time: '08:00'},
cron: '0 8 * * 1-5',
starts_at: '2023-11-07T05:31:56Z',
ends_at: '2023-11-07T05:31:56Z',
input: {channel: '#growth'},
notify: 'thread',
thread_title: 'Daily signups digest',
name: '<string>'
})
};
fetch('https://api.sidenet.ai/v1/workflow-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.sidenet.ai/v1/workflow-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([
'workflow_id' => '4c2f9e18-7a63-4d05-b1e8-93a7c0f2d641',
'user_id' => 'user_4821',
'timezone' => 'Europe/Paris',
'copilot_id' => 'a5e91c07-3f24-4b68-9d15-8c72e0b4a396',
'group' => [
'id' => 'grp_84f20c19',
'name' => '<string>'
],
'recurrence' => [
'frequency' => 'weekdays',
'time' => '08:00'
],
'cron' => '0 8 * * 1-5',
'starts_at' => '2023-11-07T05:31:56Z',
'ends_at' => '2023-11-07T05:31:56Z',
'input' => [
'channel' => '#growth'
],
'notify' => 'thread',
'thread_title' => 'Daily signups digest',
'name' => '<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.sidenet.ai/v1/workflow-schedules"
payload := strings.NewReader("{\n \"workflow_id\": \"4c2f9e18-7a63-4d05-b1e8-93a7c0f2d641\",\n \"user_id\": \"user_4821\",\n \"timezone\": \"Europe/Paris\",\n \"copilot_id\": \"a5e91c07-3f24-4b68-9d15-8c72e0b4a396\",\n \"group\": {\n \"id\": \"grp_84f20c19\",\n \"name\": \"<string>\"\n },\n \"recurrence\": {\n \"frequency\": \"weekdays\",\n \"time\": \"08:00\"\n },\n \"cron\": \"0 8 * * 1-5\",\n \"starts_at\": \"2023-11-07T05:31:56Z\",\n \"ends_at\": \"2023-11-07T05:31:56Z\",\n \"input\": {\n \"channel\": \"#growth\"\n },\n \"notify\": \"thread\",\n \"thread_title\": \"Daily signups digest\",\n \"name\": \"<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.sidenet.ai/v1/workflow-schedules")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"workflow_id\": \"4c2f9e18-7a63-4d05-b1e8-93a7c0f2d641\",\n \"user_id\": \"user_4821\",\n \"timezone\": \"Europe/Paris\",\n \"copilot_id\": \"a5e91c07-3f24-4b68-9d15-8c72e0b4a396\",\n \"group\": {\n \"id\": \"grp_84f20c19\",\n \"name\": \"<string>\"\n },\n \"recurrence\": {\n \"frequency\": \"weekdays\",\n \"time\": \"08:00\"\n },\n \"cron\": \"0 8 * * 1-5\",\n \"starts_at\": \"2023-11-07T05:31:56Z\",\n \"ends_at\": \"2023-11-07T05:31:56Z\",\n \"input\": {\n \"channel\": \"#growth\"\n },\n \"notify\": \"thread\",\n \"thread_title\": \"Daily signups digest\",\n \"name\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sidenet.ai/v1/workflow-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 \"workflow_id\": \"4c2f9e18-7a63-4d05-b1e8-93a7c0f2d641\",\n \"user_id\": \"user_4821\",\n \"timezone\": \"Europe/Paris\",\n \"copilot_id\": \"a5e91c07-3f24-4b68-9d15-8c72e0b4a396\",\n \"group\": {\n \"id\": \"grp_84f20c19\",\n \"name\": \"<string>\"\n },\n \"recurrence\": {\n \"frequency\": \"weekdays\",\n \"time\": \"08:00\"\n },\n \"cron\": \"0 8 * * 1-5\",\n \"starts_at\": \"2023-11-07T05:31:56Z\",\n \"ends_at\": \"2023-11-07T05:31:56Z\",\n \"input\": {\n \"channel\": \"#growth\"\n },\n \"notify\": \"thread\",\n \"thread_title\": \"Daily signups digest\",\n \"name\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"schedule": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"workflow_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"owner_kind": "org",
"user_id": "<string>",
"status": "active",
"recurrence": {},
"cron": "<string>",
"run_at": "2023-11-07T05:31:56Z",
"description": "<string>",
"timezone": "<string>",
"next_fire_at": "2023-11-07T05:31:56Z",
"last_fire_at": "2023-11-07T05:31:56Z",
"last_run_status": "<string>",
"notify": "thread",
"thread_title": "<string>"
},
"next_fires": [
"2023-11-07T05:31:56Z"
]
}Create workflow schedule
Schedules a workflow (its active version) to run unattended as user_id. Timing is a structured recurrence (once | hourly | daily | weekdays | weekly + date/time/minute/weekday) or a raw cron, in timezone. notify: "thread" (default) files each run’s result as a new conversation for that user (thread_title required; copilot_id puts it under the right widget); notify: "none" only logs the run. API key only.
curl --request POST \
--url https://api.sidenet.ai/v1/workflow-schedules \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"workflow_id": "4c2f9e18-7a63-4d05-b1e8-93a7c0f2d641",
"user_id": "user_4821",
"timezone": "Europe/Paris",
"copilot_id": "a5e91c07-3f24-4b68-9d15-8c72e0b4a396",
"group": {
"id": "grp_84f20c19",
"name": "<string>"
},
"recurrence": {
"frequency": "weekdays",
"time": "08:00"
},
"cron": "0 8 * * 1-5",
"starts_at": "2023-11-07T05:31:56Z",
"ends_at": "2023-11-07T05:31:56Z",
"input": {
"channel": "#growth"
},
"notify": "thread",
"thread_title": "Daily signups digest",
"name": "<string>"
}
'import requests
url = "https://api.sidenet.ai/v1/workflow-schedules"
payload = {
"workflow_id": "4c2f9e18-7a63-4d05-b1e8-93a7c0f2d641",
"user_id": "user_4821",
"timezone": "Europe/Paris",
"copilot_id": "a5e91c07-3f24-4b68-9d15-8c72e0b4a396",
"group": {
"id": "grp_84f20c19",
"name": "<string>"
},
"recurrence": {
"frequency": "weekdays",
"time": "08:00"
},
"cron": "0 8 * * 1-5",
"starts_at": "2023-11-07T05:31:56Z",
"ends_at": "2023-11-07T05:31:56Z",
"input": { "channel": "#growth" },
"notify": "thread",
"thread_title": "Daily signups digest",
"name": "<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({
workflow_id: '4c2f9e18-7a63-4d05-b1e8-93a7c0f2d641',
user_id: 'user_4821',
timezone: 'Europe/Paris',
copilot_id: 'a5e91c07-3f24-4b68-9d15-8c72e0b4a396',
group: {id: 'grp_84f20c19', name: '<string>'},
recurrence: {frequency: 'weekdays', time: '08:00'},
cron: '0 8 * * 1-5',
starts_at: '2023-11-07T05:31:56Z',
ends_at: '2023-11-07T05:31:56Z',
input: {channel: '#growth'},
notify: 'thread',
thread_title: 'Daily signups digest',
name: '<string>'
})
};
fetch('https://api.sidenet.ai/v1/workflow-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.sidenet.ai/v1/workflow-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([
'workflow_id' => '4c2f9e18-7a63-4d05-b1e8-93a7c0f2d641',
'user_id' => 'user_4821',
'timezone' => 'Europe/Paris',
'copilot_id' => 'a5e91c07-3f24-4b68-9d15-8c72e0b4a396',
'group' => [
'id' => 'grp_84f20c19',
'name' => '<string>'
],
'recurrence' => [
'frequency' => 'weekdays',
'time' => '08:00'
],
'cron' => '0 8 * * 1-5',
'starts_at' => '2023-11-07T05:31:56Z',
'ends_at' => '2023-11-07T05:31:56Z',
'input' => [
'channel' => '#growth'
],
'notify' => 'thread',
'thread_title' => 'Daily signups digest',
'name' => '<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.sidenet.ai/v1/workflow-schedules"
payload := strings.NewReader("{\n \"workflow_id\": \"4c2f9e18-7a63-4d05-b1e8-93a7c0f2d641\",\n \"user_id\": \"user_4821\",\n \"timezone\": \"Europe/Paris\",\n \"copilot_id\": \"a5e91c07-3f24-4b68-9d15-8c72e0b4a396\",\n \"group\": {\n \"id\": \"grp_84f20c19\",\n \"name\": \"<string>\"\n },\n \"recurrence\": {\n \"frequency\": \"weekdays\",\n \"time\": \"08:00\"\n },\n \"cron\": \"0 8 * * 1-5\",\n \"starts_at\": \"2023-11-07T05:31:56Z\",\n \"ends_at\": \"2023-11-07T05:31:56Z\",\n \"input\": {\n \"channel\": \"#growth\"\n },\n \"notify\": \"thread\",\n \"thread_title\": \"Daily signups digest\",\n \"name\": \"<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.sidenet.ai/v1/workflow-schedules")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"workflow_id\": \"4c2f9e18-7a63-4d05-b1e8-93a7c0f2d641\",\n \"user_id\": \"user_4821\",\n \"timezone\": \"Europe/Paris\",\n \"copilot_id\": \"a5e91c07-3f24-4b68-9d15-8c72e0b4a396\",\n \"group\": {\n \"id\": \"grp_84f20c19\",\n \"name\": \"<string>\"\n },\n \"recurrence\": {\n \"frequency\": \"weekdays\",\n \"time\": \"08:00\"\n },\n \"cron\": \"0 8 * * 1-5\",\n \"starts_at\": \"2023-11-07T05:31:56Z\",\n \"ends_at\": \"2023-11-07T05:31:56Z\",\n \"input\": {\n \"channel\": \"#growth\"\n },\n \"notify\": \"thread\",\n \"thread_title\": \"Daily signups digest\",\n \"name\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sidenet.ai/v1/workflow-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 \"workflow_id\": \"4c2f9e18-7a63-4d05-b1e8-93a7c0f2d641\",\n \"user_id\": \"user_4821\",\n \"timezone\": \"Europe/Paris\",\n \"copilot_id\": \"a5e91c07-3f24-4b68-9d15-8c72e0b4a396\",\n \"group\": {\n \"id\": \"grp_84f20c19\",\n \"name\": \"<string>\"\n },\n \"recurrence\": {\n \"frequency\": \"weekdays\",\n \"time\": \"08:00\"\n },\n \"cron\": \"0 8 * * 1-5\",\n \"starts_at\": \"2023-11-07T05:31:56Z\",\n \"ends_at\": \"2023-11-07T05:31:56Z\",\n \"input\": {\n \"channel\": \"#growth\"\n },\n \"notify\": \"thread\",\n \"thread_title\": \"Daily signups digest\",\n \"name\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"schedule": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"workflow_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"owner_kind": "org",
"user_id": "<string>",
"status": "active",
"recurrence": {},
"cron": "<string>",
"run_at": "2023-11-07T05:31:56Z",
"description": "<string>",
"timezone": "<string>",
"next_fire_at": "2023-11-07T05:31:56Z",
"last_fire_at": "2023-11-07T05:31:56Z",
"last_run_status": "<string>",
"notify": "thread",
"thread_title": "<string>"
},
"next_fires": [
"2023-11-07T05:31:56Z"
]
}Authorizations
Organization API key, generated in studio.sidenet.ai. Backend only — never in a browser.
Body
"4c2f9e18-7a63-4d05-b1e8-93a7c0f2d641"
The user the runs execute as (billing group, integrations, result thread owner).
"user_4821"
"Europe/Paris"
"a5e91c07-3f24-4b68-9d15-8c72e0b4a396"
Show child attributes
Show child attributes
{ "frequency": "weekdays", "time": "08:00" }
Alternative to recurrence. Minimum interval: hourly.
"0 8 * * 1-5"
{ "channel": "#growth" }
thread, none "Daily signups digest"