curl --request POST \
--url https://api.aisa.one/apis/v1/parallel/monitors/{monitor_id}/update \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{}'import requests
url = "https://api.aisa.one/apis/v1/parallel/monitors/{monitor_id}/update"
payload = {}
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({})
};
fetch('https://api.aisa.one/apis/v1/parallel/monitors/{monitor_id}/update', 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.aisa.one/apis/v1/parallel/monitors/{monitor_id}/update",
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([
]),
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.aisa.one/apis/v1/parallel/monitors/{monitor_id}/update"
payload := strings.NewReader("{}")
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.aisa.one/apis/v1/parallel/monitors/{monitor_id}/update")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/parallel/monitors/{monitor_id}/update")
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 = "{}"
response = http.request(request)
puts response.read_body{
"created_at": "2025-01-15T10:30:00Z",
"frequency": "1h",
"monitor_id": "<string>",
"processor": "lite",
"settings": {
"query": "Extract recent news about AI",
"advanced_settings": {
"location": "us",
"source_policy": {
"include_domains": [
"wikipedia.org",
"docs.python.org/3",
".edu"
]
}
},
"include_backfill": true,
"output_schema": {
"json_schema": {
"additionalProperties": false,
"properties": {
"gdp": {
"description": "GDP in USD for the year, formatted like '$3.1 trillion (2023)'",
"type": "string"
}
},
"required": [
"gdp"
],
"type": "object"
},
"type": "json"
}
},
"status": "active",
"type": "event_stream",
"last_run_at": "2025-01-15T10:30:00Z",
"metadata": {
"slack_thread_id": "1234567890.123456",
"user_id": "U123ABC"
},
"output": {
"latest_snapshot": {
"basis": [
{
"field": "<string>",
"reasoning": "<string>",
"citations": [],
"confidence": "low"
}
],
"content": "<string>",
"type": "text",
"beta_fields": {},
"mcp_tool_calls": [
{
"arguments": "<string>",
"server_name": "<string>",
"tool_call_id": "<string>",
"tool_name": "<string>",
"content": "<string>",
"error": "<string>"
}
]
}
},
"webhook": {
"url": "https://example.com/webhook",
"event_types": [
"monitor.event.detected"
]
}
}Update Monitor
curl --request POST \
--url https://api.aisa.one/apis/v1/parallel/monitors/{monitor_id}/update \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{}'import requests
url = "https://api.aisa.one/apis/v1/parallel/monitors/{monitor_id}/update"
payload = {}
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({})
};
fetch('https://api.aisa.one/apis/v1/parallel/monitors/{monitor_id}/update', 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.aisa.one/apis/v1/parallel/monitors/{monitor_id}/update",
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([
]),
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.aisa.one/apis/v1/parallel/monitors/{monitor_id}/update"
payload := strings.NewReader("{}")
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.aisa.one/apis/v1/parallel/monitors/{monitor_id}/update")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.aisa.one/apis/v1/parallel/monitors/{monitor_id}/update")
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 = "{}"
response = http.request(request)
puts response.read_body{
"created_at": "2025-01-15T10:30:00Z",
"frequency": "1h",
"monitor_id": "<string>",
"processor": "lite",
"settings": {
"query": "Extract recent news about AI",
"advanced_settings": {
"location": "us",
"source_policy": {
"include_domains": [
"wikipedia.org",
"docs.python.org/3",
".edu"
]
}
},
"include_backfill": true,
"output_schema": {
"json_schema": {
"additionalProperties": false,
"properties": {
"gdp": {
"description": "GDP in USD for the year, formatted like '$3.1 trillion (2023)'",
"type": "string"
}
},
"required": [
"gdp"
],
"type": "object"
},
"type": "json"
}
},
"status": "active",
"type": "event_stream",
"last_run_at": "2025-01-15T10:30:00Z",
"metadata": {
"slack_thread_id": "1234567890.123456",
"user_id": "U123ABC"
},
"output": {
"latest_snapshot": {
"basis": [
{
"field": "<string>",
"reasoning": "<string>",
"citations": [],
"confidence": "low"
}
],
"content": "<string>",
"type": "text",
"beta_fields": {},
"mcp_tool_calls": [
{
"arguments": "<string>",
"server_name": "<string>",
"tool_call_id": "<string>",
"tool_name": "<string>",
"content": "<string>",
"error": "<string>"
}
]
}
},
"webhook": {
"url": "https://example.com/webhook",
"event_types": [
"monitor.event.detected"
]
}
}Request contract
- Method and path: POST /apis/v1/parallel/monitors/{monitor_id}/update
- Availability: enabled
- Request URL template: https://api.aisa.one/apis/v1/parallel/monitors/{monitor_id}/update
- monitor_id: path; required
- Runtime facts: 5d413ff65ac53e696e28c5a12c4dbbb99e94b7667cbafba2e2c6b9da9156a731
{
"operationId": "any_parallel_ai_apis_v1_parallel_monitors_monitor_a0a0af",
"method": "POST",
"path": "/apis/v1/parallel/monitors/{monitor_id}/update",
"servers": [
{
"url": "https://api.aisa.one"
}
],
"parameters": [
{
"in": "path",
"name": "monitor_id",
"required": true,
"schema": {
"title": "Monitor Id",
"type": "string"
}
}
],
"security": [
{
"bearerAuth": []
}
],
"requestBody": {
"content": {
"application/json": {
"schema": {
"description": "Request body to update a monitor.\n\nOnly fields that are explicitly included in the request body are updated.\n`null` clears a field, and is accepted only for the fields that can be\ncleared: `webhook`, `metadata`, and `settings.advanced_settings`. Every\nother field rejects `null`; omit it to leave the current value unchanged.\nTo update type-specific settings on an `event_stream` monitor, include\n`type` and `settings`; pass `settings.query` to update the prompt. If\n`settings` is provided, `type` is required to identify the settings shape.\nThe request must still include at least one field to update; empty updates\nfail validation.",
"properties": {
"frequency": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Frequency of the monitor. Format: '<number><unit>' where unit is 'h' (hours), 'd' (days), or 'w' (weeks). Must be between 1h and 30d (inclusive). Omit to keep the current frequency; `null` is rejected.",
"examples": [
"1h",
"12h",
"1d",
"7d",
"30d"
],
"title": "Frequency"
},
"metadata": {
"anyOf": [
{
"additionalProperties": {
"type": "string"
},
"type": "object"
},
{
"type": "null"
}
],
"description": "User-provided metadata stored with the monitor and echoed back in webhook notifications and GET responses, so you can map events to objects in your application. Keys: max 16 chars; values: max 512 chars.",
"examples": [
{
"slack_thread_id": "1234567890.123456",
"user_id": "U123ABC"
}
],
"title": "Metadata"
},
"processor": {
"anyOf": [
{
"enum": [
"lite",
"base"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Processor to use for subsequent monitor runs. `lite` is faster and cheaper; `base` performs more thorough analysis at higher cost and latency. Omit to keep the current processor; `null` is rejected.",
"examples": [
"lite",
"base"
],
"title": "Processor"
},
"settings": {
"anyOf": [
{
"description": "Type-specific update settings for an `event_stream` monitor.",
"properties": {
"advanced_settings": {
"anyOf": [
{
"description": "Advanced monitor configuration.",
"properties": {
"location": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "ISO 3166-1 alpha-2 country code for geo-targeted monitor results.",
"examples": [
"us",
"gb",
"de",
"jp"
],
"title": "Location"
},
"source_policy": {
"anyOf": [
{
"description": "Source policy for web search results.\n\nPlain domains match that domain and its subdomains. Domain/path entries use\ncase-sensitive path matching at segment boundaries; trailing slashes are ignored,\ndot segments are normalized, and other percent-encoded path spelling is preserved.\nEntries omit schemes, ports, query strings, and fragments. When include_domains is\nnon-empty, it defines the complete allowlist and exclude_domains is ignored.",
"properties": {
"after_date": {
"anyOf": [
{
"format": "date",
"type": "string"
},
{
"type": "null"
}
],
"description": "Optional start date for filtering search results. Results will be limited to content published on or after this date. Provided as an RFC 3339 date string (YYYY-MM-DD).",
"examples": [
"2024-01-01"
],
"title": "After Date"
},
"exclude_domains": {
"description": "List of domains or domain/path prefixes to exclude from results. Applied only when include_domains is empty. If specified, matching sources will be excluded. Accepts plain domains (e.g., reddit.com), domain/path prefixes (e.g., youtube.com/shorts), or bare domain extensions (e.g., .gov, .edu, .co.uk). The combined number of entries in include_domains and exclude_domains cannot exceed 200.",
"examples": [
[
"reddit.com",
"youtube.com/shorts",
".ai"
]
],
"items": {
"type": "string"
},
"title": "Exclude Domains",
"type": "array"
},
"include_domains": {
"description": "List of domains or domain/path prefixes to restrict results to. If specified, only matching sources will be included and exclude_domains will be ignored. Accepts plain domains (e.g., wikipedia.org), domain/path prefixes (e.g., docs.python.org/3), or bare domain extensions (e.g., .gov, .edu, .co.uk). The combined number of entries in include_domains and exclude_domains cannot exceed 200.",
"examples": [
[
"wikipedia.org",
"docs.python.org/3",
".edu"
]
],
"items": {
"type": "string"
},
"title": "Include Domains",
"type": "array"
}
},
"title": "SourcePolicy",
"type": "object"
},
{
"type": "null"
}
],
"description": "Source policy governing included and excluded domains or domain/path prefixes for monitor search results.",
"examples": [
{
"include_domains": [
"wikipedia.org",
"docs.python.org/3",
".edu"
]
},
{
"exclude_domains": [
"reddit.com",
"youtube.com/shorts",
".ai"
]
}
]
}
},
"title": "AdvancedMonitorSettings",
"type": "object"
},
{
"type": "null"
}
],
"description": "Advanced monitor configuration. Pass `null` to clear it."
},
"query": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"description": "Updated search query for the monitor. Use this for minor updates to prompts and instructions only. Major changes to the query may lead to unexpected results in change detection, as the monitor compares new results with what was previously seen. Omit to keep the current query; `null` is rejected.",
"examples": [
"Extract recent news about AI"
],
"title": "Query"
}
},
"title": "UpdateMonitorEventStreamSettings",
"type": "object"
},
{
"type": "null"
}
],
"description": "Type-specific settings to update. Only valid when `type` is `event_stream`. Pass `settings.query` to update the prompt, or `null` for `settings.advanced_settings` to clear it. Omit to leave type-specific settings unchanged; `null` is rejected."
},
"type": {
"anyOf": [
{
"enum": [
"event_stream",
"snapshot"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Type of the monitor being updated. Required when `settings` is provided; must be `event_stream` (snapshot monitors have no updatable type-specific settings). Omit when `settings` is not provided; `null` is rejected.",
"examples": [
"event_stream"
],
"title": "Type"
},
"webhook": {
"anyOf": [
{
"description": "Webhook configuration for a monitor.",
"properties": {
"event_types": {
"description": "Event types to send the webhook notifications for.",
"items": {
"enum": [
"monitor.event.detected",
"monitor.execution.completed",
"monitor.execution.failed"
],
"type": "string"
},
"title": "Event Types",
"type": "array"
},
"url": {
"description": "URL for the webhook.",
"examples": [
"https://example.com/webhook"
],
"title": "Url",
"type": "string"
}
},
"required": [
"url"
],
"title": "MonitorWebhook",
"type": "object"
},
{
"type": "null"
}
],
"description": "Webhook to receive notifications about the monitor's execution."
}
},
"title": "UpdateMonitorRequest",
"type": "object"
}
}
},
"required": true
},
"x-aisa-status": "enabled",
"x-aisa-pricing": {
"cost_contract": "explicit_zero",
"customer_pricing": "fixed_success",
"default_request_estimate_usd": 0.012,
"estimate_source": "profile_seed",
"evidence_source": "request_snapshot"
},
"components": {
"securitySchemes": {
"bearerAuth": {
"scheme": "bearer",
"type": "http"
}
}
}
}
Cost and request rules
Published reference price: $0.012 USD per successful request. Account-specific pricing and final settlement may differ. Published reference values are not an account-specific quote or a settled charge. For endpoints supporting X-AISA-Cost-Mode: quote, obtain a free quote for your exact request before execution; reconcile the settled cost with response metadata and Usage Logs. USD amounts use 1,000,000 integer micro-USD per dollar.- Default request reference estimate (USD): 0.012
- Cost contract: explicit_zero
- Settlement evidence source: request_snapshot
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Body
Request body to update a monitor.
Only fields that are explicitly included in the request body are updated.
null clears a field, and is accepted only for the fields that can be
cleared: webhook, metadata, and settings.advanced_settings. Every
other field rejects null; omit it to leave the current value unchanged.
To update type-specific settings on an event_stream monitor, include
type and settings; pass settings.query to update the prompt. If
settings is provided, type is required to identify the settings shape.
The request must still include at least one field to update; empty updates
fail validation.
Frequency of the monitor. Format: '' where unit is 'h' (hours), 'd' (days), or 'w' (weeks). Must be between 1h and 30d (inclusive). Omit to keep the current frequency; null is rejected.
"1h"
User-provided metadata stored with the monitor and echoed back in webhook notifications and GET responses, so you can map events to objects in your application. Keys: max 16 chars; values: max 512 chars.
Show child attributes
Show child attributes
{
"slack_thread_id": "1234567890.123456",
"user_id": "U123ABC"
}
Processor to use for subsequent monitor runs. lite is faster and cheaper; base performs more thorough analysis at higher cost and latency. Omit to keep the current processor; null is rejected.
lite, base "lite"
Type-specific settings to update. Only valid when type is event_stream. Pass settings.query to update the prompt, or null for settings.advanced_settings to clear it. Omit to leave type-specific settings unchanged; null is rejected.
Show child attributes
Show child attributes
Type of the monitor being updated. Required when settings is provided; must be event_stream (snapshot monitors have no updatable type-specific settings). Omit when settings is not provided; null is rejected.
event_stream, snapshot "event_stream"
Webhook to receive notifications about the monitor's execution.
Show child attributes
Show child attributes
Response
Monitor updated successfully.
Response object for a monitor.
The type field at the root determines the concrete shape of settings:
event_stream uses MonitorEventStreamResponseSettings, and snapshot
uses MonitorSnapshotResponseSettings. Snapshot monitors also carry an
output field (MonitorSnapshotOutput) with the latest computed state.
Timestamp of the creation of the monitor, as an RFC 3339 string.
"2025-01-15T10:30:00Z"
Frequency of the monitor. Format: '' where unit is 'h' (hours), 'd' (days), or 'w' (weeks). Must be between 1h and 30d (inclusive).
"1h"
"12h"
"1d"
"7d"
"30d"
ID of the monitor.
Processor to use for the monitor. lite is faster and cheaper; base performs more thorough analysis at higher cost and latency. Defaults to lite.
lite, base "lite"
"base"
Type-specific response fields for an event_stream monitor.
- MonitorEventStreamResponseSettings
- MonitorSnapshotResponseSettings
Show child attributes
Show child attributes
Status of the monitor.
active, cancelled "active"
"cancelled"
The type of monitor.
event_stream, snapshot "event_stream"
"snapshot"
Timestamp of the last run for the monitor, as an RFC 3339 string.
"2025-01-15T10:30:00Z"
User-provided metadata stored with the monitor and echoed back in webhook notifications and GET responses, so you can map events to objects in your application. Keys: max 16 chars; values: max 512 chars.
Show child attributes
Show child attributes
{
"slack_thread_id": "1234567890.123456",
"user_id": "U123ABC"
}
Runtime output state. Present only for snapshot monitors; null for event_stream monitors.
Show child attributes
Show child attributes
Webhook configuration for the monitor.
Show child attributes
Show child attributes