Skip to main content
GET
Twitter API get replies to a tweet & author fields
Requested result counts are upper bounds for paid authenticated calls. When remaining credits cannot cover the full page or ID list, Xquik returns fewer results. If zero paid results are affordable, it returns 402 insufficient_credits.
1 credit per tweet returned · All plans from $0.00012/credit · Supports guest paid reads
Omit mode for automatic maximum coverage. Xquik combines available views within a short request window. It keeps the existing response shape. Pass next_cursor back unchanged as cursor. Keep the same endpoint, target, query, and filters.
Existing unprefixed cursors keep their legacy behavior. after, limit, and pageSize aliases also keep working. Billing still counts only returned rows. Use mode=standard only to force legacy single-view pagination. A page can be empty or underfilled. Continue while has_next_page is true. Stop only after the response reports has_next_page=false. If automatic coverage is busy, an initial request returns a standard data page. Live coverage cursors remain atomic. Concurrent use returns 409 coverage_cursor_unavailable with exact Retry-After seconds. Wait, then retry the same cursor once. Finished, expired, superseded, or identity-mismatched cursors return 410 coverage_cursor_gone. The response omits Retry-After. Restart without a cursor. Deduplicate restarted results by id. Malformed cursors return 400 invalid_coverage_cursor. Restart without them.
Get tweet replies returns reply tweets for one X post by numeric tweet ID. Use it for conversation analysis, support queues, moderation review, giveaway audits, and agent handoffs.
Reply visibility depends on X. Complete mode returns 424 replies_incomplete below 80% direct-reply coverage. Inspect the returned diagnostic before retrying. Never treat missing rows as proof that a user did not reply.
The tweet, profile, media, and reply field guide explains reply coverage and optional response fields.

Twitter API reply questions

How does the Twitter API get replies to a tweet?

Start with the original tweet’s numeric ID. Send it through this endpoint’s path parameter. Automatic pages accept pageSize from 1 through 300. Standard pages accept 1 through 100. The response contains reply tweets, author profiles, and engagement counts. Store next_cursor after writing every page. Continue only while has_next_page remains true.

How complete is a tweet reply collection?

X controls which public replies each request exposes. Protected, deleted, hidden, or unavailable replies may not appear. mode=complete combines timelines, rankings, cursors, hidden branches, parent windows, and search. Direct replies match inReplyToId to the source tweet. Exclude nested_replies from direct coverage. Trust diagnostic.complete.

How can a team analyze or moderate replies?

Store each reply ID, text, author ID, username, creation time, likes, reposts, quotes, views, bookmarks, and media. Create one moderation row per reply. Apply sentiment or spam labels with your classifier. Send uncertain rows to human reviewers. Xquik does not infer sentiment.

How can support teams receive new reply alerts?

Create an account monitor for the relevant profile. Select tweet.reply events on the monitor and webhook. Verify every webhook signature. Store each event ID before updating a support ticket. Replay missed events through the events API. Poll this endpoint for conversation backfills.

Which reply fields should applications preserve?

Keep stable author IDs separately from mutable usernames. Save conversationId and inReplyToId for thread joins. Store media URLs, likes, reposts, quotes, views, bookmarks, time filters, page size, and cursors for audits and retries.

How can applications control reply API costs?

Each returned reply costs 1 credit. Select a page size that fits your storage process. Bound support periods with sinceTime and untilTime. Save each page before requesting another cursor. Use reply_extractor for fixed resultsLimit exports.

Direct replies handoff

Use GET /x/tweets/{id}/replies when a support, community, moderation, giveaway, or agent workflow needs reply rows as JSON. The examples above write JSON Lines rows with parent_tweet_id, reply_id, text, author IDs and usernames, thread joins, media URLs, and cursor fields. Each output line ties one reply to the requested tweet. Workers can restart after storing the latest response page. The moderation table below adds follower, verification, timing, and engagement projections. A 424 replies_incomplete response still contains collected direct and nested replies. Inspect its diagnostic before retrying. Keep only rows whose inReplyToId matches the requested tweet for direct-reply workflows. Use reply_extractor instead when a team needs an estimate, durable extraction ID, stored result pages, or CSV, JSON, and XLSX downloads after completion.

Live reply page

Call GET /x/tweets/{id}/replies when queues, agents, or dashboards need current JSON rows and can store next_cursor.

Saved reply export

Run reply_extractor for estimates, job status, stored pages, and downloadable reply files.
sinceTime and untilTime are Unix timestamps in seconds. Use them to bound moderation windows, campaign periods, or giveaway audit ranges. Direct replies calls use the default paid page size; use reply_extractor with resultsLimit when you need a predictable file export cap. Direct replies cost 1 credit per tweet returned. Low balances can reduce standard pages. Zero affordable results return 402 insufficient_credits. Retry 429 with Retry-After. Retry 502 after a short backoff. Retry 503 after its stated delay. For 424 replies_incomplete, inspect diagnostic.recommendedFallback.

Build a reply moderation table

