Create Schedule
curl --request POST \
--url https://api.getbluejay.ai/v1/create-schedule \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <x-api-key>' \
--data '
{
"simulation_id": "<string>",
"schedule": {
"frequency": "every_n_minutes",
"interval": 58,
"window": {
"days": [],
"start_time": "<string>",
"end_time": "<string>"
}
},
"timezone": "<string>",
"enabled": true
}
'import requests
url = "https://api.getbluejay.ai/v1/create-schedule"
payload = {
"simulation_id": "<string>",
"schedule": {
"frequency": "every_n_minutes",
"interval": 58,
"window": {
"days": [],
"start_time": "<string>",
"end_time": "<string>"
}
},
"timezone": "<string>",
"enabled": True
}
headers = {
"X-API-Key": "<x-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': '<x-api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
simulation_id: '<string>',
schedule: {
frequency: 'every_n_minutes',
interval: 58,
window: {days: [], start_time: '<string>', end_time: '<string>'}
},
timezone: '<string>',
enabled: true
})
};
fetch('https://api.getbluejay.ai/v1/create-schedule', 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.getbluejay.ai/v1/create-schedule",
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([
'simulation_id' => '<string>',
'schedule' => [
'frequency' => 'every_n_minutes',
'interval' => 58,
'window' => [
'days' => [
],
'start_time' => '<string>',
'end_time' => '<string>'
]
],
'timezone' => '<string>',
'enabled' => true
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <x-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.getbluejay.ai/v1/create-schedule"
payload := strings.NewReader("{\n \"simulation_id\": \"<string>\",\n \"schedule\": {\n \"frequency\": \"every_n_minutes\",\n \"interval\": 58,\n \"window\": {\n \"days\": [],\n \"start_time\": \"<string>\",\n \"end_time\": \"<string>\"\n }\n },\n \"timezone\": \"<string>\",\n \"enabled\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<x-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.getbluejay.ai/v1/create-schedule")
.header("X-API-Key", "<x-api-key>")
.header("Content-Type", "application/json")
.body("{\n \"simulation_id\": \"<string>\",\n \"schedule\": {\n \"frequency\": \"every_n_minutes\",\n \"interval\": 58,\n \"window\": {\n \"days\": [],\n \"start_time\": \"<string>\",\n \"end_time\": \"<string>\"\n }\n },\n \"timezone\": \"<string>\",\n \"enabled\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getbluejay.ai/v1/create-schedule")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<x-api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"simulation_id\": \"<string>\",\n \"schedule\": {\n \"frequency\": \"every_n_minutes\",\n \"interval\": 58,\n \"window\": {\n \"days\": [],\n \"start_time\": \"<string>\",\n \"end_time\": \"<string>\"\n }\n },\n \"timezone\": \"<string>\",\n \"enabled\": true\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"simulation_id": "<string>",
"cron_expression": "<string>",
"enabled": true,
"timezone": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Schedules
Create Schedule
POST
/
v1
/
create-schedule
Create Schedule
curl --request POST \
--url https://api.getbluejay.ai/v1/create-schedule \
--header 'Content-Type: application/json' \
--header 'X-API-Key: <x-api-key>' \
--data '
{
"simulation_id": "<string>",
"schedule": {
"frequency": "every_n_minutes",
"interval": 58,
"window": {
"days": [],
"start_time": "<string>",
"end_time": "<string>"
}
},
"timezone": "<string>",
"enabled": true
}
'import requests
url = "https://api.getbluejay.ai/v1/create-schedule"
payload = {
"simulation_id": "<string>",
"schedule": {
"frequency": "every_n_minutes",
"interval": 58,
"window": {
"days": [],
"start_time": "<string>",
"end_time": "<string>"
}
},
"timezone": "<string>",
"enabled": True
}
headers = {
"X-API-Key": "<x-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': '<x-api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
simulation_id: '<string>',
schedule: {
frequency: 'every_n_minutes',
interval: 58,
window: {days: [], start_time: '<string>', end_time: '<string>'}
},
timezone: '<string>',
enabled: true
})
};
fetch('https://api.getbluejay.ai/v1/create-schedule', 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.getbluejay.ai/v1/create-schedule",
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([
'simulation_id' => '<string>',
'schedule' => [
'frequency' => 'every_n_minutes',
'interval' => 58,
'window' => [
'days' => [
],
'start_time' => '<string>',
'end_time' => '<string>'
]
],
'timezone' => '<string>',
'enabled' => true
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-Key: <x-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.getbluejay.ai/v1/create-schedule"
payload := strings.NewReader("{\n \"simulation_id\": \"<string>\",\n \"schedule\": {\n \"frequency\": \"every_n_minutes\",\n \"interval\": 58,\n \"window\": {\n \"days\": [],\n \"start_time\": \"<string>\",\n \"end_time\": \"<string>\"\n }\n },\n \"timezone\": \"<string>\",\n \"enabled\": true\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-Key", "<x-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.getbluejay.ai/v1/create-schedule")
.header("X-API-Key", "<x-api-key>")
.header("Content-Type", "application/json")
.body("{\n \"simulation_id\": \"<string>\",\n \"schedule\": {\n \"frequency\": \"every_n_minutes\",\n \"interval\": 58,\n \"window\": {\n \"days\": [],\n \"start_time\": \"<string>\",\n \"end_time\": \"<string>\"\n }\n },\n \"timezone\": \"<string>\",\n \"enabled\": true\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.getbluejay.ai/v1/create-schedule")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-Key"] = '<x-api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"simulation_id\": \"<string>\",\n \"schedule\": {\n \"frequency\": \"every_n_minutes\",\n \"interval\": 58,\n \"window\": {\n \"days\": [],\n \"start_time\": \"<string>\",\n \"end_time\": \"<string>\"\n }\n },\n \"timezone\": \"<string>\",\n \"enabled\": true\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"simulation_id": "<string>",
"cron_expression": "<string>",
"enabled": true,
"timezone": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Integration Prompt for AI Agents
# Bluejay — Testing & Monitoring Platform for Conversational AI Agents
You are a senior backend engineer integrating the Bluejay API. Think step-by-step: first understand the endpoint, then plan the integration, then implement with minimal changes.
## Create Schedule — POST /v1/create-schedule
**Endpoint:** POST `https://api.getbluejay.ai/v1/create-schedule`
**Auth:** `X-API-Key` header
**Content-Type:** application/json
### Required Parameters
| Name | Type | Description |
|------|------|-------------|
| X-API-Key | string | API key required to authenticate requests. |
| simulation_id | string | The unique identifier for the associated simulation. |
| schedule | object | object | object | object | object | object | The schedule for the cron job. |
Review the full parameter list at https://docs.getbluejay.ai/api-reference/endpoint/create-schedule and include any optional parameters (e.g., `enabled`) that serve your integration's use case and align with Bluejay's testing and monitoring capabilities.
### Request Body (required fields)
```json
{
"simulation_id": "string",
"schedule": {
"frequency": "string",
"interval": 123
}
}
```
Refer to the full schema at https://docs.getbluejay.ai/api-reference/endpoint/create-schedule. Include optional fields that serve the goal of setting up for testing and monitoring on Bluejay.
### Example
**POST with body:**
```python
import requests
def create_schedule(payload: dict, api_key: str) -> dict:
url = "https://api.getbluejay.ai/v1/create-schedule"
headers = {"X-API-Key": api_key}
response = requests.post(url, headers=headers, json=payload)
response.raise_for_status()
return response.json()
```
### Constraints
- Minimal changes — only add/change files needed for this integration.
- Match existing codebase patterns (naming, file structure, error handling).
- Include error handling for 422: Validation Error.
### Integration Checklist
Before writing code, verify:
1. Which module/service owns this API domain in the codebase?
2. What HTTP client and error-handling patterns does the project use?
3. Are there existing types/interfaces to extend?
Then implement the integration, export it, and confirm it compiles/passes lint.
Body
application/json
The unique identifier for the associated simulation.
The schedule for the cron job.
- EveryNMinutesSchedule
- EveryNHoursSchedule
- DailySchedule
- WeeklySchedule
- MonthlySchedule
- CronSchedule
Show child attributes
Show child attributes
IANA timezone the cron expression is read in. Null means UTC.
Whether the cron job should be enabled upon creation.
Response
Successful Response
The unique identifier for the created cron job.
The unique identifier for the associated simulation.
The cron expression defining the job schedule.
Whether the cron job is enabled.
IANA timezone the cron expression is read in. Null means UTC.