X write
Twitter retweet API: repost one tweet by ID
Repost a tweet by ID with the Twitter Retweet API. Approve the account, use an idempotency key, poll the action, then store billed credits and final result.
- 200
- 202
- 400
- 401
- 402
- 403
- 409
- 422
- 429
- 500
- 503
POST
Twitter retweet API: repost one tweet by ID
10 credits per call · All plans from $0.00012/credit
statusUrl until terminal is true.
Compare X’s separate Repost Post endpoint.
Authenticate and approve the reposting account
Send an Xquik API key or OAuth 2.1 bearer token. Name 1 connected X account in the request body. Connect that account before scheduling or approving a repost. Never send an X password or session cookie. Review the source tweet immediately before approval. Show its author, text, media, Tweet ID, and current availability. Also show the X account that will publish the repost. Use this review to avoid sharing from the wrong account. Store these approval fields with the request:Publish one repost by tweet ID
Resolve the Tweet ID before approval. Show the source tweet, author, media, and acting account. This endpoint preserves the original tweet and attribution. Assign a unique idempotency key to that repost decision. Reuse it only after an interrupted response. Store the action ID with the Tweet ID and acting account. Repost workflows often include:- Amplifying an approved announcement from a partner account.
- Reposting a customer reply selected by a support team.
- Sharing a monitored tweet after a moderation checkpoint.
- Preventing two workers from reposting the same tweet.
Choose a repost or new tweet
Use a repost to share an existing tweet unchanged. The request adds no comment, caption, or reply text. Use Create Tweet for original posts and replies. A reply needsreply_to_tweet_id.
Show the source tweet during approval.
Preserve its author, text, media, and Tweet ID.
Never replace that ID with a search-result position.
Reconcile retweet automation
Store one receipt per connected account and source tweet. This key prevents two workers from counting the same repost as separate campaign results. Keep queued, completed, already-reposted, and failed outcomes distinct. Mark an already-reposted outcome complete. It does not create a second repost. Use Unretweet for an approved rollback. The rollback needs a new idempotency key. Preserve both action IDs so the campaign record shows distribution and later removal.Schedule retweets without duplicate posts
This endpoint starts the repost action when it receives the approved request. Use your scheduler when a repost must run later. Store the Tweet ID, account, time zone, and approval together. Recheck the source tweet before dispatch. Create the idempotency key when the schedule becomes immutable. Reuse that key after a network interruption. Never reuse it for another account, Tweet ID, or scheduled time. The endpoint accepts 1 Tweet ID per request. It has no bulk repost body. Queue several approved tweets as separate jobs. Store each action before starting the next job. After429, honor Retry-After.
Do not rotate connected accounts to bypass a limit.
Delay the existing job instead of creating a duplicate.
Verify repost completion and attribution
Storeid as the durable write action ID.
Store request.hash with the submitted account and Tweet ID.
Keep status, terminal, statusUrl, and safeToRetry together.
Store billing.chargedCredits after billing settles.
Treat 202 as active work, not a completed repost.
Poll the same statusUrl until terminal becomes true.
Never send another repost while the action remains active.
After success, compare the returned target with the approved Tweet ID.
Mark an already-reposted outcome complete.
It does not create another timeline entry.
The repost keeps the source tweet’s original attribution.
Use Retweeters for available account-level evidence.
Timeline visibility can lag behind a completed write receipt.
Keep read time separate from repost completion time.
Handle Twitter retweet API errors
Keep every error beside the request hash and action ID. Never replace the approved Tweet ID as an automatic fallback.400: Correct the Tweet ID or account value.401: Replace invalid Xquik authentication.402: Add credits before another repost request.403: Reconnect the selected X account.409: Keep the action protected by that idempotency key.422: Review X’s rejection before another attempt.429: HonorRetry-Afterbefore polling or retrying.500: Store the failure; contact support if it persists.503: ChecksafeToRetrybefore retrying.
nextAction to choose the next step.
Apply repost bot and campaign controls
Require approval for the exact account and source tweet. Use campaign allowlists for authors, topics, or Tweet IDs. Set a per-campaign repost limit before dispatch begins. Keep separate limits for each connected account. Lock the approved tweet list before processing. Record skipped, active, completed, and failed jobs separately. Never count an accepted action as completed. Inspect unavailable tweets instead of substituting new content. Keep deleted or restricted source tweets as distinct outcomes. Do not convert a failed repost into an original tweet automatically. Store the approval, request, action, billing, and final result. These records support audits without exposing account credentials.Twitter retweet API questions
How do I automate a retweet through an API?
Approve the Tweet ID and connected account. Send this request, then poll the durable action until terminal.How do I authenticate a Twitter API retweet?
Send an Xquik API key or OAuth 2.1 bearer token. Never send an X password or session cookie.Can I schedule a retweet?
Call this endpoint from your scheduler after approval. The endpoint stores no future schedule.What is the retweet API rate limit?
After429, honor Retry-After before another request.
X publishes separate Repost rate limits.
Is a retweet the same as a quote tweet?
No. This route reposts the existing tweet unchanged. It cannot add a quote comment or new media.Can I bulk retweet several tweet IDs?
No bulk request exists here. Approve and submit each Tweet ID separately.How do I track retweet activity?
Poll this write action for completion. Use Retweeters to read available reposting accounts.Why can a Twitter retweet API request fail?
The account may need reconnection, credits, or a later retry. The source tweet may also be unavailable or rejected by X.Does a repost keep the original author?
Yes. A repost references the source tweet and its author. This endpoint adds no replacement caption or attribution.Can I undo an API retweet?
Yes. Call Unretweet after new approval. Use a new idempotency key for that removal.Can a bot use this retweet API?
Yes. Keep credentials server-side and require clear account authorization. Apply approvals, limits, idempotency, and terminal polling to every job.Do I need a Twitter retweet SDK?
No. Call this REST endpoint with any HTTP client. Use the cURL, Node.js, Python, or Go examples above.Headers
string
Send
Bearer <token> instead of x-api-key when using OAuth 2.1.string
required
Unique key for this intended write. Reuse it only for an exact network replay.
string
required
Must be
application/json.Path parameters
string
required
The ID of the tweet to retweet.
Body
string
required
X username or account ID identifying which connected X account will retweet. The
@ prefix is automatically stripped if included.Response
Durable write recovery
- Store
id, the nestedhashinrequest,billing, andstatusUrl. - Poll after
Retry-AfterorpollAfterMswhenterminalisfalse. - Trust
safeToRetryandnextActionbefore any new write.
200 Terminal or 202 active
Store terminal results. Poll active actions without creating another write.- After HTTP
200, store the result and settled billing. - After HTTP
202, poll the same action. Never submit another write. - After HTTP
400, fix the named field. Use a new idempotency key. - After HTTP
401, fix authentication. Do not retry unchanged. - After HTTP
402, fund the account before another write. - After HTTP
403, reconnect the account. - After HTTP
409, keep the original action. Use a new key for new input. - After HTTP
422, fix the rejected request before retrying. - After HTTP
429, wait forRetry-After. Preserve the same key. - After HTTP
500, retry only whensafeToRetryistrue. - After HTTP
503, poll whileterminalisfalse.
- 200
- 202
- 400
- 401
- 402
- 403
- 409
- 422
- 429
- 500
- 503
Twitter retweet API: repost one tweet by ID