Community Notes
X community notes API for a contributor's notes
List every Community Note a contributor wrote, with its text, rating status, rater tags, and the post it is on. Includes notes x.com hides. 1 credit per note.
- 200
- 400
- 401
- 402
- 404
- 424
- 429
- 502
- 503
GET
X community notes API for a contributor's notes
List the Community Notes 1 contributor wrote, newest first. Each note comes with the post it is on.
The Node.js and Python snippets build 1 row per note. Store the rows with the cursor before you request the next page.
A cursor X never issued returns
No contributor holds the alias. This answer is free.
The read service returned an error. Retry after a short delay.
You exceeded your tier rate limit. Wait for the
The normalized v1 response contract can return 424 when the read service is unavailable.
Requested result counts are upper bounds for paid authenticated calls. When remaining credits cannot cover the full page, Xquik returns fewer results. If zero paid results are affordable, it returns
402 insufficient_credits.1 credit per note returned · All plans from $0.00012/credit · Supports guest paid reads
Which notes does it return?
It returns every note the contributor wrote, whatever its rating. Only helpful notes show under posts on x.com, so this list also holds the notes x.com hides.ratingStatussays how X rates the note now, such asNeedsMoreRatingsorCurrentlyRatedHelpful.helpfulTags¬HelpfulTagssay why raters called it helpful or not.timeToHelpfulFromNoteMssays how long the note took to be rated helpful.postis the post the note is on, with the same fields as Get tweet.
post is null. postId still names it, and postUnavailable.reason says why when X
gives a reason, such as Suspended.
Page through a contributor’s notes
Each page returnshas_next_page and next_cursor. Send next_cursor back as cursor. Stop when has_next_page is
false.
A cursor X never issued returns 400 invalid_cursor, which is free. Start again without cursor, then use
next_cursor.
Use the note id as the key in your store. Overlapping reads then add no duplicates.
Path parameters
string
required
Contributor alias, such as
ardent-beach-friarbird. The URL-encoded contributor URL also works, such as
x.com/i/communitynotes/u/ardent-beach-friarbird. Any letter case works.Query parameters
string
Pagination cursor from a previous response. Omit for the first page.
integer
Notes per page, from
1 to 10. Defaults to 10. Also read as limit, count, max_results, maxItems,
max_items & per_page.Choose fields
string
Fields to keep in each row, comma-separated, such as
id,text,author.username. Use dots for nested fields. Case & underscores do not matter. A row that lacks a field leaves it out. Cursors, counts & diagnostics always stay. An unknown name returns 400 unknown_field with the valid names, before any read. The price stays the same.string
Fields to drop from each row, comma-separated, such as
entities,media. It takes the same names as fields. With fields, it drops from the kept fields.Headers
string
Full account key. Sessions and OAuth also work.
string
Bearer xq_your_guest_key_here for paid_reads.Response
200 OK
X leaves out a field that a note lacks. Onlyid is always present.
object[]
The contributor’s notes, newest first.
Note object fields.
string
Note ID.
string
When the contributor wrote the note, as ISO 8601.
string
Language code of the note.
string
What the writer says of the post, such as
MisinformedOrPotentiallyMisleading or NotMisleading.string
What the note says.
object[]
Links, tags & accounts inside the text, each with
fromIndex, toIndex & ref.object
The note’s writer, with the counts X sends beside a note. Get notes
contributor returns every count.
string
X’s current rating, such as
NeedsMoreRatings, CurrentlyRatedHelpful or
CurrentlyRatedNotHelpful.string[]
Why raters called the note helpful.
string[]
Why raters called the note not helpful.
string
The X scoring model that set the rating.
boolean
Whether X marks that scoring model as fully visible.
boolean
Whether the note scores above X’s bar for a possible helpful rating.
string
Whether the rating is under appeal.
boolean
Whether the writer deleted the note.
string
X’s notice in place of a deleted note.
boolean
Whether the note came through X’s API.
boolean
Whether the note is about the post’s media.
number
Other posts X matched a media note to.
boolean
Whether the note is on a link.
string
The link a link note is on, as X shows it.
boolean
Whether X offers a translation of the note.
number
Milliseconds from the note’s creation to its helpful rating.
number
Milliseconds from the post’s creation to the note’s helpful rating.
number
Views of the note, when X shares them.
string
ID of the post the note is on.
object | null
The post the note is on, or
null when X no longer shows it.Why X shows no post, when X says. It holds
reason.boolean
Whether more notes follow.
string
Cursor for the next page. Empty at the end of the list.
400 Invalid alias or cursor
invalid_cursor. Start again without cursor. Both answers are free.
404 Contributor not found
401 Unauthenticated
Anonymous requests getWWW-Authenticate: Bearer and a guest wallet checkout action. This is not a Payment challenge.
402 Payment required
Account keys get account options. Guest keys get guest top-up only. No checkout starts automatically. Confirm any payment action.502 X API unavailable
429 Rate limit exceeded
Retry-After header before retrying.
424 Dependency failed
Related. Get notes contributor · Deleted notes · Get tweet