API reference

Update a Monitor API

Pause, resume, rename, reschedule or re-scope one of your monitors. Give at least one field besides id.

Endpoint

GET/v1/monitors/updatelive · provenfree
Try in Playground

Monitor relevance

Optional filtering and saved matching results

Use relevance_enabled, relevance_prompt and exclusions on creation or update. Monitor reads return the settings; findings return retained matches and evidence; runs show processing and undecided counts. Dashboard, API and MCP share the same backend. Follow the setup and pagination examples, uncertainty guide or Claude/MCP example.

Parameters

Query parameters

Useful optional inputs

  • rules — For metric monitoring, set rules.metric_fields to published numeric JSON pointers before scheduling; missing values are not zero.

    Preview the estimate first. Confirmed tests use the existing source price; invalid paths are uncharged.

  • sources — Restrict a multi-source request to the platforms useful for your task.

    Use dry_run to inspect the resulting quote before fetching.

  • dry_run — Read a free estimate before fetching sources or scheduling paid work.

    Zero credits; cache status and availability are snapshots rather than guarantees.

NameRequiredDescriptionExample
idyesMonitor idmon_0f2c8b1d4e6a7c9b0d1e2f3a
statusnoactive to resume runs, paused to stop them. Pausing clears the next run time; resuming schedules the next run one interval from now. Accepted values: active, paused. Case, spaces, hyphens and underscores are interchangeable.paused
namenoNew label; pass an empty string to clear itMonzo complaints
schedule_minutesnoNew interval between runs; minimum 15, maximum 43200. Rescheduling re-times the next run from now.1440
monthly_cap_creditsnoLegacy field accepted for compatibility but ignored and returned as null. It does not impose a spending cap. Account balance, quoted run cost and existing account safeguards still apply.
delivery_in_appnosubject/feed: in-app notifications on or offtrue
delivery_webhooknosubject/feed: signed webhook deliveries on or offfalse
sourcesnosubject: replace the platforms searchedreddit,hackernews
relationshipsnosubject: replace which classes of material count Accepted values (comma-separated): independent_audience, editorial_news, official_owned, employee_team, collaborator_partner, fan_clip. Case, spaces, hyphens and underscores are interchangeable.independent_audience
filtersnosubject: replace the purpose filters Accepted values (comma-separated): complaints, switching, buying, bugs_crashes, bugs_glitches, bugs_exploits, bugs_blockers, bugs_performance, requests, questions. Case, spaces, hyphens and underscores are interchangeable.complaints
max_meterednosubject: metered platforms per run, 0-21
outputnosubject and feed: report (each run leads with what changed and why it matters, every line with its receipts; the default for the intelligence templates) or everything (every new post, comment or review, listed; the default for feeds and follow templates)report
destinationsnoJSON array of where alerts go and how often. kind: email (the account address), endpoint (one of your Slack channels, Discord channels or webhooks by endpoint_id; omit endpoint_id for every active endpoint), push (the devices that turned push on). cadence: immediate, daily or weekly. min_severity for immediate: info (every new finding), notable or critical. The monitor page is always included unless delivery_in_app=false. Replaces delivery_email, delivery_webhook and delivery_mode when given.[{"kind":"endpoint","endpoint_id":"whk_…","cadence":"immediate","min_severity":"notable"},{"kind":"email","cadence":"daily"}]
feeds_jsonnoSeveral feeds at once, as a JSON array of {platform, endpoint, params}. Follow an account reads timelines: x/tweets (handle, metered), bluesky/user/posts (handle), youtube/channel/videos (handle or url). Every feed must be live-proven on this deployment; the review says so per feed.[{"platform":"bluesky","endpoint":"user/posts","params":{"handle":"name.bsky.social"}},{"platform":"youtube","endpoint":"channel/videos","params":{"handle":"name"}}]
dry_runnoRead a zero-credit estimate without fetching sources, running AI, or reserving credits. Cache status is a snapshot, not a guarantee at execution. Accepted values: 1, 0, true, false. Case, spaces, hyphens and underscores are interchangeable.1
rulesnoOptional change-monitor rules as a JSON object. Use metric_fields with up to 10 published numeric object JSON pointers (for example /followers or /stats/likes), with result_mode=changes. Unknown/nonnumeric paths are rejected before a source call or charge; missing actual values are not zero and the check is refunded. Numeric selection replaces family rules. Or use watch_fields for generic field comparisons. See /docs/monitors#metric-fields.{"metric_fields":["/followers"]}
relevance_enablednoOptional on every monitor. Enable or disable relevance filtering. Enabling requires a nonempty relevance_prompt.true
relevance_promptnoUp to 600 characters describing what should trigger an alert. A nonempty value enables filtering unless explicitly disabled. Empty clears it.Only genuine requests for recommendations; exclude promotions.
exclusionsnoComma-separated phrases skipped before AI; empty clears. Returned by monitor read tools.sponsored,job opening

