/v1/monitors endpoint kun je permanente monitors maken die op een vast schema draaien, paginawijzigingen detecteren en je op de hoogte stellen via e-mail, Slack, SMS of een speciale webhook.
- Maak een monitor van een natuurlijke taal
query - Beperk bronnen met
source_policy - Voer controles uit op schema’s in natuurlijke taal (minimaal elke 10 minuten, UTC)
- Configureer
notification.channelsen optionelewebhooklevering - Stream provisioning voortgang met Server-Sent Events (
?stream=1) - Lijst, inspecteer, update, pauzeer, hervat en verwijder monitors
- Lees snapshot events, planningsartefacten, run logs en live agent logs
query.
Installatie
Maak een monitor
Maak een monitor metPOST /v1/monitors. De API valideert je invoer, reserveert een monitorrecord, voorziet een schaduwagent, genereert een workflow specificatie, plaatst DAG planning in de wachtrij en creëert een terugkerend schema.
queryis vereist — beschrijf wat je wilt monitoren in natuurlijke taal.frequencyis optioneel en standaardelke uur. Gebruik planningszinnen zoalselke dag om 9 uur(schema’s draaien in UTC; minimale interval is 10 minuten).source_policybeperkt optioneelinclude_urls,exclude_urls,include_domainsenexclude_domains.notificationconfigureert wanneer en hoe te waarschuwen (events+channels). Kanaallevering wordt op runtime opgelost door de monitor pipeline — je geeft geen ontvangers door aan de DAG.webhookis een apart object ({ "url": "https://…" }) voor HTTP callbacks naastnotification.channels.output_schemadwingt optioneel gestructureerde extractie af (geldige JSON Schema).
202 met status: provisioning. De monitor gaat naar active nadat planning tracked doelen oplost. Poll GET /v1/monitors/:monitor_id of geef ?stream=1 (of Accept: text/event-stream) door om provisioning fases en spec reasoning tokens over SSE te volgen.
Voorbeeldverzoek
Je hebt alleenquery en frequency nodig. Notificatiekanalen en webhooks kunnen later worden toegevoegd met POST /v1/monitors/:monitor_id.
Respons
Succesvolle creatie (niet-streaming) retourneert HTTP202 met een monitor object. tracked is leeg totdat planning is voltooid; poll GET /v1/monitors/:monitor_id totdat status active is en tracked.urls is gevuld.
Gestructureerde monitor output
Steloutput_schema in wanneer je wilt dat extractieresultaten een specifieke JSON structuur volgen. Het schema moet een geldige JSON Schema zijn.
Provisioning stream
Voeg?stream=1 toe of stuur Accept: text/event-stream om SSE events te ontvangen terwijl de monitor wordt aangemaakt:
| Event | Beschrijving |
|---|---|
phase | Provisioning stap (running, done, of failed) |
reasoning_token | Incrementele spec-design tekst |
reasoning_reset | Truncateert gebufferde reasoning na een mislukte LLM poging |
complete | Definitief monitor object (zelfde vorm als de 202 respons) |
error | Terminale fout |
Notificaties en webhooks
Meldingen worden geconfigureerd op het monitor record en opgelost tijdens runtime — embed geen kanaaldoelen in de monitoringquery.
notification
| Veld | Beschrijving |
|---|---|
events | Welke run-uitkomsten moeten levering activeren. Zie notificatie events hieronder. Als je channels instelt en events weglaat, is de standaardinstelling zowel changed als first_snapshot. |
channels | Lijst van { "type", "target", "events"? } objecten |
Notificatie events
Gebruikevents om aan te geven wanneer je op de hoogte wilt worden gesteld. Toegestane waarden:
| Event | Betekenis |
|---|---|
changed | Meld wanneer de monitor een wijziging detecteert ten opzichte van de vorige snapshot (bijvoorbeeld nieuwe inhoud, bijgewerkte prijs, of een verschil dat de pipeline classificeert als gewijzigd). |
first_snapshot | Meld wanneer de monitor zijn eerste snapshot neemt — de initiële baseline run die de huidige inhoud opslaat voordat latere vergelijkingen worden gemaakt. |
["changed"] waarschuwt alleen bij updates na de baseline; ["first_snapshot"] bevestigt de setup zonder te wachten op een verschil; ["changed", "first_snapshot"] dekt beide.
Per-kanaal events op een kanaalobject gebruikt dezelfde waarden en overschrijft de lijst op het hoogste niveau alleen voor dat kanaal.
Ondersteunde kanaaltypen:
type | target formaat |
|---|---|
email | Geldig e-mailadres |
slack | Slack inkomende webhook URL |
sms | E.164 telefoonnummer (bijvoorbeeld +14155552671) |
webhook
Afzonderlijk van notification.channels, ontvangt webhook.url HTTP POST payloads wanneer de monitor je callback URL activeert. Je kunt zowel een webhook als kanaalnotificaties op dezelfde monitor gebruiken.
Voorbeelden
Alleen e-mail:Bronbeleid
Gebruiksource_policy om te beperken welke URL’s en domeinen de planner mag gebruiken.
Frequenties
Stelfrequency in natuurlijke taal in, bijvoorbeeld:
elke uur(standaard wanneer weggelaten)elke dag om 9 uurelke werkdag om 14:30
- Moet leesbaar zijn als plannings taal (niet een willekeurige monitor vraag).
- Minimale interval: elke 10 minuten.
- Schema’s worden opgeslagen en uitgevoerd in UTC (
schedule.timezoneisUTC). - Maximale lengte: 50 tekens.
frequency tekst en toont deze op schedule.cron. Wanneer de monitor active is, toont schedule.next_run_at de volgende run in ISO 8601.
Lijst monitors
Haal alle monitors voor je team op metGET /v1/monitors.
Standaard worden verwijderde monitors eruit gefilterd. Gebruik ?include_deleted=true om ze op te nemen.
Responsvorm
Haal een monitor op
Haal een enkele monitor op metGET /v1/monitors/:monitor_id.
De respons bevat last_run (laatste snapshot samenvatting) en total_count (aantal snapshots) tenzij je include_total_count=false doorgeeft. Voeg include-diagram=true toe om een mermaid_diagram van de monitor DAG op te nemen.
Responsvorm
Lijst monitor events
GebruikGET /v1/monitors/:monitor_id/events om snapshot events voor een monitor op te sommen.
Paginering:
limit(standaard25, max100)cursor(ondoorzichtige token vannext_cursor)count_only=trueretourneert alleen{ "total_count": N }
snapshot_url.
Responsvorm
Haal monitor planning op
GebruikGET /v1/monitors/:monitor_id/planning om de FDA workflow specificatie en planner DAG na provisioning te inspecteren.
Haal een monitor run op
GebruikGET /v1/monitors/:monitor_id/runs/:run_id voor snapshot metadata en geparseerde agent log events voor één uitvoering (run_id moet beginnen met run_).
Stream agent logs
GebruikGET /v1/monitors/:monitor_id/agent-logs?stream=1 (of Accept: text/event-stream) om CloudWatch logs voor de agent van de monitor te volgen, gefilterd op deze monitor_id.
Optionele queryparameter since is een milliseconde-timestamp (standaard: 30 minuten geleden).
SSE event types: ready, log, heartbeat, error.
Update een monitor
Update een monitor metPOST /v1/monitors/:monitor_id.
Ondersteunde velden (inclusief alleen wat je wilt wijzigen):
metadata— samengevoegd met bestaande sleutels; lege stringwaarden verwijderen sleutelsfrequency— hercreëert het interne schema en steltstatusterug naaractivenotification— vervangt het gehele notificatieobjectwebhook— geefnulldoor om te verwijderen
409 terwijl status provisioning is.
Wanneer je notification.channels toevoegt zonder events, stelt de API events standaard in op ["changed", "first_snapshot"].
Voeg e-mailnotificatie toe
Voeg webhook toe
Pauzeer een monitor
Pauzeer een monitor metPOST /v1/monitors/:monitor_id/pause.
Pauzeren schakelt het onderliggende schema uit en stelt status in op paused. Alleen monitors met status: active kunnen worden gepauzeerd. Het verzoeklichaam is leeg.
200 met de monitor en status: paused. schedule.next_run_at is null terwijl gepauzeerd.
Hervat een monitor
Hervat een gepauzeerde monitor metPOST /v1/monitors/:monitor_id/resume.
Hervatten schakelt het schema weer in en stelt status terug naar active. Alleen paused monitors kunnen worden hervat.
Verwijder een monitor
Verwijder een monitor metDELETE /v1/monitors/:monitor_id.
Verwijdering soft-verwijdert de monitor rij (status: deleted) en verwijdert zijn schema en schaduwagent resources.
Monitor status
| Status | Betekenis |
|---|---|
provisioning | Agent, spec, planner en schema worden ingesteld |
active | Schema ingeschakeld; runs worden uitgevoerd op schedule.frequency |
paused | Schema uitgeschakeld via /pause |
failed | Provisioning of schema update mislukt (error_message ingesteld) |
deleted | Soft-verwijderd via DELETE |
Voorbeeld gebruiksscenario’s
Hieronder staan veelvoorkomende monitorpatronen. Elk voorbeeld heeft alleenquery en frequency nodig bij het aanmaken; voeg notification en webhook later toe als je meldingen wilt bij de eerste run of bij wijzigingen.
Y Combinator nieuwe lanceringen
Houd Y Combinator Launches in de gaten voor nieuw gepubliceerde startups. Na planning istracked.type urls en wijst tracked.urls naar de launches pagina.
active is:
channels ingesteld en events weggelaten, stelt de API standaard ["changed", "first_snapshot"] in zodat je wordt gewaarschuwd bij de baseline run en wanneer een wijziging wordt gedetecteerd.
Concurrent blogposts (AirOps, Profound)
Monitor een concurrent blogindex voor nieuwe posts. De planner losttracked.urls op naar de blog URL (bijvoorbeeld https://www.airops.com/blog of https://www.tryprofound.com/blog).
events: ["changed"] op notification als je alleen meldingen wilt wanneer nieuwe posts verschijnen, niet bij de eerste baseline snapshot.
Aandelenprijsdrempel (Tesla)
Monitor een gestructureerde gegevensbron wanneer de voorwaarde numeriek is in plaats van een paginaverschil. De planner stelttracked.type in op data_api en laat tracked.urls leeg.
OpenAI API changelog
Ontvang meldingen wanneer OpenAI’s API changelog nieuwe functies, modelreleases of afschrijvingen vermeldt. Noem de changelog URL inquery of pin het met source_policy.include_urls.
events in op ["changed"] zodat je wordt gewaarschuwd wanneer de changelog inhoud verandert, niet alleen wanneer de eerste snapshot is opgeslagen.
Beheer van meerdere monitors
Lijst elke monitor voor je team om status, schema’s en opgeloste doelen op één plek te zien:data_api prijswacht, en een YC launches monitor met e-mail en webhook geconfigureerd—met "count": 4 (of meer) in de respons.
Veelvoorkomende validatiefouten
De monitor endpoints geven duidelijke validatiefouten terug voor veelvoorkomende ongeldige verzoeken:- Ontbrekende of lege
query frequencydie geen plannings taal is, te vaak oplost (onder 10 minuten), of meer dan 50 tekens bevat- Ongeldige
source_policyvermeldingen (URL arrays moeten geldigehttp/httpsstrings bevatten) - Ongeldige
notificationvorm, onbekendeevents, of ongeldig kanaaltype/target - Ongeldige
webhook.url(moethttpofhttpszijn) - Ongeldige
output_schema(moet een geldige JSON Schema zijn) - Ongeldige
monitor_idofrun_idformaat - Update terwijl
statusprovisioningis (409) - Pauzeer/hervat wanneer status niet
active/pausedis