/v1/monitors kannst du dauerhafte Monitore erstellen, die nach einem festen Zeitplan laufen, Seitenänderungen erkennen und dich per E-Mail, Slack, SMS oder einem dedizierten Webhook benachrichtigen.
- Erstelle einen Monitor aus einer natürlichen Sprach-
query - Begrenze Quellen mit
source_policy - Führe Überprüfungen nach Zeitplänen in natürlicher Sprache durch (mindestens alle 10 Minuten, UTC)
- Konfiguriere
notification.channelsund optionalewebhook-Lieferung - Streame den Bereitstellungsfortschritt mit Server-Sent Events (
?stream=1) - Liste, inspiziere, aktualisiere, pausiere, setze fort und lösche Monitore
- Lies Snapshot-Ereignisse, Planungsartefakte, Laufprotokolle und Live-Agentenprotokolle
query aus.
Installation
Erstelle einen Monitor
Erstelle einen Monitor mitPOST /v1/monitors. Die API validiert deine Eingaben, reserviert einen Monitor-Datensatz, stellt einen Schattenagenten bereit, generiert eine Workflow-Spezifikation, reiht die DAG-Planung ein und erstellt einen wiederkehrenden Zeitplan.
queryist erforderlich — beschreibe, was in natürlicher Sprache überwacht werden soll.frequencyist optional und standardmäßig aufjede Stundegesetzt. Verwende Planungsphrasen wiejeden Tag um 9 Uhr(Zeitpläne laufen in UTC; Mindestintervall ist 10 Minuten).source_policyschränkt optionalinclude_urls,exclude_urls,include_domainsundexclude_domainsein.notificationkonfiguriert, wann und wie benachrichtigt werden soll (events+channels). Die Kanalzustellung wird zur Laufzeit durch die Monitor-Pipeline aufgelöst — du übergibst keine Empfänger an die DAG.webhookist ein separates Objekt ({ "url": "https://…" }) für HTTP-Rückrufe zusätzlich zunotification.channels.output_schemaerzwingt optional eine strukturierte Extraktion (gültiges JSON-Schema).
202 mit status: provisioning. Der Monitor wechselt zu active, nachdem die Planung tracked-Ziele aufgelöst hat. Poll GET /v1/monitors/:monitor_id oder übergebe ?stream=1 (oder Accept: text/event-stream), um die Bereitstellungsphasen und Spezifikationsbegründungstoken über SSE zu verfolgen.
Beispielanfrage
Du benötigst nurquery und frequency. Benachrichtigungskanäle und Webhooks können später mit POST /v1/monitors/:monitor_id hinzugefügt werden.
Antwort
Eine erfolgreiche Erstellung (nicht-streaming) gibt HTTP202 mit einem Monitor-Objekt zurück. tracked ist leer, bis die Planung abgeschlossen ist; poll GET /v1/monitors/:monitor_id, bis status active ist und tracked.urls gefüllt ist.
Strukturierte Monitor-Ausgabe
Setzeoutput_schema, wenn du möchtest, dass die Extraktionsergebnisse einer bestimmten JSON-Struktur folgen. Das Schema muss ein gültiges JSON-Schema sein.
Bereitstellungsstream
Füge?stream=1 hinzu oder sende Accept: text/event-stream, um SSE-Ereignisse zu erhalten, während der Monitor erstellt wird:
| Ereignis | Beschreibung |
|---|---|
phase | Bereitstellungsschritt (running, done oder failed) |
reasoning_token | Inkrementeller Spezifikationsentwurfstext |
reasoning_reset | Kürzt gepufferte Begründungen nach einem fehlgeschlagenen LLM-Versuch |
complete | Endgültiges Monitorobjekt (gleiche Form wie die 202-Antwort) |
error | Endgültiger Fehler |
Benachrichtigungen und Webhooks
Benachrichtigungen werden im Monitor-Datensatz konfiguriert und zur Laufzeit aufgelöst — bette keine Kanalziele in die Überwachungs-query ein.
notification
| Feld | Beschreibung |
|---|---|
events | Welche Lauf-Ergebnisse sollen die Zustellung auslösen. Siehe Benachrichtigungsereignisse unten. Wenn du channels setzt und events weglässt, ist der Standardwert sowohl changed als auch first_snapshot. |
channels | Liste von { "type", "target", "events"? } Objekten |
Benachrichtigungsereignisse
Verwendeevents, um anzugeben, wann du benachrichtigt werden möchtest. Erlaubte Werte:
| Ereignis | Bedeutung |
|---|---|
changed | Benachrichtige, wenn der Monitor eine Änderung im Vergleich zum vorherigen Snapshot erkennt (zum Beispiel neuer Inhalt, aktualisierter Preis oder ein Unterschied, den die Pipeline als geändert klassifiziert). |
first_snapshot | Benachrichtige, wenn der Monitor seinen ersten Snapshot erstellt — der erste Baseline-Lauf, der den aktuellen Inhalt speichert, bevor spätere Vergleiche durchgeführt werden. |
["changed"] benachrichtigt nur bei Updates nach der Baseline; ["first_snapshot"] bestätigt die Einrichtung, ohne auf einen Unterschied zu warten; ["changed", "first_snapshot"] deckt beides ab.
Pro-Kanal-events auf einem Kanalobjekt verwenden die gleichen Werte und überschreiben die Top-Level-Liste nur für diesen Kanal.
Unterstützte Kanaltypen:
type | target Format |
|---|---|
email | Gültige E-Mail-Adresse |
slack | Slack-Eingangs-Webhook-URL |
sms | E.164-Telefonnummer (zum Beispiel +14155552671) |
webhook
Unabhängig von notification.channels empfängt webhook.url HTTP-POST-Nutzlasten, wenn der Monitor deine Callback-URL auslöst. Du kannst sowohl einen Webhook als auch Kanalbenachrichtigungen auf demselben Monitor verwenden.
Beispiele
Nur E-Mail:Quellenrichtlinie
Verwendesource_policy, um einzuschränken, welche URLs und Domains der Planer verwenden darf.
Frequenzen
Setzefrequency in natürlicher Sprache, zum Beispiel:
jede Stunde(Standard, wenn weggelassen)jeden Tag um 9 Uhrjeden Wochentag um 14:30 Uhr
- Muss als Planungssprache lesbar sein (keine willkürliche Monitorfrage).
- Mindestintervall: alle 10 Minuten.
- Zeitpläne werden in UTC gespeichert und ausgeführt (
schedule.timezoneistUTC). - Maximale Länge: 50 Zeichen.
frequency-Text ab und zeigt ihn in schedule.cron an. Wenn der Monitor active ist, zeigt schedule.next_run_at den nächsten Lauf in ISO 8601 an.
Monitore auflisten
Rufe alle Monitore für dein Team mitGET /v1/monitors ab.
Standardmäßig werden gelöschte Monitore herausgefiltert. Verwende ?include_deleted=true, um sie einzuschließen.
Antwortform
Einen Monitor abrufen
Rufe einen einzelnen Monitor mitGET /v1/monitors/:monitor_id ab.
Die Antwort enthält last_run (zusammenfassende Informationen des letzten Snapshots) und total_count (Anzahl der Snapshots), es sei denn, du übergibst include_total_count=false. Füge include-diagram=true hinzu, um ein mermaid_diagram des Monitor-DAGs einzuschließen.
Antwortform
Monitor-Ereignisse auflisten
VerwendeGET /v1/monitors/:monitor_id/events, um Snapshot-Ereignisse für einen Monitor aufzulisten.
Paginierung:
limit(Standard25, max100)cursor(undurchsichtiger Token ausnext_cursor)count_only=truegibt nur{ "total_count": N }zurück
snapshot_url.
Antwortform
Monitor-Planung abrufen
VerwendeGET /v1/monitors/:monitor_id/planning, um die FDA-Workflow-Spezifikation und den Planer-DAG nach der Bereitstellung zu inspizieren.
Einen Monitorlauf abrufen
VerwendeGET /v1/monitors/:monitor_id/runs/:run_id für Snapshot-Metadaten und geparste Agentenprotokollereignisse für eine Ausführung (run_id muss mit run_ beginnen).
Agentenprotokolle streamen
VerwendeGET /v1/monitors/:monitor_id/agent-logs?stream=1 (oder Accept: text/event-stream), um CloudWatch-Protokolle für den Agenten des Monitors zu verfolgen, gefiltert auf diese monitor_id.
Optionaler Abfrageparameter since ist ein Millisekunden-Zeitstempel (Standard: vor 30 Minuten).
SSE-Ereignistypen: ready, log, heartbeat, error.
Einen Monitor aktualisieren
Aktualisiere einen Monitor mitPOST /v1/monitors/:monitor_id.
Unterstützte Felder (nur das einfügen, was du ändern möchtest):
metadata— wird mit vorhandenen Schlüsseln zusammengeführt; leere Zeichenfolgenwerte löschen Schlüsselfrequency— erstellt den internen Zeitplan neu und setztstatuszurück aufactivenotification— ersetzt das gesamte Benachrichtigungsobjektwebhook—nullübergeben, um zu entfernen
409 zurück, während status provisioning ist.
Wenn du notification.channels ohne events hinzufügst, setzt die API events standardmäßig auf ["changed", "first_snapshot"].
E-Mail-Benachrichtigung hinzufügen
Webhook hinzufügen
Einen Monitor pausieren
Pausiere einen Monitor mitPOST /v1/monitors/:monitor_id/pause.
Das Pausieren deaktiviert den zugrunde liegenden Zeitplan und setzt status auf paused. Nur Monitore mit status: active können pausiert werden. Der Anfragetext ist leer.
200 mit dem Monitor und status: paused zurückgegeben. schedule.next_run_at ist null, während pausiert.
Einen Monitor fortsetzen
Setze einen pausierten Monitor mitPOST /v1/monitors/:monitor_id/resume fort.
Das Fortsetzen aktiviert den Zeitplan erneut und setzt status zurück auf active. Nur paused-Monitore können fortgesetzt werden.
Einen Monitor löschen
Lösche einen Monitor mitDELETE /v1/monitors/:monitor_id.
Das Löschen löscht die Monitorzeile soft (status: deleted) und entfernt seine Zeitplan- und Schattenagenten-Ressourcen.
Monitorstatus
| Status | Bedeutung |
|---|---|
provisioning | Agent, Spezifikation, Planer und Zeitplan werden eingerichtet |
active | Zeitplan aktiviert; Läufe werden gemäß schedule.frequency ausgeführt |
paused | Zeitplan über /pause deaktiviert |
failed | Bereitstellung oder Zeitplanaktualisierung fehlgeschlagen (error_message gesetzt) |
deleted | Soft-gelöscht über DELETE |
Beispielanwendungsfälle
Nachfolgend sind gängige Monitor-Muster aufgeführt. Jedes Beispiel benötigt nurquery und frequency zur Erstellungszeit; füge notification und webhook später hinzu, wenn du Benachrichtigungen beim ersten Lauf oder bei Änderungen möchtest.
Neue Y Combinator-Starts
Beobachte Y Combinator Launches für neu veröffentlichte Startups. Nach der Planung isttracked.type urls und tracked.urls zeigt auf die Launches-Seite.
active ist:
channels gesetzt und events weggelassen, setzt die API standardmäßig ["changed", "first_snapshot"], sodass du beim Baseline-Lauf und bei jeder erkannten Änderung benachrichtigt wirst.
Wettbewerber-Blogbeiträge (AirOps, Profound)
Überwache einen Wettbewerber-Blog-Index auf neue Beiträge. Der Planer lösttracked.urls zur Blog-URL auf (zum Beispiel https://www.airops.com/blog oder https://www.tryprofound.com/blog).
events: ["changed"] auf notification, wenn du nur Benachrichtigungen möchtest, wenn neue Beiträge erscheinen, nicht beim ersten Baseline-Snapshot.
Aktienkurs-Schwelle (Tesla)
Überwache eine strukturierte Datenquelle, wenn die Bedingung numerisch ist und nicht ein Seitenunterschied. Der Planer setzttracked.type auf data_api und lässt tracked.urls leer.
OpenAI API-Änderungsprotokoll
Lass dich benachrichtigen, wenn das OpenAI API-Änderungsprotokoll neue Funktionen, Modellveröffentlichungen oder Abkündigungen auflistet. Erwähne die Änderungsprotokoll-URL inquery oder fixiere sie mit source_policy.include_urls.
events auf ["changed"], damit du benachrichtigt wirst, wenn sich der Inhalt des Änderungsprotokolls ändert, nicht nur, wenn der erste Snapshot gespeichert wird.
Verwaltung mehrerer Monitore
Liste jeden Monitor für dein Team auf, um Status, Zeitpläne und aufgelöste Ziele an einem Ort zu sehen:data_api-Preisüberwachung und einen YC-Launches-Monitor mit konfigurierter E-Mail- und Webhook-Benachrichtigung — mit "count": 4 (oder mehr) in der Antwort.
Häufige Validierungsfehler
Die Monitor-Endpunkte geben klare Validierungsfehler für häufige ungültige Anfragen zurück:- Fehlende oder leere
query frequency, die keine Planungssprache ist, zu oft auflöst (unter 10 Minuten) oder 50 Zeichen überschreitet- Ungültige
source_policy-Einträge (URL-Arrays müssen gültigehttp/https-Zeichenfolgen enthalten) - Ungültige
notification-Form, unbekannteeventsoder ungültiger Kanal-type/target - Ungültige
webhook.url(musshttpoderhttpssein) - Ungültiges
output_schema(muss gültiges JSON-Schema sein) - Ungültiges
monitor_idoderrun_id-Format - Aktualisierung, während
statusprovisioningist (409) - Pause/fortsetzen, wenn der Status nicht
active/pausedist