Examples

Make the request

curl
curl "https://www.monocrawl.com/v1/monitors/update?id=mon_0f2c8b1d4e6a7c9b0d1e2f3a" \
  -H "x-api-key: mn_your_key_here"
TypeScript
typescript
const key = process.env.MONOCRAWL_API_KEY;
if (!key) throw new Error('Set MONOCRAWL_API_KEY on your server.');
const res = await fetch(
  "https://www.monocrawl.com/v1/monitors/update?id=mon_0f2c8b1d4e6a7c9b0d1e2f3a",
  { headers: { "x-api-key": key } },
);
const body = await res.json();

if (!body.success) {
  // one error shape for every endpoint — see /docs/errors
  throw new Error(`${body.error.type}: ${body.error.message}`);
}

console.log(body.data, "credits left:", body.credits_remaining);
Python
python
import os
import requests

res = requests.get(
    "https://www.monocrawl.com/v1/monitors/update?id=mon_0f2c8b1d4e6a7c9b0d1e2f3a",
    headers={"x-api-key": os.environ["MONOCRAWL_API_KEY"]},
    timeout=60,
)
body = res.json()

if not body["success"]:
    # one error shape for every endpoint — see /docs/errors
    raise RuntimeError(f"{body['error']['type']}: {body['error']['message']}")

print(body["data"], "credits left:", body["credits_remaining"])

Response

Response fields and example

This example is illustrative, not a captured live response. Variable-cost operations may settle a charge different from the list price below. A successful response puts the platform payload in data and reports the exact credits used, remaining balance, request id and cache status beside it.

200 · application/json
{
  "success": true,
  "platform": "monitors",
  "endpoint": "/v1/monitors/update",
  "data": {
    "id": null,
    "kind": null,
    "name": null,
    "description": null,
    "status": null,
    "workflow": null,
    "capped_reason": null,
    "target_label": null,
    "group_id": null,
    "last_run_at": null,
    "last_success_at": null,
    "next_run_at": null,
    "created_at": null,
    "schedule_minutes": 0,
    "estimated_credits_per_run": 0,
    "monthly_cap_credits": 0,
    "credits_spent_month": 0,
    "consecutive_failures": 0,
    "target": {},
    "subject": {},
    "delivery": {},
    "last_run": {}
  },
  "credits_used": 0,
  "credits_remaining": 99,
  "request_id": "req_…",
  "cached": false
}

The example is illustrative and shows a documented subset of data. The fields below are optional across supported sources; nullable fields can also be absent. Preserve unknown values and accept additional fields.

Schema basis: reviewed response shaper. See schema coverage and validation limits.

Download the data JSON Schema. Validate response.data, not the whole envelope. A valid shape does not establish that every field or source record was returned.

Field inside dataTypeMeaning
idstring | nullid
kindstring | nullkind
namestring | nullname
descriptionstring | nulldescription
statusstring | nullstatus
workflowstring | nullworkflow
capped_reasonstring | nullcapped reason
target_labelstring | nulltarget label
group_idstring | nullgroup id
last_run_atstring | nulllast run at
last_success_atstring | nulllast success at
next_run_atstring | nullnext run at
created_atstring | nullcreated at
schedule_minutesnumber | nullschedule minutes
estimated_credits_per_runnumber | nullestimated credits per run
monthly_cap_creditsnumber | nullmonthly cap credits
credits_spent_monthnumber | nullcredits spent month
consecutive_failuresnumber | nullconsecutive failures
targetobject | nullNested response fields; optional unless explicitly documented.
subjectobject | nullNested response fields; optional unless explicitly documented.
deliveryobject | nullNested response fields; optional unless explicitly documented.
last_runobject | nullNested response fields; optional unless explicitly documented.

Core response fields reviewed from the public response shaper. Fields vary by requested options; additive fields remain allowed.

Failures use the typed error envelope. A confirmed uncharged or refunded failure reports zero; a pending reconciliation can report an unknown charge. Read credits_used and error.details.billing_status, and keep request_id for recovery. Response contract · Error reference

First call in under a minute

150 free credits and a ready-made key the moment you sign up. No card.