Compat: List Tweet-Monitored Users API
An x_user_stream-shaped response envelope for listing monitored users, backed by the same monitor rows GET /twitter/monitor returns. Honest field mapping, not fabricated: our monitors table stores no numeric Twitter user id and no separate display name, so x_user_id is always null and x_user_name/x_user_screen_name both carry the handle we actually store. is_monitor_profile (profile-change monitoring) is not a capability this API has -- always 0, never reported as on. Cost: Free per call.
GET oapi/x_user_stream/get_user_to_monitor_tweet returns the twitterapis.com developer's current list of tweet-monitored X users, formatted in the response envelope of the legacy x_user_stream API. Data is pulled from the same monitor rows GET /twitter/monitor returns. x_user_id is always null and is_monitor_profile is always 0, since this API has no numeric-ID storage or profile-change monitoring capability. The call is free.
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/oapi/x_user_stream/get_user_to_monitor_tweet"{ "status": "success", "msg": "1 monitored user(s).", "data": [ { "id_for_user": "b6f2c1a4-9e3d-4c11-8a2f-7d5e6c9b0a11", "x_user_id": null, "x_user_name": "elonmusk", "x_user_screen_name": "elonmusk", "is_monitor_tweet": 1, "is_monitor_profile": 0, "monitor_tweet_config_status": 1, "monitor_profile_config_status": 0, "created_at": "2026-08-13T10:00:00.000Z" } ]}{ "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 this endpoint only when migrating an integration off the legacy x_user_stream API and you need its exact response shape (id_for_user, x_user_id, monitor_tweet_config_status fields) preserved. For new Monitoring integrations, call GET /twitter/monitor directly instead, since this endpoint returns the same underlying rows through a compatibility envelope with two fields (x_user_id, is_monitor_profile) permanently stubbed.
Notes
- Scoped to your own key's monitors only.
- id_for_user from this response is what POST /oapi/x_user_stream/remove_user_to_monitor_tweet expects as id_for_user.
- Lives at /oapi/x_user_stream/..., not under /twitter/ -- match the base URL in the example exactly.
Related endpoints
- Create Monitor: Watch an X account for new posts and push them to your webhook(s).
- List Monitors: List every monitor on your account.
FAQ
Why is x_user_id always null in the response?
The monitors table backing this endpoint stores no numeric Twitter user id, only x_user_name and x_user_screen_name. Any integration that expects a populated x_user_id (as the original x_user_stream API returned) must switch to matching on screen name instead.
Does this endpoint let me filter or paginate the monitor list?
No. The params array is empty, so the call takes no query parameters and always returns the full set of monitored-user objects in the data array. Use the msg field for a human-readable count of how many rows came back.
Compat: Remove User from Tweet Monitoring POST
An x_user_stream-shaped request/response envelope for removing a monitored user, translated onto DELETE /twitter/monitor/{id}. id_for_user is exactly our monitor id -- get it from get_user_to_monitor_tweet, i.e. it is an opaque handle from that list response, which is what our id already is. Cost: Free per call.
Account Monitor Health GET
Returns a single-call summary of your entire monitoring setup: overall status, how many of your monitors are active vs paused, and how many delivery attempts in the last 24 hours were pending, delivered, or failed. Distinct from Monitor Health above, which reports one monitor's cursor state, not your whole account's. Cost: Free per call.