Monitors are a feature of the API. Create them with
POST /monitors, by
asking Claude or any MCP client (Monitors from Claude) or
from the console at
platform.usecroma.com/monitors,
where you describe the monitor in plain words or fill in a form. All three
manage the same monitors.Which endpoints can be monitored?
Every data endpoint, whichever way it is served: see Monitorable sources for the list, with what each one watches, what a run reports and when it is checked.GET /catalog marks the
same endpoints with monitorable: true. Only the web search, extraction,
generation and research tools, the batch endpoints and retired versions are
left out. A new source is monitorable the day it ships.
What a run reports depends on the endpoint:
- A search (it pages its results) reports the results that were not there before.
- A lookup of one record (a case by radicado, a company by NIT, a vehicle by plate, a person’s records) reports what changed in that record. See Watching one record.
served_from says:
served_from: "dataset": Croma refreshes these on a schedule of their own, so a monitor can follow that refresh (cadence: "source") and each run spends one credit.served_from: "live": these query the source when asked, so a monitor runs them on the clock,dailyorweekly, and each run spends the credits of one live request.
Create one
The response is the monitor with its compiled schedule:
The first run
Right after creation the monitor runs once to record what already matches today (up to 500 rows, or the record as it stands) and sends a welcome email with that count and the next run time. From then on, every run reports only what was not seen before.Watching one record
A monitor on a lookup reads the whole record on every run and compares it with the last reading. Two things can come out of a run:- The record moved. The match carries
changes: each value that differs, by its path in the record, with what it was and what it is now. - A list in the record grew. Each new item (a new action on a case, a new fine on a plate, a new filing of a company) is a match of its own, reported like a new search result.
Schedules
A monitor can never check a source more often than the source refreshes: a
daily dataset refuses hourly with schedule_faster_than_source. A
served_from: "live" endpoint has no refresh of its own to follow, so it takes
daily or weekly and refuses cadence: "source" with invalid_param. When a
source run has to go ahead without the day’s refresh (the source did not
publish), the run and its email say so: source_stale is true and the email
reads “the source has not published new data since…”, never a plain “nothing
new”.
The relevance filter
Withrelevance set, every new row is judged against your instruction before
the email goes out. Rows the filter discards are never lost: they stay in the
monitor with relevant: false and the email says how many were left out. If
the filter is unavailable, the rows are sent flagged as unreviewed rather than
dropped.
GET /monitors/{id}/matches?relevant=false lists what was discarded, with the
reason for each row.
Manage it
Every email carries an unsubscribe link for its recipient. A monitor left with
no recipients is paused.
Credits and limits
Each run spends the same credits as one request to the endpoint: one for a dataset-served search, the live rate for one that queries the source. Creating and managing monitors is free. When the organization has no credits left, the run is recorded asskipped_plan_limit, the recipients
are told once a day, and the schedule stays in place.
An organization can have up to 20 monitors, each with up to 3 recipients. A
run reports up to 500 new rows; beyond that it is flagged truncated.