---
title: "Get tweet with full text, author, metrics and media"
method: GET
path: "/x/tweets/{id}"
tags: ["Tweets"]
---

# Get tweet with full text, author, metrics and media

`GET /x/tweets/{id}`

## Path parameters

- `id` string, required

## Response `200`

Tweet with author

- object
  - `tweet` TweetDetail, required — Full tweet with text, engagement metrics, media, and metadata. A zero metric can mean X did not report the count.
    - `id` string, required
    - `text` string, required
    - `createdAt` string
    - `isNoteTweet` boolean — Whether this is a Note Tweet (long-form post, up to 25,000 characters)
    - `isReply` boolean — Whether this tweet is a reply to another tweet
    - `isLimitedReply` boolean — Whether replies are limited for this tweet
    - `isQuoteStatus` boolean — Whether this tweet quotes another tweet
    - `conversationId` string — ID of the root tweet in the conversation thread
    - `source` string — Client application used to post this tweet
    - `type` string — Tweet result type
    - `url` string — Tweet permalink URL
    - `lang` string — Tweet language code
    - `inReplyToId` string — Tweet ID being replied to
    - `inReplyToUserId` string — User ID being replied to
    - `inReplyToUsername` string — Username being replied to
    - `displayTextRange` integer[] — Start and end offsets for rendered tweet text
    - `contentDisclosure` ContentDisclosure — Content disclosure metadata shown by X when a tweet is labeled as paid partnership content or AI-generated media.
      - `advertising` object
        - `isPaidPromotion` boolean — True when X labels the tweet as paid promotion content.
      - `aiGenerated` object
        - `detectionSource` string — Source of the AI-generated media disclosure.
        - `canEdit` boolean — Whether the disclosure can be edited on X.
        - `hasAiGeneratedMedia` boolean — True when X labels the tweet as containing AI-generated media.
    - `entities` object — Parsed entities from the tweet text (URLs, mentions, hashtags, media)
    - `quoted_tweet` EmbeddedTweet — Quoted or retweeted tweet context. Every object includes id, text, and engagement metrics. A zero metric can mean X did not report the count. Author, media, and conversation fields appear when available.
      - `id` string, required
      - `text` string, required
      - `type` string
      - `createdAt` string
      - `url` string
      - `lang` string
      - `retweetCount` integer, required
      - `replyCount` integer, required
      - `likeCount` integer, required
      - `quoteCount` integer, required
      - `viewCount` integer, required
      - `bookmarkCount` integer, required
      - `isReply` boolean
      - `isLimitedReply` boolean
      - `isNoteTweet` boolean
      - `isQuoteStatus` boolean
      - `inReplyToId` string
      - `inReplyToUserId` string
      - `inReplyToUsername` string
      - `conversationId` string
      - `source` string
      - `displayTextRange` integer[]
      - `contentDisclosure` ContentDisclosure — Content disclosure metadata shown by X when a tweet is labeled as paid partnership content or AI-generated media.
        - `advertising` object
          - `isPaidPromotion` boolean — True when X labels the tweet as paid promotion content.
        - `aiGenerated` object
          - `detectionSource` string — Source of the AI-generated media disclosure.
          - `canEdit` boolean — Whether the disclosure can be edited on X.
          - `hasAiGeneratedMedia` boolean — True when X labels the tweet as containing AI-generated media.
      - `entities` object
      - `media` TweetMedia[]
        - `mediaUrl` string, required — Media preview URL
        - `type` 'photo' | 'video' | 'animated_gif', required
        - `url` string, required — X media link from the tweet
        - `videoVariants` object[] — Available video encodings, ordered as returned
          - `bitrate` integer
          - `contentType` string, required
          - `url` string, required
      - `author` UserProfile — X user profile with bio, follower counts, and verification status.
        - `id` string, required
        - `username` string, required
        - `name` string, required
        - `description` string
        - `followers` integer
        - `following` integer
        - `verified` boolean
        - `isBlueVerified` boolean — Whether X shows a blue verification badge
        - `isVerified` boolean — Whether X marks the profile as verified
        - `profilePicture` string
        - `coverPicture` string
        - `profileBannerUrl` string — Original X profile banner field when available
        - `location` string
        - `createdAt` string
        - `statusesCount` integer
        - `mediaCount` integer
        - `canDm` boolean
        - `protected` boolean — Whether the profile protects its posts
        - `url` string
        - `favouritesCount` integer
        - `hasCustomTimelines` boolean
        - `isTranslator` boolean
        - `withheldInCountries` string[]
        - `possiblySensitive` boolean
        - `pinnedTweetIds` string[]
        - `isAutomated` boolean
        - `automatedBy` string
        - `unavailable` boolean
        - `unavailableReason` string
        - `verifiedType` string
        - `communityRole` string — Community role when returned by community member reads
        - `viewerFollowedBy` boolean — Whether this profile follows the authenticated viewer
        - `viewerFollowing` boolean — Whether the authenticated viewer follows this profile
        - `profile_bio` object — Structured profile bio with entity annotations
    - `retweeted_tweet` EmbeddedTweet — Quoted or retweeted tweet context. Every object includes id, text, and engagement metrics. A zero metric can mean X did not report the count. Author, media, and conversation fields appear when available.
      - `id` string, required
      - `text` string, required
      - `type` string
      - `createdAt` string
      - `url` string
      - `lang` string
      - `retweetCount` integer, required
      - `replyCount` integer, required
      - `likeCount` integer, required
      - `quoteCount` integer, required
      - `viewCount` integer, required
      - `bookmarkCount` integer, required
      - `isReply` boolean
      - `isLimitedReply` boolean
      - `isNoteTweet` boolean
      - `isQuoteStatus` boolean
      - `inReplyToId` string
      - `inReplyToUserId` string
      - `inReplyToUsername` string
      - `conversationId` string
      - `source` string
      - `displayTextRange` integer[]
      - `contentDisclosure` ContentDisclosure — Content disclosure metadata shown by X when a tweet is labeled as paid partnership content or AI-generated media.
        - `advertising` object
          - `isPaidPromotion` boolean — True when X labels the tweet as paid promotion content.
        - `aiGenerated` object
          - `detectionSource` string — Source of the AI-generated media disclosure.
          - `canEdit` boolean — Whether the disclosure can be edited on X.
          - `hasAiGeneratedMedia` boolean — True when X labels the tweet as containing AI-generated media.
      - `entities` object
      - `media` TweetMedia[]
        - `mediaUrl` string, required — Media preview URL
        - `type` 'photo' | 'video' | 'animated_gif', required
        - `url` string, required — X media link from the tweet
        - `videoVariants` object[] — Available video encodings, ordered as returned
          - `bitrate` integer
          - `contentType` string, required
          - `url` string, required
      - `author` UserProfile — X user profile with bio, follower counts, and verification status.
        - `id` string, required
        - `username` string, required
        - `name` string, required
        - `description` string
        - `followers` integer
        - `following` integer
        - `verified` boolean
        - `isBlueVerified` boolean — Whether X shows a blue verification badge
        - `isVerified` boolean — Whether X marks the profile as verified
        - `profilePicture` string
        - `coverPicture` string
        - `profileBannerUrl` string — Original X profile banner field when available
        - `location` string
        - `createdAt` string
        - `statusesCount` integer
        - `mediaCount` integer
        - `canDm` boolean
        - `protected` boolean — Whether the profile protects its posts
        - `url` string
        - `favouritesCount` integer
        - `hasCustomTimelines` boolean
        - `isTranslator` boolean
        - `withheldInCountries` string[]
        - `possiblySensitive` boolean
        - `pinnedTweetIds` string[]
        - `isAutomated` boolean
        - `automatedBy` string
        - `unavailable` boolean
        - `unavailableReason` string
        - `verifiedType` string
        - `communityRole` string — Community role when returned by community member reads
        - `viewerFollowedBy` boolean — Whether this profile follows the authenticated viewer
        - `viewerFollowing` boolean — Whether the authenticated viewer follows this profile
        - `profile_bio` object — Structured profile bio with entity annotations
    - `author` TweetAuthor — X user profile with bio, follower counts, and verification status.
      - `id` string, required
      - `username` string, required
      - `name` string, required
      - `description` string
      - `followers` integer, required
      - `following` integer
      - `verified` boolean, required
      - `isBlueVerified` boolean — Whether X shows a blue verification badge
      - `isVerified` boolean — Whether X marks the profile as verified
      - `profilePicture` string
      - `coverPicture` string
      - `profileBannerUrl` string — Original X profile banner field when available
      - `location` string
      - `createdAt` string
      - `statusesCount` integer
      - `mediaCount` integer
      - `canDm` boolean
      - `protected` boolean — Whether the profile protects its posts
      - `url` string
      - `favouritesCount` integer
      - `hasCustomTimelines` boolean
      - `isTranslator` boolean
      - `withheldInCountries` string[]
      - `possiblySensitive` boolean
      - `pinnedTweetIds` string[]
      - `isAutomated` boolean
      - `automatedBy` string
      - `unavailable` boolean
      - `unavailableReason` string
      - `verifiedType` string
      - `communityRole` string — Community role when returned by community member reads
      - `viewerFollowedBy` boolean — Whether this profile follows the authenticated viewer
      - `viewerFollowing` boolean — Whether the authenticated viewer follows this profile
      - `profile_bio` object — Structured profile bio with entity annotations
    - `media` TweetMedia[] — Attached media items, omitted when the tweet has no media
      - `mediaUrl` string, required — Media preview URL
      - `type` 'photo' | 'video' | 'animated_gif', required
      - `url` string, required — X media link from the tweet
      - `videoVariants` object[] — Available video encodings, ordered as returned
        - `bitrate` integer
        - `contentType` string, required
        - `url` string, required
    - `retweetCount` integer, required
    - `replyCount` integer, required
    - `likeCount` integer, required
    - `quoteCount` integer, required
    - `viewCount` integer, required
    - `bookmarkCount` integer, required
  - `author` TweetAuthor — X user profile with bio, follower counts, and verification status.
    - `id` string, required
    - `username` string, required
    - `name` string, required
    - `description` string
    - `followers` integer, required
    - `following` integer
    - `verified` boolean, required
    - `isBlueVerified` boolean — Whether X shows a blue verification badge
    - `isVerified` boolean — Whether X marks the profile as verified
    - `profilePicture` string
    - `coverPicture` string
    - `profileBannerUrl` string — Original X profile banner field when available
    - `location` string
    - `createdAt` string
    - `statusesCount` integer
    - `mediaCount` integer
    - `canDm` boolean
    - `protected` boolean — Whether the profile protects its posts
    - `url` string
    - `favouritesCount` integer
    - `hasCustomTimelines` boolean
    - `isTranslator` boolean
    - `withheldInCountries` string[]
    - `possiblySensitive` boolean
    - `pinnedTweetIds` string[]
    - `isAutomated` boolean
    - `automatedBy` string
    - `unavailable` boolean
    - `unavailableReason` string
    - `verifiedType` string
    - `communityRole` string — Community role when returned by community member reads
    - `viewerFollowedBy` boolean — Whether this profile follows the authenticated viewer
    - `viewerFollowing` boolean — Whether the authenticated viewer follows this profile
    - `profile_bio` object — Structured profile bio with entity annotations

