X (Twitter) · JSON Structure
X Api Tweet Create Request Structure
TweetCreateRequest schema from X API v2
Type: object
Properties: 16
Social MediaMicrobloggingReal-Time DataStreamingAdvertisingContent
TweetCreateRequest is a JSON Structure definition published by X (Twitter), describing 16 properties. It conforms to the https://json-structure.org/meta/core/v0/# meta-schema.
Properties
card_uri
community_id
direct_message_deep_link
edit_options
for_super_followers_only
geo
made_with_ai
media
nullcast
paid_partnership
poll
quote_tweet_id
reply
reply_settings
share_with_followers
text
Meta-schema: https://json-structure.org/meta/core/v0/#
JSON Structure
{
"$schema": "https://json-structure.org/meta/core/v0/#",
"$id": "https://raw.githubusercontent.com/api-evangelist/twitter/refs/heads/main/json-structure/x-api-tweet-create-request-structure.json",
"name": "TweetCreateRequest",
"description": "TweetCreateRequest schema from X API v2",
"type": "object",
"properties": {
"card_uri": {
"type": "string",
"description": "Card Uri Parameter. This is mutually exclusive from Quote Tweet Id, Poll, Media, and Direct Message Deep Link."
},
"community_id": {
"type": "string",
"description": "The unique identifier of this Community.",
"pattern": "^[0-9]{1,19}$",
"example": "1146654567674912769"
},
"direct_message_deep_link": {
"type": "string",
"description": "Link to take the conversation from the public timeline to a private Direct Message."
},
"edit_options": {
"type": "object",
"description": "Options for editing an existing Post. When provided, this request will edit the specified Post instead of creating a new one.",
"required": [
"previous_post_id"
],
"properties": {
"previous_post_id": {
"$ref": "#/components/schemas/TweetId"
}
},
"additionalProperties": false
},
"for_super_followers_only": {
"type": "boolean",
"description": "Exclusive Tweet for super followers.",
"default": false
},
"geo": {
"type": "object",
"description": "Place ID being attached to the Tweet for geo location.",
"properties": {
"place_id": {
"type": "string"
}
},
"additionalProperties": false
},
"made_with_ai": {
"type": "boolean",
"description": "Whether this Post contains AI-generated media. When true, the Post will be labeled accordingly."
},
"media": {
"type": "object",
"description": "Media information being attached to created Tweet. This is mutually exclusive from Quote Tweet Id, Poll, and Card URI.",
"required": [
"media_ids"
],
"properties": {
"media_ids": {
"type": "array",
"description": "A list of Media Ids to be attached to a created Tweet.",
"minItems": 1,
"maxItems": 4,
"items": {
"$ref": "#/components/schemas/MediaId"
}
},
"tagged_user_ids": {
"type": "array",
"description": "A list of User Ids to be tagged in the media for created Tweet.",
"minItems": 0,
"maxItems": 10,
"items": {
"$ref": "#/components/schemas/UserId"
}
}
},
"additionalProperties": false
},
"nullcast": {
"type": "boolean",
"description": "Nullcasted (promoted-only) Posts do not appear in the public timeline and are not served to followers.",
"default": false
},
"paid_partnership": {
"type": "boolean",
"description": "Whether this Post is a paid partnership. When true, the Post will be labeled as a paid promotion."
},
"poll": {
"type": "object",
"description": "Poll options for a Tweet with a poll. This is mutually exclusive from Media, Quote Tweet Id, and Card URI.",
"required": [
"options",
"duration_minutes"
],
"properties": {
"duration_minutes": {
"type": "int32",
"description": "Duration of the poll in minutes.",
"minimum": 5,
"maximum": 10080
},
"options": {
"type": "array",
"minItems": 2,
"maxItems": 4,
"items": {
"type": "string",
"description": "The text of a poll choice.",
"minLength": 1,
"maxLength": 25
}
},
"reply_settings": {
"type": "string",
"description": "Settings to indicate who can reply to the Tweet.",
"enum": [
"following",
"mentionedUsers",
"subscribers",
"verified"
]
}
},
"additionalProperties": false
},
"quote_tweet_id": {
"type": "string",
"description": "Unique identifier of this Tweet. This is returned as a string in order to avoid complications with languages and tools that cannot handle large integers.",
"pattern": "^[0-9]{1,19}$",
"example": "1346889436626259968"
},
"reply": {
"type": "object",
"description": "Tweet information of the Tweet being replied to.",
"required": [
"in_reply_to_tweet_id"
],
"properties": {
"auto_populate_reply_metadata": {
"type": "boolean",
"description": "If set to true, reply metadata will be automatically populated."
},
"exclude_reply_user_ids": {
"type": "array",
"description": "A list of User Ids to be excluded from the reply Tweet.",
"items": {
"$ref": "#/components/schemas/UserId"
}
},
"in_reply_to_tweet_id": {
"$ref": "#/components/schemas/TweetId"
}
},
"additionalProperties": false
},
"reply_settings": {
"type": "string",
"description": "Settings to indicate who can reply to the Tweet.",
"enum": [
"following",
"mentionedUsers",
"subscribers",
"verified"
]
},
"share_with_followers": {
"type": "boolean",
"description": "Share community post with followers too.",
"default": false
},
"text": {
"type": "string",
"description": "The content of the Tweet.",
"example": "Learn how to use the user Tweet timeline and user mention timeline endpoints in the X API v2 to explore Tweet\\u2026 https:\\/\\/t.co\\/56a0vZUx7i"
}
},
"additionalProperties": false
}