---
title: "Community Members"
method: GET
path: "/community/members"
tags: ["Communities"]
---

# Community Members

`GET /community/members`

## Request

- Base URL: `https://api.twitterapis.com/twitter`
- URL: `https://api.twitterapis.com/twitter/community/members`
- Auth: HTTP bearer

Fetch the member roster of an X Community, cursor-paginated, with each row carrying that member's own role in the community: Admin, Moderator or Member. Admins and moderators appear in this list alongside ordinary members and are not grouped, so do not derive a moderator list by filtering the first page. Billed at $0.0008 per call. Cost: $0.0008 per call.

## Query parameters

- `community_id` string, required: The numeric community id, the digits in a x.com/i/communities/<id> URL.
- `cursor` string: Pagination cursor from a previous response's next_cursor. Omit on the first call.
- `count` integer: Page size. Defaults to 20 and is clamped to 1-100, so count=500 returns 100 rather than erroring. A non-numeric value is a 400.
- `fields` string
- `compact` '1'

## Response `200`

Page through a community's member roster, each row carrying that member's role.

- object
  - `members` object[]: Roster rows for this page, each { user, role }.
    - `user` object: A REDUCED user profile: id, username, name, profile_image_url, is_blue_verified, verified, is_protected. It is smaller than the object User Info returns, on purpose, because X's roster operation sends no bio, no follower or following counts, no location, no website and no created_at. Those keys are ABSENT rather than null, so you can never mistake not-asked-for for zero.
      - `id` string: Numeric user id as a string.
      - `username` string: Handle without the leading @.
      - `name` string: Display name.
      - `profile_image_url` string: Avatar URL. X sends the _normal size on this operation and it is passed through unchanged rather than rewritten to a larger variant that X did not send.
      - `is_blue_verified` boolean: Blue (paid) verification.
      - `verified` boolean: Legacy (official or notable) verification. A different thing from is_blue_verified; never conflate them.
      - `is_protected` boolean: Whether the account is protected (locked).
    - `role` string, nullable: THAT MEMBER's role in this community: Admin, Moderator or Member. This one is NOT caller-relative, unlike the role field on the community object itself, and it is the reason this endpoint exists. Null when X did not label the row, which is not the same as Member: a roster we cannot role-label has unknown roles, and reading null as Member would deny moderators.
  - `next_cursor` string, nullable: Opaque cursor for the next page, or null when X sent none. Absence of this cursor is the only end-of-list signal X gives on this operation.
  - `has_more` boolean: True when this page returned rows and carried a usable next_cursor. Computed here; X sends no has_more of its own on this operation.

## Other responses

- `400`: Bad request
- `401`: Unauthorized
- `402`: Insufficient credits
- `403`: Forbidden
- `404`: Not found
- `429`: Rate limited
- `5XX`: Server error

---

[API](https://skmtc.dev/twitterapis/apis/twitterapis-api.md) · [All operations](https://skmtc.dev/twitterapis/apis/twitterapis-api/llms.txt) · [OpenAPI document](https://skmtc.dev/twitterapis/apis/twitterapis-api/revisions/a33ce0fedb3c?raw)