## Other responses

- `400` — Invalid input
- `401` — Unauthenticated
- `402` — Payment required. Fixed-price direct MPP requests return a Machine Payments Protocol problem document and a WWW-Authenticate challenge. Authenticated X data requests return balances and explicit Stripe checkout-creation actions. Guest paid-read keys receive only the accountless guest top-up action. Direct MPP challenges also advertise the Stripe wallet action. Other authenticated endpoints return a legacy error shape. A failed request never creates checkout. Create checkout only after the user confirms a payment option.
- `404` — Tweet not found
- `424` — Dependency unavailable, unauthorized, or rate limited. Default v1 returns 502. The best-practice response contract returns 424 for transparent dependency failures.
- `429` — Xquik tier rate limit exceeded. The response includes a `Retry-After` header with the number of seconds to wait before retrying.
- `502` — Dependency unavailable, unauthorized, or rate limited. Default v1 returns 502. The best-practice response contract returns 424 for transparent dependency failures.

## Changes

- **2026-07-13** `83005363f122` — 14 breaking, 1 warning, 121 info
  - added `#/components/schemas/AuthenticatedPaymentRequired, #/components/schemas/GuestPaymentRequired, subschema #3` to the response body `oneOf` list for the response status `402`
  - the response's body type changed from `object` to no type for status `402`
  - added `subschema #1: LegacyErrorCode, subschema #2: StructuredError` to the `error` response property `oneOf` list for the response status `400`
  - added `subschema #1: LegacyErrorCode, subschema #2: StructuredError` to the `error` response property `oneOf` list for the response status `401`
  - …132 more
- **2026-04-25** `2adc33156b4b` — 8 warning, 12 info
  - added the new `insufficient_credits` enum value to the `error` response property for the response status `400`
  - added the new `insufficient_credits` enum value to the `error` response property for the response status `401`
  - added the new `insufficient_credits` enum value to the `error` response property for the response status `402`
  - added the new `insufficient_credits` enum value to the `error` response property for the response status `502`
  - …16 more

[Change history](https://skmtc.dev/xquik-dev/apis/xquik-api/changes/x/tweets/:id/get.md)

---

[API](https://skmtc.dev/xquik-dev/apis/xquik-api.md) · [All operations](https://skmtc.dev/xquik-dev/apis/xquik-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/xquik-dev/xquik-api/revisions/83005363f122/schema)
