curl --request POST \
--url https://api.seltz.ai/v1/monitors \
--header 'Content-Type: application/json' \
--header 'x-api-key: <x-api-key>' \
--data '
{
"cadence": "<string>",
"api_key": null,
"name": "",
"search_requests": [],
"webhook": {
"events": [],
"status": null,
"url": ""
}
}
'import requests
url = "https://api.seltz.ai/v1/monitors"
payload = {
"cadence": "<string>",
"api_key": None,
"name": "",
"search_requests": [],
"webhook": {
"events": [],
"status": None,
"url": ""
}
}
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({
cadence: '<string>',
api_key: null,
name: '',
search_requests: [],
webhook: {events: [], status: null, url: ''}
})
};
fetch('https://api.seltz.ai/v1/monitors', 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.seltz.ai/v1/monitors",
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([
'cadence' => '<string>',
'api_key' => null,
'name' => '',
'search_requests' => [
],
'webhook' => [
'events' => [
],
'status' => null,
'url' => ''
]
]),
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.seltz.ai/v1/monitors"
payload := strings.NewReader("{\n \"cadence\": \"<string>\",\n \"api_key\": null,\n \"name\": \"\",\n \"search_requests\": [],\n \"webhook\": {\n \"events\": [],\n \"status\": null,\n \"url\": \"\"\n }\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.seltz.ai/v1/monitors")
.header("x-api-key", "<x-api-key>")
.header("Content-Type", "application/json")
.body("{\n \"cadence\": \"<string>\",\n \"api_key\": null,\n \"name\": \"\",\n \"search_requests\": [],\n \"webhook\": {\n \"events\": [],\n \"status\": null,\n \"url\": \"\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.seltz.ai/v1/monitors")
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 \"cadence\": \"<string>\",\n \"api_key\": null,\n \"name\": \"\",\n \"search_requests\": [],\n \"webhook\": {\n \"events\": [],\n \"status\": null,\n \"url\": \"\"\n }\n}"
response = http.request(request)
puts response.read_body{
"monitor": {
"cadence": "<string>",
"status": "active",
"created_at": "2025-04-11T12:00:00Z",
"monitor_id": "",
"name": "",
"search_requests": [],
"updated_at": "2025-04-11T12:00:00Z",
"webhook": {
"events": [],
"status": null,
"url": ""
}
},
"webhook_secret": ""
}{
"error": {
"code": "<string>",
"message": "<string>"
},
"request_id": "<string>"
}{
"error": {
"code": "<string>",
"message": "<string>"
},
"request_id": "<string>"
}{
"error": {
"code": "<string>",
"message": "<string>"
},
"request_id": "<string>"
}Create monitor
curl --request POST \
--url https://api.seltz.ai/v1/monitors \
--header 'Content-Type: application/json' \
--header 'x-api-key: <x-api-key>' \
--data '
{
"cadence": "<string>",
"api_key": null,
"name": "",
"search_requests": [],
"webhook": {
"events": [],
"status": null,
"url": ""
}
}
'import requests
url = "https://api.seltz.ai/v1/monitors"
payload = {
"cadence": "<string>",
"api_key": None,
"name": "",
"search_requests": [],
"webhook": {
"events": [],
"status": None,
"url": ""
}
}
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({
cadence: '<string>',
api_key: null,
name: '',
search_requests: [],
webhook: {events: [], status: null, url: ''}
})
};
fetch('https://api.seltz.ai/v1/monitors', 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.seltz.ai/v1/monitors",
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([
'cadence' => '<string>',
'api_key' => null,
'name' => '',
'search_requests' => [
],
'webhook' => [
'events' => [
],
'status' => null,
'url' => ''
]
]),
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.seltz.ai/v1/monitors"
payload := strings.NewReader("{\n \"cadence\": \"<string>\",\n \"api_key\": null,\n \"name\": \"\",\n \"search_requests\": [],\n \"webhook\": {\n \"events\": [],\n \"status\": null,\n \"url\": \"\"\n }\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.seltz.ai/v1/monitors")
.header("x-api-key", "<x-api-key>")
.header("Content-Type", "application/json")
.body("{\n \"cadence\": \"<string>\",\n \"api_key\": null,\n \"name\": \"\",\n \"search_requests\": [],\n \"webhook\": {\n \"events\": [],\n \"status\": null,\n \"url\": \"\"\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.seltz.ai/v1/monitors")
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 \"cadence\": \"<string>\",\n \"api_key\": null,\n \"name\": \"\",\n \"search_requests\": [],\n \"webhook\": {\n \"events\": [],\n \"status\": null,\n \"url\": \"\"\n }\n}"
response = http.request(request)
puts response.read_body{
"monitor": {
"cadence": "<string>",
"status": "active",
"created_at": "2025-04-11T12:00:00Z",
"monitor_id": "",
"name": "",
"search_requests": [],
"updated_at": "2025-04-11T12:00:00Z",
"webhook": {
"events": [],
"status": null,
"url": ""
}
},
"webhook_secret": ""
}{
"error": {
"code": "<string>",
"message": "<string>"
},
"request_id": "<string>"
}{
"error": {
"code": "<string>",
"message": "<string>"
},
"request_id": "<string>"
}{
"error": {
"code": "<string>",
"message": "<string>"
},
"request_id": "<string>"
}Headers
Seltz API key: https://console.seltz.ai/api-keys
Body
How often the monitor runs. Units: s, m, h, d = 24 h, w = 7 d. A bare number is seconds, single-unit only. There is no month unit because a month is not a duration. At least 1h and at most 366d.
At most one run per cadence period. Neither the time within the period nor the run's duration is guaranteed, and a missed period is not made up.
Unique per org among live monitors; a deleted monitor's name becomes available again. At most 512 bytes of UTF-8.
At least one, at most 1000. Every request runs on every run. A request
with an api_key set, a blank query, or a body identical to another in
the list is rejected.
Show child attributes
Show child attributes
Set to paused to create the monitor without starting it. Only active
and paused are accepted. Defaults to active.
active, paused, disabled, deleted Show child attributes
Show child attributes
Response
Created. webhook_secret is returned once and never again.
How often the monitor runs. Units: s, m, h, d = 24 h, w = 7 d. A bare number is seconds, single-unit only. There is no month unit because a month is not a duration. At least 1h and at most 366d.
At most one run per cadence period. Neither the time within the period nor the run's duration is guaranteed, and a missed period is not made up.
Show child attributes
Show child attributes
Returned once, at create, and never again. Issued whether or not the create supplied a webhook, so keep it.