List Monitors API
Returns every non-deleted monitor on your account, most recently created first. Each entry includes its id, subject, status, and delivery configuration, so you can enumerate what already exists before creating, updating, or deleting a specific monitor. Cost: Free per call.
GET /monitor lists every non-deleted monitor on the calling account, ordered most recently created first. It returns a monitors array with each object's id, subject, kind, status, degraded flag, events_possibly_missed flag, attached webhook_ids, domain_filter, and created_at timestamp, plus a count of monitors returned. The call is free and takes no parameters.
Authorization
bearerAuth Pass your API key as a bearer token on every request: Authorization: Bearer <API_KEY>.
In: header
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/monitor"{ "monitors": [ { "id": "b6f2c1a4-9e3d-4c11-8a2f-7d5e6c9b0a11", "subject": "from:elonmusk", "kind": "account", "status": "active", "degraded": false, "events_possibly_missed": 0, "webhook_ids": null, "domain_filter": null, "created_at": "2026-08-13T10:00:00.000Z" } ], "count": 1}{ "error": "bad_request", "message": "Missing or malformed parameter. Fix the request before retrying."}{ "error": "unauthorized", "message": "The API key is missing, malformed, or revoked. Check the Authorization header."}{ "error": "insufficient_credits", "message": "Your balance is exhausted. Top up your credits to continue."}{ "error": "not_found", "message": "The resource does not exist, for example a deleted tweet or a private account."}{ "error": "rate_limited", "message": "Too many requests. Back off and retry with exponential backoff."}{ "error": "server_error", "message": "Something failed on our side. Retry with backoff; if it persists, contact support."}Pricing
| Unit | Price |
|---|---|
| Per call | Free |
When to use
Use GET monitor to retrieve the full current inventory of monitors on the account, for example to render a dashboard, check which monitors are degraded, or look up a monitor's id, webhook_ids, or domain_filter before calling a sibling monitor endpoint. It takes no parameters and returns every monitor in one call, so use it instead of tracking monitor ids yourself when you need to enumerate what already exists.
Notes
- "degraded": true means the shared pool cannot currently serve this monitor at the published interval; it is still polled, just slower, and this is always surfaced rather than silently absorbed.
- "events_possibly_missed" increments when a poll finds more matching posts than a single page can recover, so it is never silently hidden behind a byte-identical-to-empty response.
Related endpoints
- Create Monitor: Watch an X account for new posts and push them to your webhook(s).
- Update Monitor: Pause, resume, or change which webhooks a monitor delivers to.
FAQ
Does this endpoint return deleted monitors?
No. It returns only non-deleted monitors on the account. A monitor removed via the delete endpoint no longer appears in this list, and there is no flag in the response to include deleted ones.
How do I check if a monitor has missed events or is degraded?
Read the degraded and events_possibly_missed fields on each object in the monitors array returned by this endpoint. There are no query parameters to filter for these states server-side, so filter the returned array client-side by those two fields.
Does listing monitors cost anything?
No, this endpoint has a cost of 0. It also takes no parameters, so there is no way to paginate or filter the request itself; the full list of non-deleted monitors is returned every call, most recently created first.
Create Monitor POST
Start watching an X account. Every new post from that account is delivered, HMAC-signed, to your registered webhook(s) on a shared poll interval. Free: monitor creation is account administration, not a metered read. Cost: Free per call.
Update Monitor POST
Partial update of an existing monitor. Send status to pause or resume it, webhook_ids to change which webhooks receive its events, or both in the same call (applied atomically). Resuming a paused monitor re-runs the same capacity and per-account cap checks as creating a new one, since it adds load back to the shared pool. Cost: Free per call.