Skip to main content
GET
/
x
/
write-actions
/
{id}
Get write action status
curl --request GET \
  --url https://xquik.com/api/v1/x/write-actions/{id} \
  --header 'x-api-key: <api-key>'
Use this endpoint after a write request returns 202 x_write_unconfirmed. The original write may have been dispatched, so do not retry-send the same action until you inspect the status and verify the outcome. While status is pending_confirmation, keep charged as false, chargedCredits as "0", and poll again. Store the final tweetId or messageId only after the status response returns it.
curl https://xquik.com/api/v1/x/write-actions/42 \
  -H "x-api-key: xq_YOUR_KEY_HERE" | jq
The Node.js, Python, and Go examples convert the status response into one queue-state row. Store write_action_id, status, result_id, target_id, charged_credits, media, send_dispatched, confirmation_attempts, and poll_endpoint; keep polling only while status is pending_confirmation.

Headers

x-api-key
string
required
Your API key. Session cookie authentication is also supported.

Path parameters

id
string
required
Write action ID returned by a pending write response.

Response

writeActionId
string
Write action ID.
action
string
Write action type, such as create_tweet.
status
string
Current status: success, failed, or pending_confirmation.
tweetId
string
Tweet ID when the action created or confirmed a tweet.
messageId
string
Message ID when the action sent a DM.
targetId
string | null
Target user, tweet, or resource ID when available.
charged
boolean
Whether the original write action was charged.
chargedCredits
string
Credits charged or reserved for the write action.
media
object
Create-tweet media billing details. count is the attached media count, credits is the media credit total, kind is none, image, or video, and totalBytes is a stringified byte count.
sendDispatched
boolean
Whether the write was dispatched.
retryable
boolean
Always false for this status response.
confirmationAttempts
number
Number of confirmation attempts.
confirmationSource
string | null
Confirmation source when available.
createdAt
string
ISO timestamp for write action creation.
sendDispatchedAt
string
ISO timestamp for dispatch when available.
confirmationCheckedAt
string
ISO timestamp for the last confirmation check when available.
confirmedAt
string
ISO timestamp for confirmation when available.
message
string
Status or error message when available.
{
  "writeActionId": "42",
  "action": "create_tweet",
  "status": "pending_confirmation",
  "charged": false,
  "chargedCredits": "0",
  "media": {
    "count": 0,
    "credits": "0",
    "kind": "none",
    "totalBytes": "0"
  },
  "sendDispatched": true,
  "retryable": false,
  "confirmationAttempts": 2,
  "confirmationSource": null,
  "targetId": "1234567890",
  "createdAt": "2026-05-08T20:00:00.000Z"
}

Resolve the write queue

Use GET /x/write-actions/{id} to close the queue record created after 202 x_write_unconfirmed from tweet posts, tweet replies, DMs, or other write endpoints.

success

Store writeActionId, action, charged, chargedCredits, media, and the returned tweetId, messageId, or resultId. Mark the original job as complete.

pending_confirmation

Store writeActionId, sendDispatched, confirmationAttempts, confirmationCheckedAt, targetId, and message when present. Keep the job pending, poll again with backoff, and do not retry-send the same body.

failed

Store writeActionId, action, sendDispatched, targetId, message, charged, chargedCredits, and media. Mark the job failed, then fix the account, target, content, or billing state before sending a new request.
For tweet replies, targetId is the parent tweet ID when available. For DMs, targetId is the recipient user ID when available. retryable is always false on this status response because replay decisions belong in your queue logic, not in automatic HTTP retries.
{
  "job_id": "reply-queue-184",
  "write_action_id": "42",
  "status": "success",
  "published_tweet_id": "2052816150136832166",
  "reply_to_tweet_id": "1893456789012345678",
  "charged": true,
  "charged_credits": "32",
  "media": { "count": 1, "credits": "2", "kind": "image", "totalBytes": "834921" }
}
Related: Create Tweet returns writeActionId when tweet confirmation is pending. Send DM returns messageId after a confirmed direct message send. Direct Message Workflow shows how to store DM messageId values. Error handling explains x_write_unconfirmed.
Last modified on June 15, 2026