TwitterAPIs Docs
API ReferenceCommunities

X Communities API | Get Twitter Community Info

Look up a single X Community by its numeric id and get back its name, description, member count, join policy, primary topic, posted rules and both banners. This endpoint returns the REDUCED form of the Community object: eight of its 24 fields come back empty here and are populated by Community Memberships instead, which the response table marks field by field. Billed at $0.0008 per call. Cost: $0.0008 per call.

GET community/info takes the numeric id from a x.com/i/communities/<id> URL and returns that Community: name, description, member_count, join_policy, is_nsfw, primary topic, the posted rules, both the custom and default banner, and banner_url pre-resolved to whichever one a client should render. It costs $0.0008 per call. It does NOT fill every key it returns. X serves this route with an operation that sends a reduced record, so admin, invites_policy, question, search_tags and members_facepile_ids come back empty, moderator_count comes back 0, creator arrives with id and name null, and permalink is null on every X community endpoint. Community Memberships returns the same 24 keys populated, so read those fields there. The four caller-relative fields (role, can_join, is_pinned, viewer_relationship_type) are always null because this is a pooled read.

GET
/community/info

Authorization

bearerAuth
AuthorizationBearer <token>

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

In: header

Query Parameters

community_id*string

The numeric community id, the digits in a x.com/i/communities/ URL. Digits only, no leading zero.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/community/info?community_id=1493446837214187523"
{  "community": {    "id": "1828843041869713562",    "name": "Build In Public - SaaS",    "description": "Founders shipping in the open.",    "created_at": 1724865134102,    "member_count": 392,    "moderator_count": 0,    "join_policy": "RestrictedJoinRequestsRequireModeratorApproval",    "invites_policy": null,    "is_nsfw": false,    "question": null,    "primary_topic": {      "topic_id": null,      "name": "Software"    },    "search_tags": [],    "rules": [      {        "id": "1828843041869713570",        "name": "Be useful, not promotional",        "description": "Ship updates and ask real questions. Link drops with no context get removed."      },      {        "id": "1828843041869713571",        "name": "No paid promotion",        "description": null      }    ],    "banner_url": "https://pbs.twimg.com/community_banner_img/...",    "custom_banner": {      "url": "https://pbs.twimg.com/community_banner_img/...",      "width": 1500,      "height": 500    },    "default_banner": {      "url": "https://pbs.twimg.com/semantic_core_img/...",      "width": 1500,      "height": 500    },    "permalink": null,    "admin": null,    "creator": {      "id": null,      "username": "pizzaboy",      "name": null,      "verified": false,      "is_blue_verified": true    },    "members_facepile_ids": [],    "role": null,    "can_join": null,    "is_pinned": null,    "viewer_relationship_type": null  }}
{  "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

When to use

Use this when you have a community id or URL and want the community itself: what it is about, how big it is, how it admits members, and what its rules are. If you need the admin profile, the invite policy, the join question, the search tags or a real moderator count, this is the wrong endpoint and Community Memberships is the one that carries them. Reach for Community Members when you want who is in it, and Community Tweets when you want what is posted in it.

Notes

  • role, can_join, is_pinned and viewer_relationship_type are ALWAYS null here and that is deliberate, not a bug. Each describes the account that made the upstream call, and this is a pooled read served by whichever account in our pool picked up the request, so a value would describe a stranger's relationship to the community rather than yours. The keys are kept so it stays visible that X sends them and we decline to answer them.
  • THIS ENDPOINT RETURNS THE REDUCED COMMUNITY OBJECT. X serves it with an operation that sends fewer populated fields than the one behind Community Memberships, and the difference is not small: admin is null, invites_policy is null, question is null, search_tags is empty, members_facepile_ids is empty, moderator_count is 0, and creator arrives with id and name null. All 24 keys are still present, so nothing breaks, but a null here does not mean the community lacks the thing. Measured on 2026-08-17 by reading 10 communities through both endpoints minutes apart: Community Memberships was richer on every one of those fields and Community Info was never richer on any field.
  • rules[].description is the longer body text under a rule's title, and it is null when the community left that blank. That was 87 of 174 rules sampled on 2026-08-17, so about half. It is not null on every rule, and it is not invented when X omits it.
  • Both banners are always present. A community with a custom banner still returns default_banner, so read banner_url unless you specifically want one or the other.
  • created_at is a millisecond-epoch NUMBER, not an ISO string.
  • permalink is null on every community, from this endpoint and from Community Memberships alike. X does not send the URL on either operation and it is not synthesised from the id here. Build it yourself as https://x.com/i/communities/ plus the id.
  • 404 means the id resolved to no community, which X itself answers with an HTTP 200 and an empty result, so it is mapped explicitly here. 400 means the id was not a plausible community id.

FAQ

Where do I find a community id?

It is the digits in the community URL. In https://x.com/i/communities/1493446837214187523 the id is 1493446837214187523. It is a numeric snowflake, unlike a Space id, which is a base-62 token.

Why are role, can_join and is_pinned null?

Because they are caller-relative: each answers a question about the account that made the call, not about the community. This is a pooled read served by a rotating account from our pool, so returning those values would tell you a stranger's role in the community. They are nulled rather than removed so it stays visible that X sends them.

Why is invites_policy null?

Because this endpoint does not carry it, not because the community has no invite policy. X serves Community Info with an operation that sends a reduced record, and invites_policy is one of the fields it leaves out. Read it from Community Memberships, which returns the same community with the field filled. On 2026-08-17 it was non-null on all 10 communities read through Community Memberships and null on the same 10 read through Community Info. The same applies to admin, question, search_tags, members_facepile_ids and moderator_count.

Why are some rule descriptions null?

Because a rule's description is the longer body text under its title, and plenty of communities leave that blank while still naming the rule. About half the rules we sampled had one. The key is always present so the shape is stable, and it is left null rather than filled with the rule name.

Because X does not send a permalink URL on either of the operations behind these endpoints, so there is nothing to pass through, and a URL is not synthesised from the id here. Build it yourself: https://x.com/i/communities/ followed by the community id gives you the link.

Does this return the member list?

No. members_facepile_ids is the small preview set X attaches to the community itself, and this endpoint returns it empty anyway. Use Community Members for the real roster, which is cursor-paginated and carries each member's role.