Store one row per reply. Keep the parent Tweet ID and conversation ID beside the reply so support, moderation, campaign, and giveaway reviews can reconstruct each conversation branch.

Which replies endpoint?

  • Use GET /api/v1/x/tweets/{id}/replies for one tweet’s replies as JSON rows.
  • Use reply_extractor when you need saved CSV, JSON, or XLSX exports.
  • Use GET /api/v1/x/tweets/search when you need keyword, operator, structured-filter, or queryType search.
  • Use GET /api/v1/x/tweets/{id}/thread when you need ordered thread context around a tweet.

Path parameters

string
required
Numeric X tweet ID. Pass the source tweet whose replies you want to retrieve.

Query parameters

string
Optional advanced override. Omit it for automatic maximum direct-reply coverage. Use standard for legacy pagination. Use complete for nested replies and detailed diagnostics. Complete mode accepts only limit.
number
Maximum combined replies in complete mode. Use 1 through 25000. Complete mode defaults to 25000. Automatic pages accept 1 through 300. Standard pages accept 1 through 100.
number
default:"20"
Automatic pages accept 1 through 300. Standard pages accept 1 through 100. Omit this field in complete mode. Deprecated aliases remain.
string
Pass next_cursor back unchanged. New Xquik cursors resume automatic coverage. Existing unprefixed cursors keep legacy behavior.
string
Unix timestamp in seconds. Only return replies after this time when a poller, moderation queue, or campaign report needs a bounded window.
string
Unix timestamp in seconds. Only return replies before this time. Pair with sinceTime for closed campaign, support, or audit windows.
string
In complete mode, select all, direct, or nested replies.
integer
In complete mode, set the maximum reply depth from the source post.
string
In complete mode, sort by relevance, latest, oldest, or likes.
boolean
In complete mode, exclude replies from the source-post author.
boolean
In complete mode, include the source post and count it toward limit.
boolean
In complete mode, only return replies containing media.

Tweet result filters

These filters apply to automatic and standard pagination. They keep the same parent tweet. Remove every filter before requesting complete mode.
string
Filter to posts from this username. The @ prefix is optional.
string
Filter to replies directed to this username.
string
Filter to posts that mention this username.
string
Only include posts with this language code.
string
Include posts created on or after this date or timestamp.
string
Include posts before this date or timestamp.
string
Use images, videos, gifs, media, links, or none.
integer
Require this minimum like count.
integer
Require this minimum repost count.
integer
Require this minimum reply count.
integer
Require this minimum quote count.
integer
Require this minimum view count.
integer
Require this minimum bookmark count.
integer
Allow this maximum like count. Missing counts pass.
integer
Allow this maximum repost count. Missing counts pass.
integer
Allow this maximum reply count. Missing counts pass.
integer
Allow this maximum quote count. Missing counts pass.
boolean
When true, only return posts from Blue-verified authors.
boolean
When true, only return posts from verified authors.
string
Use include, exclude, or only for replies.
string
Use include, exclude, or only for reposts.
string
Require this exact phrase.
string
Exclude comma-separated or whitespace-separated terms.
string
Require at least 1 comma-separated or whitespace-separated term.
string
Match these hashtags. Separate values with commas or spaces.
string
Match these cashtags. Separate values with commas or spaces.
string
Use include, exclude, or only for quote posts.
string
URL substring or domain that must appear in tweet URL entities.
string
Filter to tweets in this conversation thread.
string
Only include replies to this tweet ID.
string
Filter to quote tweets of this tweet ID.
string
Filter to retweets of this tweet ID.
string
Match the Tweet card name.
string
Match the source application.
string
Exclude Tweets from this source application.
string
Match latitude, longitude, and radius in X search syntax.
string
Return Tweets newer than this Tweet ID.
string
Return Tweets older than this Tweet ID.
string
Match this place name.
string
Set the radius for the near filter.
string
Match Tweets inside this recent time window.
boolean
When true, only return native reposts.
boolean
When true, enable X safe-search filtering.
boolean
When true, only return news results.

Headers

string
Full account key. Sessions and OAuth also work.
string
Bearer xq_your_guest_key_here for paid_reads.

Response

200 OK

object[]
Array of reply tweets.
boolean
Whether more results are available.
string
Cursor for the next page.
object[]
Nested replies returned by complete mode. Exclude them from direct coverage.
object
Complete-mode coverage evidence. Omitted from standard responses.

400 Invalid tweet ID

The response uses invalid_tweet_id. Replace the path value with a numeric Tweet ID before retrying.

401 Unauthenticated

Anonymous requests get WWW-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

The read service returned an error. Retry after a short delay.

429 Rate limit exceeded

Your tier rate limit was exceeded. Wait for the Retry-After header before retrying.

424 Replies incomplete

The response preserves collected rows and diagnostic evidence. Trust diagnostic.complete. Follow recommendedFallback before retrying.

503 Complete reply extraction busy

Wait for the Retry-After duration before repeating complete mode.
Related. Tweet Replies Export Workflow when you need saved CSV, JSON, or XLSX files, Tweet Quotes, Tweet Thread, Retweeters, and Favoriters.