TwitterAPIs Docs
API ReferenceUser Reads

Muted Accounts API

Return the accounts muted by the account behind your registered session, as full user objects, cursor-paginated. Muting hides someone's posts from your timeline without blocking them, so this list is distinct from GET /user/blocking. This reads your OWN mute list; X exposes no way to read another account's, so there is no user_id parameter. Requires a registered session or per-call inline credentials. Cost: $0.0008 per call.

Muted Accounts returns the accounts muted by the account behind your session, as cursor-paginated full user objects. Muting hides an account's posts from your timeline without blocking it, and the list is readable only for your own account. Each page is one $0.0008 read.

GET
/user/muting

Authorization

bearerAuth
AuthorizationBearer <token>

Pass your API key as a bearer token on every request: Authorization: Bearer <API_KEY>.

In: header

Query Parameters

count?integer

Items per page. Defaults to 20; capped at 100.

cursor?string

Pagination cursor from a previous response's next_cursor.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/user/muting?count=20"
{  "count": 1,  "next_cursor": "1353384573435056128|2071116068906074107",  "users": [    {      "id": "1353384573435056128",      "username": "cryptorover",      "name": "Crypto Rover",      "verified": true,      "followers_count": 812443,      "description": "Daily crypto analysis.",      "created_at": "Sun Jan 24 16:50:08 +0000 2021",      "profile_image_url": "https://pbs.twimg.com/profile_images/1891433835675475969/J-TloTb6_normal.png"    }  ]}
{  "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

UnitPrice
Per call$0.0008
Per 1,000 calls$0.80
Per 1,000 records (~20 per call)~$0.04

When to use

Use this endpoint to audit or sync the muted-accounts list for the account behind your registered session, such as building a settings UI or reconciling local mute state. Reach for GET /user/blocking instead when you need accounts the user has blocked rather than muted.

Notes

  • Needs a session for the account you are reading: either register one once (POST /customer/session), or pass per-call inline credentials as x-auth-token and x-ct0 request headers, which let a single API key act as many accounts. Returns 409 session_required if neither is supplied, 401 session_dead when the session has expired.
  • An empty users array is a real answer: it means the account mutes nobody. It is never a silent parse failure. If the endpoint cannot read the list it returns an error status, not an empty page, so you can trust a 200 with zero users.
  • Muting and blocking are separate lists. An account can appear in one and not the other.

Pagination

This endpoint is cursor-paginated and returns roughly 20 records per call. Pass the next_cursor from each response back as the cursor parameter to read the next page. Stop when the records array comes back empty: follower-graph endpoints return a non-null cursor even on the final page, so the empty array is the only reliable stop signal. See Pagination for the full loop.

FAQ

How is this different from GET /user/blocking?

Muting hides an account's posts from your timeline while leaving the follow relationship and interaction ability intact; blocking prevents interaction entirely and is visible to the blocked account. This endpoint returns your mute list, which is a separate, unrelated list from your block list.

How do I page through a large mute list?

Set count (default 20, max 100) to control page size, then pass the next_cursor value from the response back into the cursor param to fetch the next page. Check has_more to know whether additional pages remain before making another call.