Monitors
Save searches on a schedule and read the results through the same content model.
Use monitors when a user wants to keep watching a topic instead of running the same search by hand. A monitor has two parts:
search: the standing query and filters.schedule: when the monitor should run.
The saved search is intentionally smaller than a one-off content search. A monitor does not store start_date, end_date, or limit. Omnist computes the date window when the monitor runs, and each dated job uses an internal limit of 1000 results.
Create a Monitor
{
"name": "Battery supply chain coverage",
"description": "Coverage of battery materials, export controls, and industrial policy.",
"search": {
"query": "battery supply chains export controls",
"media_types": ["news", "wire", "podcast"],
"include_domains": ["reuters.com", "ft.com"]
},
"schedule": {
"frequency": "daily",
"timezone": "America/New_York",
"run_time": "07:30"
}
}
Schedules are either hourly or daily. For hourly schedules, set minute. For daily schedules, set run_time in HH:MM format. If you leave the timing out, Omnist uses the monitor creation time in the configured timezone. Timezone defaults to UTC.
Monitors cannot be edited after creation. Delete a monitor when it should stop permanently.
Scheduled Runs
When a monitor runs on schedule, Omnist queues four jobs in parallel:
- the current UTC date
- the previous UTC date
- two days before the current UTC date
- three days before the current UTC date
The timezone in the schedule is for user-facing wall-clock configuration. The content dates are UTC.
Scheduled runs are internal work. They do not count against API rate limits.
Read Results
Use GET /v1/monitors/{monitor_id}/results for the saved result stream. Each result includes the result ID, run ID, observation time, and content item.
Use POST /v1/monitors/{monitor_id}/search when a user wants to search inside a monitor's collected results. It accepts the same request body as POST /v1/content/search.
Backfill Dates
Use POST /v1/monitors/{monitor_id}/backfills to queue specific UTC published dates. The endpoint returns immediately with a parent task_id and per-date queue information.
{
"dates": ["2026-05-01", "2026-05-02", "2026-05-03"]
}
Check progress with GET /v1/monitors/{monitor_id}/backfills/{task_id}. A backfill date can be queued, running, succeeded, failed, skipped, already complete, or already running.
By default, a backfill skips a date when that date already has a completed backfill whose run date was more than 72 hours after the published date. The response includes already_complete and latest_indexed_content so an integration can decide whether any follow-up is needed.