List Monitors
List every X/Twitter account you are monitoring, with detection tier, status, webhook, the last tweet delivered and a rolling 24-hour match count per monitor.
/twitter/monitor/listReturn every monitor on your account, active and paused.
Headers
| Header | Type | Required | Description |
|---|---|---|---|
Authorization | string | Yes | Bearer YOUR_API_KEY, the same key used for every other GetXAPI endpoint |
Query Parameters
None. The response is scoped to your account by your API key.
Notes
- Both
activeandpausedmonitors count against your plan limit. Pausing stops delivery but keeps the slot so your configuration survives. Only removing a monitor frees one. current_usernamereflects the account's handle now. If someone changed their handle after you added the monitor, this shows the new one. Monitoring follows the permanent account ID, not the handle.match_count_24hcounts tweets matched in the last 24 hours, which is the quickest way to spot a monitor that has silently stopped producing.disabledmonitors were suspended because your subscription lapsed. Nothing is deleted: the configuration is kept, the slot is released, and after you renew, resuming revives the monitor (re-baselined, quota re-checked).
Response (200)
{
"monitors": [
{
"monitor_id": "b7e2c910-4f38-4a5d-9c81-2e6a7f0d3b45",
"target_user_id": "44196397",
"current_username": "elonmusk",
"requested_tier": "standard",
"effective_tier": "fast",
"include_replies": false,
"status": "active",
"webhook_id": "8f14e45f-ceea-467a-9f2b-1c3d4e5f6a7b",
"last_tweet_id": "1815432109876543210",
"match_count_24h": 37,
"created_at": "2026-07-26T09:14:22.000Z"
}
]
}Response Fields
| Field | Type | Description |
|---|---|---|
monitor_id | string | UUID for updating or removing |
target_user_id | string | X's permanent numeric account ID |
current_username | string | The account's handle as of now |
requested_tier | string | The tier you asked for |
effective_tier | string | The tier this account is actually polled at (see below) |
include_replies | boolean | Whether replies are delivered |
status | string | active, paused, or disabled (suspended by a plan lapse — configuration kept; resume after renewing) |
webhook_id | string | Where deliveries go |
last_tweet_id | string | null | Most recent tweet delivered. null until the first one. |
match_count_24h | number | Tweets matched in the last 24 hours |
created_at | string | ISO 8601 creation time |
requested_tier vs effective_tier
Accounts are polled once and the result shared by everyone watching them. So if another customer watching the same account requested fast, that account is polled every 2 seconds, and you receive tweets at that speed even though you asked for standard.
That's why effective_tier can read higher than requested_tier. It is never lower.
Treat it as a bonus rather than something to depend on: if the other customer removes their monitor, the account drops back to your requested tier. If you need fast reliably, request it.
Rate limit
60 requests per minute.
Limits use a fixed 60-second window and are shared across every API key on your account, so creating extra keys does not raise the ceiling. Every response carries RateLimit-Limit, RateLimit-Remaining, and RateLimit-Reset; a 429 adds Retry-After. See rate limits for the full table.
Errors
| Status | Meaning |
|---|---|
403 | Monitoring is not enabled for this account |
429 | Rate limit exceeded. Wait retry_after seconds, then retry |
Example
curl https://api.getxapi.com/twitter/monitor/list \
-H "Authorization: Bearer YOUR_API_KEY"Add MonitorNew
Start watching an X/Twitter account and receive every new tweet at your webhook within seconds. Pick 15-second standard or 2-second fast detection, no polling.
Update MonitorNew
Pause, resume, change detection tier, toggle replies, or repoint a monitor at a different webhook without recreating it. Resuming re-baselines from now on.