curl --request POST \
--url https://api.olostep.com/v1/monitors \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"query": "<string>",
"source_policy": {
"include_urls": [
"<string>"
],
"exclude_urls": [
"<string>"
],
"include_domains": [
"<string>"
],
"exclude_domains": [
"<string>"
]
},
"frequency": "every hour",
"notification": {
"events": [],
"channels": [
{
"target": "<string>",
"events": []
}
]
},
"metadata": {},
"output_schema": {}
}
'import requests
url = "https://api.olostep.com/v1/monitors"
payload = {
"query": "<string>",
"source_policy": {
"include_urls": ["<string>"],
"exclude_urls": ["<string>"],
"include_domains": ["<string>"],
"exclude_domains": ["<string>"]
},
"frequency": "every hour",
"notification": {
"events": [],
"channels": [
{
"target": "<string>",
"events": []
}
]
},
"metadata": {},
"output_schema": {}
}
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({
query: '<string>',
source_policy: {
include_urls: ['<string>'],
exclude_urls: ['<string>'],
include_domains: ['<string>'],
exclude_domains: ['<string>']
},
frequency: 'every hour',
notification: {events: [], channels: [{target: '<string>', events: []}]},
metadata: {},
output_schema: {}
})
};
fetch('https://api.olostep.com/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.olostep.com/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([
'query' => '<string>',
'source_policy' => [
'include_urls' => [
'<string>'
],
'exclude_urls' => [
'<string>'
],
'include_domains' => [
'<string>'
],
'exclude_domains' => [
'<string>'
]
],
'frequency' => 'every hour',
'notification' => [
'events' => [
],
'channels' => [
[
'target' => '<string>',
'events' => [
]
]
]
],
'metadata' => [
],
'output_schema' => [
]
]),
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.olostep.com/v1/monitors"
payload := strings.NewReader("{\n \"query\": \"<string>\",\n \"source_policy\": {\n \"include_urls\": [\n \"<string>\"\n ],\n \"exclude_urls\": [\n \"<string>\"\n ],\n \"include_domains\": [\n \"<string>\"\n ],\n \"exclude_domains\": [\n \"<string>\"\n ]\n },\n \"frequency\": \"every hour\",\n \"notification\": {\n \"events\": [],\n \"channels\": [\n {\n \"target\": \"<string>\",\n \"events\": []\n }\n ]\n },\n \"metadata\": {},\n \"output_schema\": {}\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.olostep.com/v1/monitors")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"query\": \"<string>\",\n \"source_policy\": {\n \"include_urls\": [\n \"<string>\"\n ],\n \"exclude_urls\": [\n \"<string>\"\n ],\n \"include_domains\": [\n \"<string>\"\n ],\n \"exclude_domains\": [\n \"<string>\"\n ]\n },\n \"frequency\": \"every hour\",\n \"notification\": {\n \"events\": [],\n \"channels\": [\n {\n \"target\": \"<string>\",\n \"events\": []\n }\n ]\n },\n \"metadata\": {},\n \"output_schema\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.olostep.com/v1/monitors")
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 \"query\": \"<string>\",\n \"source_policy\": {\n \"include_urls\": [\n \"<string>\"\n ],\n \"exclude_urls\": [\n \"<string>\"\n ],\n \"include_domains\": [\n \"<string>\"\n ],\n \"exclude_domains\": [\n \"<string>\"\n ]\n },\n \"frequency\": \"every hour\",\n \"notification\": {\n \"events\": [],\n \"channels\": [\n {\n \"target\": \"<string>\",\n \"events\": []\n }\n ]\n },\n \"metadata\": {},\n \"output_schema\": {}\n}"
response = http.request(request)
puts response.read_body"<string>"{
"id": "<string>",
"object": "monitor",
"query": "<string>",
"tracked": {
"type": "<string>",
"urls": [
"<string>"
],
"web_query": "<string>"
},
"source_policy": {
"include_urls": [
"<string>"
],
"exclude_urls": [
"<string>"
],
"include_domains": [
"<string>"
],
"exclude_domains": [
"<string>"
]
},
"schedule": {
"frequency": "<string>",
"cron": "<string>",
"timezone": "UTC",
"next_run_at": "2023-11-07T05:31:56Z"
},
"notification": {
"events": [],
"channels": [
{
"target": "<string>",
"events": []
}
]
},
"webhook": {
"url": "<string>"
},
"output_schema": {},
"error_message": "<string>",
"last_run": {
"id": "<string>",
"status": "completed",
"change_detected": true,
"ran_at": "2023-11-07T05:31:56Z"
},
"agent": {
"id": "<string>"
},
"metadata": {},
"created": 123,
"updated": 123,
"total_count": 123,
"mermaid_diagram": "<string>"
}{
"error": "<string>",
"monitor_id": "<string>"
}Create Monitor
Creates a monitor from a natural-language query. Provisions a shadow agent, generates a workflow spec, queues DAG planning, and schedules recurring runs. Configure delivery with notification.channels and/or webhook. Returns 202 with status provisioning, or stream progress with ?stream=1.
curl --request POST \
--url https://api.olostep.com/v1/monitors \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"query": "<string>",
"source_policy": {
"include_urls": [
"<string>"
],
"exclude_urls": [
"<string>"
],
"include_domains": [
"<string>"
],
"exclude_domains": [
"<string>"
]
},
"frequency": "every hour",
"notification": {
"events": [],
"channels": [
{
"target": "<string>",
"events": []
}
]
},
"metadata": {},
"output_schema": {}
}
'import requests
url = "https://api.olostep.com/v1/monitors"
payload = {
"query": "<string>",
"source_policy": {
"include_urls": ["<string>"],
"exclude_urls": ["<string>"],
"include_domains": ["<string>"],
"exclude_domains": ["<string>"]
},
"frequency": "every hour",
"notification": {
"events": [],
"channels": [
{
"target": "<string>",
"events": []
}
]
},
"metadata": {},
"output_schema": {}
}
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({
query: '<string>',
source_policy: {
include_urls: ['<string>'],
exclude_urls: ['<string>'],
include_domains: ['<string>'],
exclude_domains: ['<string>']
},
frequency: 'every hour',
notification: {events: [], channels: [{target: '<string>', events: []}]},
metadata: {},
output_schema: {}
})
};
fetch('https://api.olostep.com/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.olostep.com/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([
'query' => '<string>',
'source_policy' => [
'include_urls' => [
'<string>'
],
'exclude_urls' => [
'<string>'
],
'include_domains' => [
'<string>'
],
'exclude_domains' => [
'<string>'
]
],
'frequency' => 'every hour',
'notification' => [
'events' => [
],
'channels' => [
[
'target' => '<string>',
'events' => [
]
]
]
],
'metadata' => [
],
'output_schema' => [
]
]),
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.olostep.com/v1/monitors"
payload := strings.NewReader("{\n \"query\": \"<string>\",\n \"source_policy\": {\n \"include_urls\": [\n \"<string>\"\n ],\n \"exclude_urls\": [\n \"<string>\"\n ],\n \"include_domains\": [\n \"<string>\"\n ],\n \"exclude_domains\": [\n \"<string>\"\n ]\n },\n \"frequency\": \"every hour\",\n \"notification\": {\n \"events\": [],\n \"channels\": [\n {\n \"target\": \"<string>\",\n \"events\": []\n }\n ]\n },\n \"metadata\": {},\n \"output_schema\": {}\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.olostep.com/v1/monitors")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"query\": \"<string>\",\n \"source_policy\": {\n \"include_urls\": [\n \"<string>\"\n ],\n \"exclude_urls\": [\n \"<string>\"\n ],\n \"include_domains\": [\n \"<string>\"\n ],\n \"exclude_domains\": [\n \"<string>\"\n ]\n },\n \"frequency\": \"every hour\",\n \"notification\": {\n \"events\": [],\n \"channels\": [\n {\n \"target\": \"<string>\",\n \"events\": []\n }\n ]\n },\n \"metadata\": {},\n \"output_schema\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.olostep.com/v1/monitors")
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 \"query\": \"<string>\",\n \"source_policy\": {\n \"include_urls\": [\n \"<string>\"\n ],\n \"exclude_urls\": [\n \"<string>\"\n ],\n \"include_domains\": [\n \"<string>\"\n ],\n \"exclude_domains\": [\n \"<string>\"\n ]\n },\n \"frequency\": \"every hour\",\n \"notification\": {\n \"events\": [],\n \"channels\": [\n {\n \"target\": \"<string>\",\n \"events\": []\n }\n ]\n },\n \"metadata\": {},\n \"output_schema\": {}\n}"
response = http.request(request)
puts response.read_body"<string>"{
"id": "<string>",
"object": "monitor",
"query": "<string>",
"tracked": {
"type": "<string>",
"urls": [
"<string>"
],
"web_query": "<string>"
},
"source_policy": {
"include_urls": [
"<string>"
],
"exclude_urls": [
"<string>"
],
"include_domains": [
"<string>"
],
"exclude_domains": [
"<string>"
]
},
"schedule": {
"frequency": "<string>",
"cron": "<string>",
"timezone": "UTC",
"next_run_at": "2023-11-07T05:31:56Z"
},
"notification": {
"events": [],
"channels": [
{
"target": "<string>",
"events": []
}
]
},
"webhook": {
"url": "<string>"
},
"output_schema": {},
"error_message": "<string>",
"last_run": {
"id": "<string>",
"status": "completed",
"change_detected": true,
"ran_at": "2023-11-07T05:31:56Z"
},
"agent": {
"id": "<string>"
},
"metadata": {},
"created": 123,
"updated": 123,
"total_count": 123,
"mermaid_diagram": "<string>"
}{
"error": "<string>",
"monitor_id": "<string>"
}Authorizations
Bearer authentication header of the form Bearer , where is your auth token.
Query Parameters
When set, the response is text/event-stream with phase, reasoning_token, complete, and error events.
1, true Body
What to monitor, in natural language.
Optional URL/domain allow and deny lists applied during planning and execution.
Show child attributes
Show child attributes
Natural-language schedule (for example every day at 9am). Minimum interval is every 10 minutes. Schedules use UTC.
50Show child attributes
Show child attributes
Show child attributes
Show child attributes
JSON Schema for structured extraction output.
Response
Provisioning stream (text/event-stream) when stream=1. Ends with a complete event containing the monitor object.
The response is of type string.
Was this page helpful?