---
title: "Community Moderators"
method: GET
path: "/community/moderators"
tags: ["Communities"]
---

# Community Moderators

`GET /community/moderators`

## Request

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

Fetch the moderators and admins of an X Community, cursor-paginated, in the same row shape Community Members returns. This is a separate upstream operation rather than a filter over the member roster, because moderators are interleaved through that roster at arbitrary positions. 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. A non-numeric value is a 400.
- `fields` string
- `compact` '1'

## Response `200`

Page through a community's moderators and admins.

- object
  - `members` object[]: Moderator rows for this page, each { user, role }. The key is members, not moderators: the row shape is identical to Community Members on purpose, so one type serves both endpoints and the two cannot drift.
    - `user` object: The same REDUCED user profile Community Members returns: id, username, name, profile_image_url, is_blue_verified, verified, is_protected. No bio, no follower counts, no created_at, because X's roster operation does not send them.
    - `role` string, nullable: That account's role in this community, expected to be Moderator or Admin here. Like the role on a Community Members row, this one is NOT caller-relative and is returned in full: it describes that account, is identical for every caller, and is the content of the endpoint. It is returned rather than assumed constant, so a moderator roster that starts carrying a mixed role set surfaces instead of being silently flattened. Null when X did not label the row, which is not the same as Member.
  - `next_cursor` string, nullable: Opaque cursor for the next page, or null when X sent none.
  - `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.

## 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)
