{"note":"OpenAPI conversion -- returning structured metadata","name":"twitter-com-current","description":"X API v2","version":"2.168","base_url":"https://api.x.com","endpoints":195,"raw":"@lap v0.3\n# Machine-readable API spec. Each @endpoint block is one API call.\n@api X API v2\n@base https://api.x.com\n@version 2.168\n@auth Bearer bearer | OAuth2 | Bearer OAuth\n@endpoints 195\n@hint download_for_search\n@toc 2(195)\n\n@endpoint GET /2/account\n@desc Get developer account\n@returns(200) {data: map{account_id: str, created_at: str, name: str}, errors: [any]} # The request has succeeded.\n\n@endpoint POST /2/account\n@desc Ensure developer account\n@optional {metadata: str # Optional provisioning-credit metadata (an opaque string, e.g. a subscription tier) to claim for the account, attributed to the calling app. Omit to just ensure the account.}\n@returns(200) {data: map{account_id: str, created: bool}, errors: [any]} # The request has succeeded.\n\n@endpoint GET /2/account_activity/subscriptions/count\n@desc Get Account Activity Subscription Count\n@returns(200) {data: map{account_name: str, provisioned_count: str, subscriptions_count_all: str, subscriptions_count_direct_messages: str}, errors: [any]} # The request has succeeded.\n\n@endpoint GET /2/account_activity/webhooks/{webhook_id}/subscriptions/all\n@desc Validate Account Activity Subscription\n@required {webhook_id: str}\n@returns(200) {data: map{subscribed: bool}, errors: [any]} # The request has succeeded.\n\n@endpoint POST /2/account_activity/webhooks/{webhook_id}/subscriptions/all\n@desc Create subscription\n@required {webhook_id: str}\n@returns(200) {data: map{subscribed: bool}, errors: [any]} # The request has succeeded.\n\n@endpoint GET /2/account_activity/webhooks/{webhook_id}/subscriptions/all/list\n@desc Get Account Activity Subscriptions\n@required {webhook_id: str}\n@returns(200) {data: map{application_id: str, subscriptions: [map], webhook_id: str, webhook_url: str}, errors: [any]} # The request has succeeded.\n\n@endpoint DELETE /2/account_activity/webhooks/{webhook_id}/subscriptions/{user_id}/all\n@desc Delete subscription\n@required {webhook_id: str, user_id: str}\n@returns(200) {data: map{subscribed: bool}, errors: [any]} # The request has succeeded.\n\n@endpoint GET /2/activity/stream\n@desc Activity Stream\n@optional {backfill_minutes: int(int32) # The number of minutes of backfill requested., start_time: str(date-time) # YYYY-MM-DDTHH:mm:ssZ. The earliest UTC timestamp from which the activities will be provided., end_time: str(date-time) # YYYY-MM-DDTHH:mm:ssZ. The latest UTC timestamp from which the activities will be provided.}\n@returns(200) {data: map{event_type: str, event_uuid: str, filter: map{direction: str, keyword: str, user_id: str}, includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}, payload: any, tag: str}, errors: [any]} # The request has succeeded.\n\n@endpoint DELETE /2/activity/subscriptions\n@desc Delete X activity subscriptions by IDs\n@required {ids: [str]}\n@returns(200) {data: [map], errors: [map], meta: map{total_subscriptions: int(int32)}} # The request has succeeded.\n\n@endpoint GET /2/activity/subscriptions\n@desc Get X activity subscriptions\n@optional {max_results: int(int32)=1000, pagination_token: str # A base32hex-encoded pagination token.}\n@returns(200) {data: [map], errors: [any]} # The request has succeeded.\n\n@endpoint POST /2/activity/subscriptions\n@desc Create X activity subscription\n@required {event_type: str(profile.update.bio/profile.update.profile_picture/profile.update.banner_picture/profile.update.screenname/profile.update.geo/profile.update.url/profile.update.verified_badge/profile.update.affiliate_badge/profile.update.handle/news.new/follow.follow/follow.unfollow/subscriptions.subscribe/subscriptions.unsubscribe/spaces.start/spaces.end/broadcast.start/broadcast.end/broadcast.chat/chat.received/chat.sent/chat.conversation.join/chat.conversation_join/chat.conversation.member_added/chat.conversation.member_removed/chat.conversation.admin_added/chat.conversation.admin_removed/chat.update.group_name/chat.update.restrictions/dm.sent/dm.received/dm.indicate_typing/dm.read/post.create/post.delete/post.mention.create/post.reply.create/post.quote.create/post.repost.create/like.create/mute.mute/mute.unmute/block.block/block.unblock) # Activity event type in dot notation. `chat.conversation_join` is a deprecated alias of `chat.conversation.join`; responses always use the canonical name., filter: map{direction: str, keyword: str, qualifiers: map, user_id: str}}\n@optional {tag: str # Optional caller-defined tag., webhook_id: str # Webhook to deliver the subscription events to.}\n@returns(200) {data: map{subscription: map{created_at: str, event_type: str, filter: map{direction: str, keyword: str, qualifiers: map, user_id: str}, subscription_id: str, tag: str, updated_at: str, webhook_id: str}}, errors: [any]} # The request has succeeded.\n\n@endpoint DELETE /2/activity/subscriptions/{subscription_id}\n@desc Deletes X activity subscription\n@required {subscription_id: str}\n@returns(200) {data: map{deleted: bool}, errors: [any]} # The request has succeeded.\n\n@endpoint PUT /2/activity/subscriptions/{subscription_id}\n@desc Update X activity subscription\n@required {subscription_id: str}\n@optional {tag: str # Optional caller-defined tag., webhook_id: str # Webhook to deliver the subscription events to.}\n@returns(200) {data: map{subscription: map{created_at: str, event_type: str, filter: map{direction: str, keyword: str, qualifiers: map, user_id: str}, subscription_id: str, tag: str, updated_at: str, webhook_id: str}, total_subscriptions: int}, errors: [any]} # The request has succeeded.\n\n@endpoint POST /2/articles/draft\n@desc Create draft Article\n@required {content_state: map{blocks!: [map], entities!: [map]}, title: str # The title of the Article.}\n@optional {cover_media: map{media_category!: str, media_id!: str}}\n@returns(201) {data: map{id: str, title: str}, errors: [any]} # The request has succeeded.\n\n@endpoint POST /2/articles/{article_id}/publish\n@desc Publish Article\n@required {article_id: str}\n@returns(200) {data: map{post_id: str}, errors: [any]} # The request has succeeded.\n\n@endpoint GET /2/bots\n@desc Get Bots\n@optional {user.fields: [str] # A comma separated list of User fields to display., expansions: [str] # A comma separated list of fields to expand., post.fields: [str] # A comma separated list of Post fields to display.}\n@returns(200) {data: [map], errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}, meta: map{max_bots: int, result_count: int(int32)}} # The request has succeeded.\n\n@endpoint POST /2/bots\n@desc Create a bot\n@required {handle: str # The bot's handle (X screen name): 5-15 characters, letters, numbers, or underscores.}\n@optional {display_name: str # The bot's display name; defaults to the handle., scopes: [str] # Scopes for the bot's bearer token. Broadcast moderation additionally supports broadcast.read and broadcast.write. Defaults to the XChat scope set (dm.read, dm.write, tweet.read, users.read, media.write).}\n@returns(201) {data: map{id: str, name: str, scopes: [str], token: str, token_expires_at_ms: int, username: str}, errors: [any]} # The request has succeeded.\n\n@endpoint DELETE /2/bots/{id}\n@desc Delete Bot\n@required {id: str}\n@returns(200) {data: map{deleted: bool}, errors: [any]} # The request has succeeded.\n\n@endpoint PUT /2/bots/{id}\n@desc Update Bot\n@required {id: str}\n@optional {display_name: str # New display name., dm_permission: str(everyone/premium/no_one) # Who may send Direct Messages to the bot., handle: str # New handle (X screen name): 5-15 characters, letters, numbers, or underscores.}\n@returns(200) {data: map{updated: bool}, errors: [any]} # The request has succeeded.\n\n@endpoint DELETE /2/bots/{id}/token\n@desc Revoke Bot Token\n@required {id: str}\n@returns(200) {data: map{revoked: bool}, errors: [any]} # The request has succeeded.\n\n@endpoint POST /2/bots/{id}/token\n@desc Rotate Bot Token\n@required {id: str}\n@optional {scopes: [str] # Scopes for the new bearer token. Broadcast moderation additionally supports broadcast.read and broadcast.write. Defaults to the XChat scope set (dm.read, dm.write, tweet.read, users.read, media.write).}\n@returns(200) {data: map{id: str, name: str, scopes: [str], token: str, token_expires_at_ms: int, username: str}, errors: [any]} # The request has succeeded.\n\n@endpoint GET /2/broadcasts\n@desc List broadcasts\n@optional {ids: [str] # Comma-separated broadcast IDs to retrieve instead of listing broadcasts., max_results: int(int32), pagination_token: str, broadcast.fields: [str] # A comma separated list of Broadcast fields to display.}\n@returns(200) {data: [map], errors: [any], meta: map{next_token: str, result_count: int(int32)}} # The request has succeeded.\n\n@endpoint GET /2/broadcasts/chat/moderators\n@desc Get chat moderators\n@optional {user.fields: [str] # A comma separated list of User fields to display., expansions: [str] # A comma separated list of fields to expand., post.fields: [str] # A comma separated list of Post fields to display.}\n@returns(200) {data: [map], errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}, meta: map{result_count: int(int32)}} # The request has succeeded.\n\n@endpoint POST /2/broadcasts/chat/moderators\n@desc Add a chat moderator\n@required {user_id: str # The user to appoint as a moderator.}\n@returns(200) {data: map{moderator_user_ids: [str]}, errors: [any]} # The request has succeeded.\n\n@endpoint DELETE /2/broadcasts/chat/moderators/{user_id}\n@desc Remove a chat moderator\n@required {user_id: str # A 64-bit signed integer.}\n@returns(200) {data: map{moderator_user_ids: [str]}, errors: [any]} # The request has succeeded.\n\n@endpoint GET /2/broadcasts/scheduled\n@desc List scheduled broadcasts\n@optional {max_results: int(int32), oldest_start_time: str, newest_start_time: str, pagination_token: str}\n@returns(200) {data: [map], errors: [any]} # The request has succeeded.\n\n@endpoint POST /2/broadcasts/scheduled\n@desc Create a scheduled broadcast\n@required {scheduled_start_ms: str # Start time, ms since Unix epoch (decimal string)., source_id: str # Ingest / source id to bind (same as sources `rtmp_stream_key`).}\n@optional {available_for_replay: bool # Enable replay., chat_option: str # Chat permission option (numeric string)., description: str # Description., is_locked: bool # Lock the broadcast., locale: str # Locale., manual_publish: bool # If true, do not auto-publish at start; call POST .../live when ready., recurrence: map{frequency!: str, repeats!: str}, scheduled_end_ms: str # Optional end time, ms since Unix epoch (decimal string). Omit for an open-ended broadcast., telecast_id: str # Optional telecast id (numeric string)., thumbnail_media_id: str # Pre-live slate media id (numeric string)., title: str # Title / status text.}\n@returns(201) {data: map{available_for_replay: bool, broadcast_id: str, chat_option: str, description: str, locale: str, manual_publish: bool, recurring_schedule_id: str, scheduled_broadcast_id: str, scheduled_end_ms: str, scheduled_start_ms: str, source_id: str, state: str, telecast_id: str, thumbnail_media_id: str, title: str}, errors: [any]} # The request has succeeded.\n\n@endpoint DELETE /2/broadcasts/scheduled/{id}\n@desc Delete a scheduled broadcast\n@required {id: str}\n@optional {roll_forward: bool}\n@returns(200) {data: map{deleted: bool}, errors: [any]} # The request has succeeded.\n\n@endpoint GET /2/broadcasts/scheduled/{id}\n@desc Get a scheduled broadcast\n@required {id: str}\n@returns(200) {data: map{available_for_replay: bool, broadcast_id: str, chat_option: str, description: str, locale: str, manual_publish: bool, recurring_schedule_id: str, scheduled_broadcast_id: str, scheduled_end_ms: str, scheduled_start_ms: str, source_id: str, state: str, telecast_id: str, thumbnail_media_id: str, title: str}, errors: [any]} # The request has succeeded.\n\n@endpoint PUT /2/broadcasts/scheduled/{id}\n@desc Update a scheduled broadcast\n@required {id: str, scheduled_broadcast_id: str # Numeric scheduler id from create/list/get., scheduled_end_ms: str # End time, ms since Unix epoch (decimal string)., scheduled_start_ms: str # Start time, ms since Unix epoch (decimal string).}\n@optional {available_for_replay: bool # Enable replay., chat_option: str # Chat permission option (numeric string)., description: str # Description., is_locked: bool # Lock the broadcast., locale: str # Locale., manual_publish: bool # If true, do not auto-publish at start; call POST .../live when ready., roll_forward: bool # When true, shift the head of a recurring series., source_id: str # Ingest / source id., thumbnail_media_id: str # Pre-live slate media id (numeric string)., title: str # Title / status text.}\n@returns(200) {data: map{available_for_replay: bool, broadcast_id: str, chat_option: str, description: str, locale: str, manual_publish: bool, recurring_schedule_id: str, scheduled_broadcast_id: str, scheduled_end_ms: str, scheduled_start_ms: str, source_id: str, state: str, telecast_id: str, thumbnail_media_id: str, title: str}, errors: [any]} # The request has succeeded.\n\n@endpoint POST /2/broadcasts/scheduled/{id}/live\n@desc Go live on a scheduled broadcast\n@required {id: str}\n@returns(200) {data: map{available_for_replay: bool, broadcast_id: str, chat_option: str, description: str, locale: str, manual_publish: bool, recurring_schedule_id: str, scheduled_broadcast_id: str, scheduled_end_ms: str, scheduled_start_ms: str, source_id: str, state: str, telecast_id: str, thumbnail_media_id: str, title: str}, errors: [any]} # The request has succeeded.\n\n@endpoint GET /2/broadcasts/{id}\n@desc Get a broadcast\n@required {id: str}\n@optional {broadcast.fields: [str] # A comma separated list of Broadcast fields to display.}\n@returns(200) {data: map{available_for_replay: bool, broadcast_id: str, chat_option: int, created_at_ms: str, end_ms: str, height: int, id: str, image_url: str, image_url_medium: str, image_url_small: str, is_high_latency: bool, language: str, media_key: str, scheduled_end_ms: str, scheduled_start_ms: str, share_url: str, source_id: str, start_ms: str, state: str, title: str, total_watched: str, total_watching: str, tweet_id: str, twitter_user_id: str, updated_at_ms: str, width: int}, errors: [any]} # The request has succeeded.\n\n@endpoint GET /2/broadcasts/{id}/chat\n@desc Get broadcast chat history\n@required {id: str}\n@optional {max_results: int(int32)=100, pagination_token: str # A 64-bit signed integer., broadcast_chat_message.fields: [str] # A comma separated list of BroadcastChatMessage fields to display., expansions: [str] # A comma separated list of fields to expand., user.fields: [str] # A comma separated list of User fields to display.}\n@returns(200) {data: [map], errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}, meta: map{next_token: str, result_count: int(int32)}} # The request has succeeded.\n\n@endpoint POST /2/broadcasts/{id}/chat\n@desc Send a chat message to a live broadcast\n@required {id: str, text: str # The chat message text.}\n@optional {reply_to: str # Message id to reply to, returned as timestamp when sent.}\n@returns(200) {data: map{success: bool, timestamp: str}, errors: [any]} # The request has succeeded.\n\n@endpoint POST /2/broadcasts/{id}/chat/mutes\n@desc Mute or time out a user in a broadcast chat\n@required {id: str, user_id: str # The user to mute.}\n@optional {end_at_ms: str # The Unix timestamp in milliseconds when the mute expires. Omit this field to mute indefinitely., message_id: str # A chat message to remove while muting the user.}\n@returns(200) {data: map{muted: bool}, errors: [any]} # The request has succeeded.\n\n@endpoint DELETE /2/broadcasts/{id}/chat/mutes/{user_id}\n@desc Unmute a user in a broadcast chat\n@required {id: str, user_id: str # A 64-bit signed integer.}\n@returns(200) {data: map{muted: bool}, errors: [any]} # The request has succeeded.\n\n@endpoint DELETE /2/broadcasts/{id}/chat/{message_id}\n@desc Remove a chat message from a live broadcast\n@required {id: str, message_id: str}\n@returns(200) {data: map{deleted: bool}, errors: [any]} # The request has succeeded.\n\n@endpoint GET /2/chat/conversations\n@desc Get Chat Conversations\n@optional {max_results: int(int32)=10, pagination_token: str, chat_conversation.fields: [str] # A comma separated list of ChatConversation fields to display., expansions: [str] # A comma separated list of fields to expand., user.fields: [str] # A comma separated list of User fields to display.}\n@returns(200) {data: [map], errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}, meta: map{has_message_requests: bool, has_more: bool, next_token: str, result_count: int(int32)}} # The request has succeeded.\n\n@endpoint POST /2/chat/conversations/group\n@desc Create Chat Group Conversation\n@required {conversation_id: str # Client-generated conversation ID., conversation_key_version: str # Version of the conversation encryption key., conversation_participant_keys: [map{encrypted_conversation_key: str, public_key_version: str, user_id: str}] # Encrypted conversation keys for each participant., group_members: [str] # User IDs of group members to include in the conversation.}\n@optional {action_signatures: [map{encoded_message_event_detail!: str, message_event_signature!: map, message_id!: str, signature_payload: str}] # Cryptographic signatures for the action., base64_encoded_key_rotation: str # Base64-encoded key rotation payload., group_admins: [str] # User IDs of group admins. Defaults to the creator if omitted., group_avatar_url: str # URL of the avatar image for the group conversation., group_description: str # Description for the group conversation., group_name: str # Display name for the group conversation., ttl_msec: str # Message time-to-live in milliseconds. Messages expire after this duration.}\n@returns(201) {data: map{conversation_id: str, conversation_key_change_sequence_id: str}, errors: [any]} # The request has succeeded.\n\n@endpoint POST /2/chat/conversations/group/initialize\n@desc Initialize Chat Group\n@returns(200) {data: map{conversation_id: str}, errors: [any]} # The request has succeeded.\n\n@endpoint GET /2/chat/conversations/{id}\n@desc Get Chat Conversation\n@required {id: str}\n@optional {chat_conversation.fields: [str] # A comma separated list of ChatConversation fields to display., expansions: [str] # A comma separated list of fields to expand., user.fields: [str] # A comma separated list of User fields to display.}\n@returns(200) {data: map{admin_ids: [str], created_at: str(date-time), group_avatar_url: str, group_name: str, id: str, is_muted: bool, member_ids: [str], message_ttl_ms: int, participant_ids: [str], screen_capture_blocking_enabled: bool, screen_capture_detection_enabled: bool, type: str, updated_at: str(date-time)}, errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}} # The request has succeeded.\n\n@endpoint GET /2/chat/conversations/{id}/events\n@desc Get Chat Conversation Events\n@required {id: str}\n@optional {max_results: int(int32)=10, pagination_token: str, chat_message_event.fields: [str] # A comma separated list of ChatMessageEvent fields to display.}\n@returns(200) {data: [map], errors: [any], meta: map{conversation_key_events: [str], has_more: bool, next_token: str, result_count: int(int32)}} # The request has succeeded.\n\n@endpoint POST /2/chat/conversations/{id}/keys\n@desc Add Conversation Keys\n@required {id: str, conversation_key_version: str # Version of the conversation encryption key (typically a timestamp in milliseconds)., conversation_participant_keys: [map{encrypted_conversation_key: str, public_key_version: str, user_id: str}] # Encrypted conversation keys for each participant.}\n@optional {action_signatures: [map{encoded_message_event_detail!: str, message_event_signature!: map, message_id!: str, signature_payload: str}] # Cryptographic signatures for the action., base64_encoded_key_rotation: str # Base64-encoded key rotation payload for ratchet tree key management.}\n@returns(200) {data: map{conversation_id: str, sequence_id: str}, errors: [any]} # The request has succeeded.\n\n@endpoint POST /2/chat/conversations/{id}/members\n@desc Add members to a Chat group conversation\n@required {id: str, user_ids: [str] # List of user IDs to add to the group conversation.}\n@optional {action_signatures: [map{encoded_message_event_detail!: str, message_event_signature!: map, message_id!: str, signature_payload: str}] # Cryptographic signatures for the action., conversation_key_version: str # Version of the new rotated conversation key., conversation_participant_keys: [map{encrypted_conversation_key: str, public_key_version: str, user_id: str}] # Encrypted conversation keys for each participant., encrypted_avatar_url: str # Re-encrypted group avatar URL with new conversation key., encrypted_title: str # Re-encrypted group title with new conversation key.}\n@returns(200) {data: map{article: map, article_title: map, attachments: map{media_keys: [str]?, media_source_tweet_id: [str]?, poll_ids: [str]?}, author_id: str, card_uri: str, community_id: str, context_annotations: [map], conversation_id: str, created_at: str(date-time), display_text_range: [int(int64)], edit_controls: map{editable_until: str?, edits_remaining: int(int64)?, is_edit_eligible: bool?}, edit_history_post_ids: [str], entities: map{cashtags: [map]?, hashtags: [map]?, mentions: [map]?, urls: [map]?}, geo: map{coordinates: map?{coordinates: [num(double)], type: str}, place_id: str?}, id: str, in_reply_to_user_id: str, lang: str, matched_media_notes: [map], media_metadata: [map], non_public_metrics: map, note_post: map{entities: map?{cashtags: [map]?, hashtags: [map]?, mentions: [map]?, urls: [map]?}, text: str}, note_request_suggestions: [map], organic_metrics: map, paid_partnership: bool, possibly_sensitive: bool, promoted_metrics: map, public_metrics: map{bookmark_count: int(int64), impression_count: int(int64), like_count: int(int64), quote_count: int(int64), reply_count: int(int64), repost_count: int(int64)}, referenced_posts: [map], reply_settings: str, scopes: map{followers: bool}, source: str, suggested_source_links: [str], suggested_source_links_with_counts: [map], text: str, username: str, withheld: map{copyright: bool, country_codes: [str], scope: str?}}, errors: [any]} # The request has succeeded.\n\n@endpoint POST /2/chat/conversations/{id}/messages\n@desc Send Chat Message\n@required {id: str, encoded_message_create_event: str # Base64-encoded Thrift MessageCreateEvent containing encrypted message contents., message_id: str # Unique identifier for this message.}\n@optional {conversation_token: str # Optional conversation token., encoded_message_event_signature: str # Base64-encoded Thrift MessageEventSignature for message verification.}\n@returns(201) {data: map{encoded_message_event: str}, errors: [any]} # The request has succeeded.\n\n@endpoint POST /2/chat/conversations/{id}/messages/delete\n@desc Delete Chat messages\n@required {id: str, action_signatures: [map{encoded_message_event_detail!: str, message_event_signature!: map, message_id!: str, signature_payload: str}] # Cryptographic signatures for the action., delete_message_action: str(delete_for_all/delete_for_self) # delete_for_all removes the messages for every participant; delete_for_self removes them only from the authenticated user's view., sequence_ids: [str] # Sequence IDs of the messages to delete.}\n@optional {media_hash_keys: [str] # Hash keys of encrypted media blobs to delete alongside the messages (delete_for_all only).}\n@returns(200) {data: map{deleted: bool}, errors: [any]} # The request has succeeded.\n\n@endpoint POST /2/chat/conversations/{id}/read\n@desc Mark Conversation as Read\n@required {id: str, seen_until_sequence_id: str # The sequence ID of the last message to mark as read up to.}\n@returns(200) {data: map{success: bool}, errors: [any]} # The request has succeeded.\n\n@endpoint POST /2/chat/conversations/{id}/typing\n@desc Send Typing Indicator\n@required {id: str}\n@returns(200) {data: map{success: bool}, errors: [any]} # The request has succeeded.\n\n@endpoint POST /2/chat/media/upload/initialize\n@desc Initialize Chat Media Upload\n@required {conversation_id: str # The XChat conversation the upload belongs to., total_bytes: int # Total size of the media upload in bytes.}\n@returns(200) {data: map{conversation_id: str, media_hash_key: str, session_id: str}, errors: [any]} # The request has succeeded.\n\n@endpoint POST /2/chat/media/upload/{id}/append\n@desc Append Chat Media Upload\n@required {id: str, conversation_id: str # The XChat conversation the upload belongs to., media: any # The media segment bytes: base64-encoded in JSON bodies, raw bytes in multipart bodies., media_hash_key: str # The media hash key returned by the initialize step., segment_index: int # The index of this segment in the upload sequence.}\n@returns(200) {data: map{expires_at: int}, errors: [any]} # The request has succeeded.\n\n@endpoint POST /2/chat/media/upload/{id}/finalize\n@desc Finalize Chat Media Upload\n@required {id: str, conversation_id: str # The XChat conversation the upload belongs to., media_hash_key: str # The media hash key returned by the initialize step., num_parts: str # Total number of uploaded parts, as a numeric string.}\n@optional {message_id: str # Optional message identifier associated with the upload., ttl_msec: str # Optional TTL for the media in milliseconds, as a numeric string.}\n@returns(200) {data: map{success: bool}, errors: [any]} # The request has succeeded.\n\n@endpoint GET /2/chat/media/{id}/{media_hash_key}\n@desc Download Chat Media\n@required {id: str, media_hash_key: str}\n@returns(200) The request has succeeded.\n\n@endpoint GET /2/communities/search\n@desc Search Communities\n@required {query: str}\n@optional {max_results: int(int32)=10, next_token: str, pagination_token: str, community.fields: [str] # A comma separated list of Community fields to display.}\n@returns(200) {data: [map], errors: [any], meta: map{next_token: str}} # The request has succeeded.\n\n@endpoint GET /2/communities/{id}\n@desc Get Communities by ID\n@required {id: str}\n@optional {community.fields: [str] # A comma separated list of Community fields to display.}\n@returns(200) {data: map{access: str, created_at: str, description: str, id: str, join_policy: str, member_count: int, name: str}, errors: [any]} # The request has succeeded.\n\n@endpoint GET /2/compliance/jobs\n@desc Get Compliance Jobs\n@required {type: str(tweets/users)}\n@optional {status: str(created/in_progress/failed/complete), compliance_job.fields: [str] # A comma separated list of ComplianceJob fields to display.}\n@returns(200) {data: [map], errors: [any], meta: map{result_count: int(int32)}} # The request has succeeded.\n\n@endpoint POST /2/compliance/jobs\n@desc Create Compliance Job\n@required {type: str(tweets/users) # Type of compliance job to list.}\n@optional {compliance_job.fields: [str] # A comma separated list of ComplianceJob fields to display., name: str # A user-provided name for this job., resumable: bool # Whether to enable the upload URL with support for resumable uploads.}\n@returns(200) {data: map{created_at: str, download_expires_at: str, download_url: str, id: str, name: str, resumable: bool, status: str, type: str, upload_expires_at: str, upload_url: str}, errors: [any]} # The request has succeeded.\n\n@endpoint DELETE /2/compliance/jobs/{id}\n@desc Cancel Compliance Job\n@required {id: str}\n@optional {compliance_job.fields: [str] # A comma separated list of ComplianceJob fields to display.}\n@returns(200) {data: map{created_at: str, download_expires_at: str, download_url: str, id: str, name: str, resumable: bool, status: str, type: str, upload_expires_at: str, upload_url: str}, errors: [any]} # The request has succeeded.\n\n@endpoint GET /2/compliance/jobs/{id}\n@desc Get Compliance Job by ID\n@required {id: str}\n@optional {compliance_job.fields: [str] # A comma separated list of ComplianceJob fields to display.}\n@returns(200) {data: map{created_at: str, download_expires_at: str, download_url: str, id: str, name: str, resumable: bool, status: str, type: str, upload_expires_at: str, upload_url: str}, errors: [any]} # The request has succeeded.\n\n@endpoint GET /2/compliance/jobs/{id}/download\n@desc Download Compliance Job Results\n@required {id: str, token: str # Signed download token from the job's download_url.}\n@optional {compliance_job.fields: [str] # A comma separated list of ComplianceJob fields to display.}\n@returns(200) The request has succeeded.\n\n@endpoint PUT /2/compliance/jobs/{id}/upload\n@desc Upload Compliance Job Submission\n@required {id: str, token: str # Signed upload token from the job's upload_url.}\n@optional {compliance_job.fields: [str] # A comma separated list of ComplianceJob fields to display.}\n@returns(200) {data: map{created_at: str, download_expires_at: str, download_url: str, id: str, name: str, resumable: bool, status: str, type: str, upload_expires_at: str, upload_url: str}, errors: [any]} # The request has succeeded.\n\n@endpoint DELETE /2/connections\n@desc Terminate multiple connections\n@required {uuids: [str] # Connection UUIDs to terminate (1-100).}\n@returns(200) {data: map{failed_kills: int, results: [map], successful_kills: int}, errors: [any]} # The request has succeeded.\n\n@endpoint GET /2/connections\n@desc Get Connection History\n@optional {status: str(active/inactive/all)=active, endpoints: [str], max_results: int(int32)=10, pagination_token: str, connection.fields: [str] # A comma separated list of Connection fields to display.}\n@returns(200) {data: [map], errors: [any], meta: map{next_token: str, result_count: int(int32)}} # The request has succeeded.\n\n@endpoint DELETE /2/connections/all\n@desc Terminate all connections\n@returns(200) {data: map{failed_kills: int, results: [map], successful_kills: int}, errors: [any]} # The request has succeeded.\n\n@endpoint DELETE /2/connections/{endpoint_id}\n@desc Terminate connections by endpoint\n@required {endpoint_id: str(filtered_stream/sample_stream/sample10_stream/firehose_stream/tweets_compliance_stream/users_compliance_stream/tweet_label_stream/firehose_stream_lang_en/firehose_stream_lang_ja/firehose_stream_lang_ko/firehose_stream_lang_pt/likes_firehose_stream/likes_sample10_stream/likes_compliance_stream)}\n@returns(200) {data: map{failed_kills: int, results: [map], successful_kills: int}, errors: [any]} # The request has succeeded.\n\n@endpoint POST /2/dm_conversations\n@desc Create DM conversation\n@required {conversation_type: str # The conversation type to create. Supports `Group` only., message: map{attachments: [map], text: str}, participant_ids: [str] # Participants for the conversation.}\n@returns(201) {data: map{dm_conversation_id: str, dm_event_id: str}, errors: [any]} # The request has succeeded.\n\n@endpoint GET /2/dm_conversations/media/{dm_id}/{media_id}/{resource_id}\n@desc Download DM Media\n@required {dm_id: str, media_id: str, resource_id: str}\n@returns(200) The request has succeeded.\n\n@endpoint GET /2/dm_conversations/with/{participant_id}/dm_events\n@desc Get Direct Messages Events by Participant ID\n@required {participant_id: str}\n@optional {max_results: int(int32)=100, pagination_token: str # A base32hex-encoded pagination token., event_types: [str]=MessageCreate,ParticipantsLeave,ParticipantsJoin, dm_event.fields: [str] # A comma separated list of DmEvent fields to display., expansions: [str] # A comma separated list of fields to expand., user.fields: [str] # A comma separated list of User fields to display., post.fields: [str] # A comma separated list of Post fields to display., media.fields: [str] # A comma separated list of Media fields to display.}\n@returns(200) {data: [map], errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}, meta: map{next_token: str, previous_token: str, result_count: int(int32)}} # The request has succeeded.\n\n@endpoint POST /2/dm_conversations/with/{participant_id}/messages\n@desc Create DM message by participant ID\n@required {participant_id: str}\n@optional {attachments: [map{media_id!: str}] # Attachments to include with the message., text: str # Text of the Direct Message.}\n@returns(201) {data: map{dm_conversation_id: str, dm_event_id: str}, errors: [any]} # The request has succeeded.\n\n@endpoint POST /2/dm_conversations/{dm_conversation_id}/messages\n@desc Create Direct Messages by Conversation ID\n@required {dm_conversation_id: str}\n@optional {attachments: [map{media_id!: str}] # Attachments to include with the message., text: str # Text of the Direct Message.}\n@returns(201) {data: map{dm_conversation_id: str, dm_event_id: str}, errors: [any]} # The request has succeeded.\n\n@endpoint GET /2/dm_conversations/{id}/dm_events\n@desc Get Direct Messages Events by Conversation ID\n@required {id: str}\n@optional {max_results: int(int32)=100, pagination_token: str # A base32hex-encoded pagination token., event_types: [str]=MessageCreate,ParticipantsLeave,ParticipantsJoin, dm_event.fields: [str] # A comma separated list of DmEvent fields to display., expansions: [str] # A comma separated list of fields to expand., user.fields: [str] # A comma separated list of User fields to display., post.fields: [str] # A comma separated list of Post fields to display., media.fields: [str] # A comma separated list of Media fields to display.}\n@returns(200) {data: [map], errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}, meta: map{next_token: str, previous_token: str, result_count: int(int32)}} # The request has succeeded.\n\n@endpoint GET /2/dm_events\n@desc Get Direct Messages Events\n@optional {max_results: int(int32)=100, pagination_token: str # A base32hex-encoded pagination token., event_types: [str]=MessageCreate,ParticipantsLeave,ParticipantsJoin, dm_event.fields: [str] # A comma separated list of DmEvent fields to display., expansions: [str] # A comma separated list of fields to expand., user.fields: [str] # A comma separated list of User fields to display., post.fields: [str] # A comma separated list of Post fields to display., media.fields: [str] # A comma separated list of Media fields to display.}\n@returns(200) {data: [map], errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}, meta: map{next_token: str, previous_token: str, result_count: int(int32)}} # The request has succeeded.\n\n@endpoint DELETE /2/dm_events/{event_id}\n@desc Delete DM event\n@required {event_id: str}\n@returns(200) {data: map{deleted: bool}, errors: [any]} # The request has succeeded.\n\n@endpoint GET /2/dm_events/{event_id}\n@desc Get Direct Messages Events by ID\n@required {event_id: str}\n@optional {dm_event.fields: [str] # A comma separated list of DmEvent fields to display., expansions: [str] # A comma separated list of fields to expand., user.fields: [str] # A comma separated list of User fields to display., post.fields: [str] # A comma separated list of Post fields to display., media.fields: [str] # A comma separated list of Media fields to display.}\n@returns(200) {data: map{attachments: map{card_ids: [str]?, media_keys: [str]?}, created_at: str(date-time), dm_conversation_id: str, entities: map{cashtags: [map]?, hashtags: [map]?, mentions: [map]?, urls: [map]?}, event_type: str, id: str, participant_ids: [str], referenced_posts: [map], sender_id: str, text: str}, errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}} # The request has succeeded.\n\n@endpoint GET /2/likes/compliance/stream\n@desc Stream Likes compliance data\n@optional {backfill_minutes: int(int32) # The number of minutes of backfill requested., start_time: str(date-time) # YYYY-MM-DDTHH:mm:ssZ. The earliest UTC timestamp from which the Likes Compliance events will be provided., end_time: str(date-time) # YYYY-MM-DDTHH:mm:ssZ. The latest UTC timestamp from which the Likes Compliance events will be provided.}\n@returns(200) The request has succeeded.\n\n@endpoint GET /2/likes/firehose/stream\n@desc Stream all Likes\n@required {partition: int(int32) # The partition number.}\n@optional {backfill_minutes: int(int32) # The number of minutes of backfill requested., start_time: str(date-time) # YYYY-MM-DDTHH:mm:ssZ. The earliest UTC timestamp to which the Likes will be provided., end_time: str(date-time) # YYYY-MM-DDTHH:mm:ssZ. The latest UTC timestamp to which the Posts will be provided., like_with_tweet_author.fields: [str] # A comma separated list of LikeWithTweetAuthor fields to display., expansions: [str] # A comma separated list of fields to expand., media.fields: [str] # A comma separated list of Media fields to display., user.fields: [str] # A comma separated list of User fields to display., tweet.fields: [str] # A comma separated list of Tweet fields to display.}\n@returns(200) {data: map{created_at: str(date-time), id: str, liked_tweet_id: str, timestamp_ms: int(int32), tweet_author_id: str}, errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}} # The request has succeeded.\n\n@endpoint GET /2/likes/sample10/stream\n@desc Stream sampled Likes\n@required {partition: int(int32) # The partition number.}\n@optional {backfill_minutes: int(int32) # The number of minutes of backfill requested., start_time: str(date-time) # YYYY-MM-DDTHH:mm:ssZ. The earliest UTC timestamp to which the Likes will be provided., end_time: str(date-time) # YYYY-MM-DDTHH:mm:ssZ. The latest UTC timestamp to which the Posts will be provided., like_with_tweet_author.fields: [str] # A comma separated list of LikeWithTweetAuthor fields to display., expansions: [str] # A comma separated list of fields to expand., media.fields: [str] # A comma separated list of Media fields to display., user.fields: [str] # A comma separated list of User fields to display., tweet.fields: [str] # A comma separated list of Tweet fields to display.}\n@returns(200) {data: map{created_at: str(date-time), id: str, liked_tweet_id: str, timestamp_ms: int(int32), tweet_author_id: str}, errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}} # The request has succeeded.\n\n@endpoint POST /2/lists\n@desc Create Lists\n@required {name: str # Name of the List (1-25 characters).}\n@optional {description: str # Description of the List (up to 100 characters)., private: bool # Whether the List is private.}\n@returns(201) {data: map{id: str, name: str}, errors: [any]} # The request has succeeded.\n\n@endpoint DELETE /2/lists/{id}\n@desc Delete List\n@required {id: str}\n@returns(200) {data: map{deleted: bool}, errors: [any]} # The request has succeeded.\n\n@endpoint GET /2/lists/{id}\n@desc Get Lists by ID\n@required {id: str}\n@optional {list.fields: [str] # A comma separated list of List fields to display., expansions: [str] # A comma separated list of fields to expand., user.fields: [str] # A comma separated list of User fields to display.}\n@returns(200) {data: map{created_at: str, description: str, follower_count: int(int64), id: str, member_count: int(int64), name: str, owner_id: str, private: bool}, errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}} # The request has succeeded.\n\n@endpoint PUT /2/lists/{id}\n@desc Update List\n@required {id: str}\n@optional {description: str # New description for the List (up to 100 characters)., name: str # New name for the List (1-25 characters)., private: bool # Whether the List is private.}\n@returns(200) {data: map{updated: bool}, errors: [any]} # The request has succeeded.\n\n@endpoint GET /2/lists/{id}/followers\n@desc Get Lists Followers\n@required {id: str}\n@optional {max_results: int(int32)=100, pagination_token: str # A 64-bit signed integer., user.fields: [str] # A comma separated list of User fields to display., expansions: [str] # A comma separated list of fields to expand., post.fields: [str] # A comma separated list of Post fields to display.}\n@returns(200) {data: [map], errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}, meta: map{next_token: str, previous_token: str, result_count: int(int32)}} # The request has succeeded.\n\n@endpoint GET /2/lists/{id}/members\n@desc Get Lists Members\n@required {id: str}\n@optional {max_results: int(int32)=100, pagination_token: str # A 64-bit signed integer., user.fields: [str] # A comma separated list of User fields to display., expansions: [str] # A comma separated list of fields to expand., post.fields: [str] # A comma separated list of Post fields to display.}\n@returns(200) {data: [map], errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}, meta: map{next_token: str, previous_token: str, result_count: int(int32)}} # The request has succeeded.\n\n@endpoint POST /2/lists/{id}/members\n@desc Add Lists Member\n@required {id: str, user_id: str}\n@returns(200) {data: map{is_member: bool}, errors: [any]} # The request has succeeded.\n\n@endpoint DELETE /2/lists/{id}/members/{user_id}\n@desc Remove a List member\n@required {id: str, user_id: str}\n@returns(200) {data: map{is_member: bool}, errors: [any]} # The request has succeeded.\n\n@endpoint GET /2/lists/{id}/tweets\n@desc Get Lists Posts\n@required {id: str}\n@optional {max_results: int(int32)=100, pagination_token: str # A base32hex-encoded pagination token., post.fields: [str] # A comma separated list of Post fields to display., expansions: [str] # A comma separated list of fields to expand., user.fields: [str] # A comma separated list of User fields to display., media.fields: [str] # A comma separated list of Media fields to display., poll.fields: [str] # A comma separated list of Poll fields to display., place.fields: [str] # A comma separated list of Place fields to display.}\n@returns(200) {data: [map], errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}, meta: map{next_token: str, previous_token: str, result_count: int(int32)}} # The request has succeeded.\n\n@endpoint GET /2/media\n@desc Get Media by media keys\n@required {media_keys: [str]}\n@optional {media.fields: [str] # A comma separated list of Media fields to display.}\n@returns(200) {data: [map], errors: [any]} # The request has succeeded.\n\n@endpoint GET /2/media/analytics\n@desc Get Media analytics\n@required {media_keys: [str], start_time: str(date-time), end_time: str(date-time)}\n@optional {granularity: str(hourly/daily/total)=daily, media_analytics.fields: [str] # A comma separated list of MediaAnalytics fields to display.}\n@returns(200) {data: [map], errors: [any]} # The request has succeeded.\n\n@endpoint POST /2/media/metadata\n@desc Create Media metadata\n@required {id: str # The media id the metadata is attached to.}\n@optional {metadata: map{allow_download_status: map, alt_text: map, audience_policy: map, content_expiration: map, domain_restrictions: map, found_media_origin: map, geo_restrictions: map, management_info: map, preview_image: map, sensitive_media_warning: map, shared_info: map, sticker_info: map, upload_source: map}}\n@returns(200) {data: map{associated_metadata: map, id: str}, errors: [any]} # The request has succeeded.\n\n@endpoint DELETE /2/media/subtitles\n@desc Delete Media subtitles\n@required {id: str # The media id of the video the subtitles belong to., language_code: str # The language code of the subtitles to delete., media_category: str # The media category of the target media.}\n@returns(200) {data: map{deleted: bool}, errors: [any]} # The request has succeeded.\n\n@endpoint POST /2/media/subtitles\n@desc Create Media subtitles\n@optional {id: str # The media id of the video the subtitles belong to., media_category: str(AmplifyVideo/TweetVideo) # The media category of the target media., subtitles: map{display_name: str, id: str, language_code: str}}\n@returns(200) {data: map{associated_subtitles: map, id: str, media_category: str}, errors: [any]} # The request has succeeded.\n\n@endpoint GET /2/media/upload\n@desc Get Media upload status\n@required {media_id: str}\n@optional {command: str}\n@returns(200) {data: map{expires_after_secs: int, id: str, image: map{h: int, image_type: str, w: int}, media_key: str, processing_info: map{check_after_secs: int, progress_percent: int, state: str}, size: int, video: map{video_type: str}}, errors: [any]} # The request has succeeded.\n\n@endpoint POST /2/media/upload\n@desc Upload media\n@required {media: any # The media file to upload: base64-encoded in JSON bodies, raw bytes in multipart bodies., media_category: str(tweet_image/tweet_video/tweet_gif/dm_image/dm_video/dm_gif/subtitles) # The category of the media being uploaded.}\n@optional {additional_owners: str # Comma-separated list of user IDs who can use this media.}\n@returns(200) {data: map{expires_after_secs: int, id: str, image: map{h: int, image_type: str, w: int}, media_key: str, processing_info: map{check_after_secs: int, progress_percent: int, state: str}, size: int, video: map{video_type: str}}, errors: [any]} # The request has succeeded.\n\n@endpoint POST /2/media/upload/initialize\n@desc Initialize media upload\n@optional {additional_owners: [str] # User ids granted access to the uploaded media., media_category: str(amplify_video/tweet_gif/tweet_image/tweet_video/dm_gif/dm_image/dm_video/subtitles) # The media category of the upload., media_type: str(video/mp4/video/webm/video/mp2t/video/quicktime/text/srt/text/vtt/image/jpeg/image/gif/image/bmp/image/png/image/webp/image/pjpeg/image/tiff/model/gltf-binary/model/vnd.usdz+zip) # The type of media., shared: bool # Whether this media is shared or not., total_bytes: int # The total size of the media upload in bytes.}\n@returns(200) {data: map{expires_after_secs: int, id: str, media_key: str}, errors: [any]} # The request has succeeded.\n\n@endpoint POST /2/media/upload/{id}/append\n@desc Append Media Upload\n@required {id: str, media: any # The media chunk to upload., segment_index: int # The index of this segment in the upload sequence.}\n@returns(200) {data: map{expires_at: int}, errors: [any]} # The request has succeeded.\n\n@endpoint POST /2/media/upload/{id}/finalize\n@desc Finalize Media upload\n@required {id: str}\n@returns(200) {data: map{expires_after_secs: int, id: str, image: map{h: int, image_type: str, w: int}, media_key: str, processing_info: map{check_after_secs: int, progress_percent: int, state: str}, size: int, video: map{video_type: str}}, errors: [any]} # The request has succeeded.\n\n@endpoint GET /2/media/{media_key}\n@desc Get Media by media key\n@required {media_key: str}\n@optional {media.fields: [str] # A comma separated list of Media fields to display.}\n@returns(200) {data: map{alt_text: str, duration_ms: int, height: int, media_key: str, non_public_metrics: map{playback_0_count: int(int64)?, playback_100_count: int(int64)?, playback_25_count: int(int64)?, playback_50_count: int(int64)?, playback_75_count: int(int64)?}, organic_metrics: map{playback_0_count: int(int64)?, playback_100_count: int(int64)?, playback_25_count: int(int64)?, playback_50_count: int(int64)?, playback_75_count: int(int64)?, view_count: int(int64)?}, preview_image_url: str, promoted_metrics: map{playback_0_count: int(int64)?, playback_100_count: int(int64)?, playback_25_count: int(int64)?, playback_50_count: int(int64)?, playback_75_count: int(int64)?, view_count: int(int64)?}, public_metrics: map{view_count: int(int64)}, type: str, url: str, variants: [map], width: int}, errors: [any]} # The request has succeeded.\n\n@endpoint GET /2/news/search\n@desc Search News\n@required {query: str}\n@optional {max_results: int(int32)=10, max_age_hours: int(int32)=168, news.fields: [str] # A comma separated list of News fields to display.}\n@returns(200) {data: [map], errors: [any], meta: map{result_count: int(int32)}} # The request has succeeded.\n\n@endpoint GET /2/news/{id}\n@desc Get news stories by ID\n@required {id: str}\n@optional {news.fields: [str] # A comma separated list of News fields to display.}\n@returns(200) {data: map{category: str, cluster_posts_results: [map], contexts: map, disclaimer: str, hook: str, id: str, keywords: map, name: str, summary: str, updated_at: str}, errors: [any]} # The request has succeeded.\n\n@endpoint POST /2/notes\n@desc Create Community Notes\n@required {info: map{classification!: str, is_media_note: bool, misleading_tags!: [str], text!: str, trustworthy_sources!: bool}, post_id: str # ID of the Post the note is about., test_mode: bool # If true, the note is only for testing and is not publicly visible.}\n@returns(201) {data: map{id: str}, errors: [any]} # The request has succeeded.\n\n@endpoint POST /2/notes/evaluate\n@desc Evaluate Community Notes\n@required {note_text: str # Text of the community note to evaluate., post_id: str # ID of the Post the note evaluates.}\n@returns(200) {data: map{claim_opinion_score: num}, errors: [any]} # The request has succeeded.\n\n@endpoint GET /2/notes/search/notes_written\n@desc Search Community Notes Written\n@required {test_mode: bool}\n@optional {max_results: int(int32)=10, pagination_token: str, note.fields: [str] # A comma separated list of Note fields to display.}\n@returns(200) {data: [map], errors: [any], meta: map{next_token: str, result_count: int(int32)}} # The request has succeeded.\n\n@endpoint GET /2/notes/search/posts_eligible_for_notes\n@desc Search Eligible Posts\n@required {test_mode: bool}\n@optional {max_results: int(int32)=10, pagination_token: str, post_selection: str, post.fields: [str] # A comma separated list of Post fields to display., expansions: [str] # A comma separated list of fields to expand., user.fields: [str] # A comma separated list of User fields to display., media.fields: [str] # A comma separated list of Media fields to display., poll.fields: [str] # A comma separated list of Poll fields to display., place.fields: [str] # A comma separated list of Place fields to display.}\n@returns(200) {data: [map], errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}, meta: map{next_token: str, result_count: int(int32)}} # The request has succeeded.\n\n@endpoint DELETE /2/notes/{id}\n@desc Delete a Community Note\n@required {id: str}\n@returns(200) {data: map{deleted: bool}, errors: [any]} # The request has succeeded.\n\n@endpoint GET /2/openapi.json\n@desc Get OpenAPI Spec.\n@returns(200) The request was successful\n\n@endpoint GET /2/spaces\n@desc Get Spaces by IDs\n@required {ids: [str]}\n@optional {space.fields: [str] # A comma separated list of Space fields to display., expansions: [str] # A comma separated list of fields to expand., user.fields: [str] # A comma separated list of User fields to display., topic.fields: [str] # A comma separated list of Topic fields to display.}\n@returns(200) {data: [map], errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}} # The request has succeeded.\n\n@endpoint GET /2/spaces/by/creator_ids\n@desc Get Spaces by Creator IDs\n@required {user_ids: [str]}\n@optional {space.fields: [str] # A comma separated list of Space fields to display., expansions: [str] # A comma separated list of fields to expand., user.fields: [str] # A comma separated list of User fields to display., topic.fields: [str] # A comma separated list of Topic fields to display.}\n@returns(200) {data: [map], errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}, meta: map{result_count: int(int32)}} # The request has succeeded.\n\n@endpoint GET /2/spaces/search\n@desc Search Spaces\n@required {query: str}\n@optional {state: str(live/scheduled/all)=all, max_results: int(int32)=100, space.fields: [str] # A comma separated list of Space fields to display., expansions: [str] # A comma separated list of fields to expand., user.fields: [str] # A comma separated list of User fields to display., topic.fields: [str] # A comma separated list of Topic fields to display.}\n@returns(200) {data: [map], errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}, meta: map{result_count: int(int32)}} # The request has succeeded.\n\n@endpoint GET /2/spaces/{id}\n@desc Get Spaces by ID\n@required {id: str}\n@optional {space.fields: [str] # A comma separated list of Space fields to display., expansions: [str] # A comma separated list of fields to expand., user.fields: [str] # A comma separated list of User fields to display., topic.fields: [str] # A comma separated list of Topic fields to display.}\n@returns(200) {data: map{created_at: str(date-time), creator_id: str, ended_at: str(date-time), host_ids: [str], id: str, invited_user_ids: [str], is_ticketed: bool, lang: str, participant_count: int, scheduled_start: str(date-time), speaker_ids: [str], started_at: str(date-time), state: str, subscriber_count: int, title: str, topic_ids: [str], updated_at: str(date-time)}, errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}} # The request has succeeded.\n\n@endpoint GET /2/spaces/{id}/buyers\n@desc Get Space ticket buyers\n@required {id: str}\n@optional {max_results: int(int32)=100, pagination_token: str # A base32hex-encoded pagination token., user.fields: [str] # A comma separated list of User fields to display., expansions: [str] # A comma separated list of fields to expand., post.fields: [str] # A comma separated list of Post fields to display.}\n@returns(200) {data: [map], errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}, meta: map{next_token: str, previous_token: str, result_count: int(int32)}} # The request has succeeded.\n\n@endpoint GET /2/spaces/{id}/tweets\n@desc Get Space Posts\n@required {id: str}\n@optional {max_results: int(int32)=100, pagination_token: str # A base32hex-encoded pagination token., post.fields: [str] # A comma separated list of Post fields to display., expansions: [str] # A comma separated list of fields to expand., user.fields: [str] # A comma separated list of User fields to display., media.fields: [str] # A comma separated list of Media fields to display., poll.fields: [str] # A comma separated list of Poll fields to display., place.fields: [str] # A comma separated list of Place fields to display.}\n@returns(200) {data: [map], errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}, meta: map{next_token: str, previous_token: str, result_count: int(int32)}} # The request has succeeded.\n\n@endpoint GET /2/trends/by/woeid/{woeid}\n@desc Get Trends by Woeid\n@required {woeid: int(int32)}\n@optional {max_trends: int(int32)=20, trend.fields: [str] # A comma separated list of Trend fields to display.}\n@returns(200) {data: [map], errors: [any]} # The request has succeeded.\n\n@endpoint GET /2/tweets\n@desc Get Posts by IDs\n@required {ids: [str]}\n@optional {post.fields: [str] # A comma separated list of Post fields to display., expansions: [str] # A comma separated list of fields to expand., user.fields: [str] # A comma separated list of User fields to display., media.fields: [str] # A comma separated list of Media fields to display., poll.fields: [str] # A comma separated list of Poll fields to display., place.fields: [str] # A comma separated list of Place fields to display.}\n@returns(200) {data: [map], errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}, meta: map{result_count: int(int32)}} # The request has succeeded.\n\n@endpoint POST /2/tweets\n@desc Create Posts\n@optional {card_uri: str # Card URI parameter., community_id: str # Community to post the tweet to., direct_message_deep_link: str # Direct message deep link., edit_options: map{previous_post_id!: str}, for_super_followers_only: bool # Restrict tweet to super followers., geo: map{place_id!: str}, made_with_ai: bool # Disclose that the tweet contains AI-generated media., media: map{call_to_actions: map, description: str, embeddable: bool, media_ids!: [str], preview_media_id: str, tagged_user_ids: [str], title: str}, nullcast: bool # If true, the tweet is not shown in the public timeline., paid_partnership: bool # Disclose that the tweet is a paid partnership., poll: map{duration_minutes!: int, options!: [str], reply_settings: str}, quote_tweet_id: str # Tweet ID to quote., reply: map{auto_populate_reply_metadata: bool, exclude_reply_user_ids: [str], in_reply_to_tweet_id!: str}, reply_settings: str(following/mentionedUsers/subscribers/verified) # Who can reply to this tweet., share_with_followers: bool # Share an exclusive (super-follower) tweet with all followers., text: str= # Text of the tweet. Required unless media is provided.  Defaulted to an empty string so it is always sent: the backend's `tweet_text` variable is non-null and rejects an absent value.}\n@returns(201) {data: map{edit_history_post_ids: [str], id: str, text: str}, errors: [any]} # The request has succeeded.\n\n@endpoint GET /2/tweets/analytics\n@desc Get Posts Analytics\n@required {ids: [str], start_time: str(date-time), end_time: str(date-time)}\n@optional {granularity: str(hourly/weekly/daily/total)=total, analytics.fields: [str] # A comma separated list of Analytics fields to display.}\n@returns(200) {data: [map], errors: [any]} # The request has succeeded.\n\n@endpoint GET /2/tweets/compliance/stream\n@desc Stream Posts compliance data\n@required {partition: int(int32) # The partition number.}\n@optional {backfill_minutes: int(int32) # The number of minutes of backfill requested., start_time: str(date-time) # YYYY-MM-DDTHH:mm:ssZ. The earliest UTC timestamp from which the Post Compliance events will be provided., end_time: str(date-time) # YYYY-MM-DDTHH:mm:ssZ. The latest UTC timestamp from which the Post Compliance events will be provided.}\n@returns(200) The request has succeeded.\n\n@endpoint GET /2/tweets/counts/all\n@desc Get Posts Counts All\n@required {query: str}\n@optional {start_time: str(date-time), end_time: str(date-time), since_id: str, until_id: str, next_token: str # A base32hex-encoded pagination token., pagination_token: str # A base32hex-encoded pagination token., granularity: str(minute/hour/day)=hour, search_count.fields: str}\n@returns(200) {data: [map], errors: [any], meta: map{next_token: str, total_post_count: int(int64)}} # The request has succeeded.\n\n@endpoint GET /2/tweets/counts/recent\n@desc Get Posts Counts Recent\n@required {query: str}\n@optional {start_time: str(date-time) # Must be within the last 7 days., end_time: str(date-time), since_id: str, until_id: str, next_token: str # A base32hex-encoded pagination token., pagination_token: str # A base32hex-encoded pagination token., granularity: str(minute/hour/day)=hour, search_count.fields: str}\n@returns(200) {data: [map], errors: [any], meta: map{next_token: str, total_post_count: int(int64)}} # The request has succeeded.\n\n@endpoint GET /2/tweets/firehose/stream\n@desc Stream all Posts\n@required {partition: int(int32) # The partition number.}\n@optional {backfill_minutes: int(int32) # The number of minutes of backfill requested., tweet.fields: [str] # A comma separated list of Tweet fields to display., expansions: [str] # A comma separated list of fields to expand., media.fields: [str] # A comma separated list of Media fields to display., poll.fields: [str] # A comma separated list of Poll fields to display., user.fields: [str] # A comma separated list of User fields to display., place.fields: [str] # A comma separated list of Place fields to display., start_time: str(date-time) # YYYY-MM-DDTHH:mm:ssZ. The earliest UTC timestamp to which the Posts will be provided., end_time: str(date-time) # YYYY-MM-DDTHH:mm:ssZ. The latest UTC timestamp to which the Posts will be provided.}\n@returns(200) {data: map{article: map, article_title: map, attachments: map{media_keys: [str]?, media_source_tweet_id: [str]?, poll_ids: [str]?}, author_id: str, card_uri: str, community_id: str, context_annotations: [map], conversation_id: str, created_at: str(date-time), display_text_range: [int(int64)], edit_controls: map{editable_until: str?, edits_remaining: int(int64)?, is_edit_eligible: bool?}, edit_history_post_ids: [str], entities: map{cashtags: [map]?, hashtags: [map]?, mentions: [map]?, urls: [map]?}, geo: map{coordinates: map?{coordinates: [num(double)], type: str}, place_id: str?}, id: str, in_reply_to_user_id: str, lang: str, matched_media_notes: [map], media_metadata: [map], non_public_metrics: map, note_post: map{entities: map?{cashtags: [map]?, hashtags: [map]?, mentions: [map]?, urls: [map]?}, text: str}, note_request_suggestions: [map], organic_metrics: map, paid_partnership: bool, possibly_sensitive: bool, promoted_metrics: map, public_metrics: map{bookmark_count: int(int64), impression_count: int(int64), like_count: int(int64), quote_count: int(int64), reply_count: int(int64), repost_count: int(int64)}, referenced_posts: [map], reply_settings: str, scopes: map{followers: bool}, source: str, suggested_source_links: [str], suggested_source_links_with_counts: [map], text: str, username: str, withheld: map{copyright: bool, country_codes: [str], scope: str?}}, errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}} # The request has succeeded.\n\n@endpoint GET /2/tweets/firehose/stream/lang/en\n@desc Stream English Posts\n@required {partition: int(int32) # The partition number.}\n@optional {backfill_minutes: int(int32) # The number of minutes of backfill requested., tweet.fields: [str] # A comma separated list of Tweet fields to display., expansions: [str] # A comma separated list of fields to expand., media.fields: [str] # A comma separated list of Media fields to display., poll.fields: [str] # A comma separated list of Poll fields to display., user.fields: [str] # A comma separated list of User fields to display., place.fields: [str] # A comma separated list of Place fields to display., start_time: str(date-time) # YYYY-MM-DDTHH:mm:ssZ. The earliest UTC timestamp to which the Posts will be provided., end_time: str(date-time) # YYYY-MM-DDTHH:mm:ssZ. The latest UTC timestamp to which the Posts will be provided.}\n@returns(200) {data: map{article: map, article_title: map, attachments: map{media_keys: [str]?, media_source_tweet_id: [str]?, poll_ids: [str]?}, author_id: str, card_uri: str, community_id: str, context_annotations: [map], conversation_id: str, created_at: str(date-time), display_text_range: [int(int64)], edit_controls: map{editable_until: str?, edits_remaining: int(int64)?, is_edit_eligible: bool?}, edit_history_post_ids: [str], entities: map{cashtags: [map]?, hashtags: [map]?, mentions: [map]?, urls: [map]?}, geo: map{coordinates: map?{coordinates: [num(double)], type: str}, place_id: str?}, id: str, in_reply_to_user_id: str, lang: str, matched_media_notes: [map], media_metadata: [map], non_public_metrics: map, note_post: map{entities: map?{cashtags: [map]?, hashtags: [map]?, mentions: [map]?, urls: [map]?}, text: str}, note_request_suggestions: [map], organic_metrics: map, paid_partnership: bool, possibly_sensitive: bool, promoted_metrics: map, public_metrics: map{bookmark_count: int(int64), impression_count: int(int64), like_count: int(int64), quote_count: int(int64), reply_count: int(int64), repost_count: int(int64)}, referenced_posts: [map], reply_settings: str, scopes: map{followers: bool}, source: str, suggested_source_links: [str], suggested_source_links_with_counts: [map], text: str, username: str, withheld: map{copyright: bool, country_codes: [str], scope: str?}}, errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}} # The request has succeeded.\n\n@endpoint GET /2/tweets/firehose/stream/lang/ja\n@desc Stream Japanese Posts\n@required {partition: int(int32) # The partition number.}\n@optional {backfill_minutes: int(int32) # The number of minutes of backfill requested., tweet.fields: [str] # A comma separated list of Tweet fields to display., expansions: [str] # A comma separated list of fields to expand., media.fields: [str] # A comma separated list of Media fields to display., poll.fields: [str] # A comma separated list of Poll fields to display., user.fields: [str] # A comma separated list of User fields to display., place.fields: [str] # A comma separated list of Place fields to display., start_time: str(date-time) # YYYY-MM-DDTHH:mm:ssZ. The earliest UTC timestamp to which the Posts will be provided., end_time: str(date-time) # YYYY-MM-DDTHH:mm:ssZ. The latest UTC timestamp to which the Posts will be provided.}\n@returns(200) {data: map{article: map, article_title: map, attachments: map{media_keys: [str]?, media_source_tweet_id: [str]?, poll_ids: [str]?}, author_id: str, card_uri: str, community_id: str, context_annotations: [map], conversation_id: str, created_at: str(date-time), display_text_range: [int(int64)], edit_controls: map{editable_until: str?, edits_remaining: int(int64)?, is_edit_eligible: bool?}, edit_history_post_ids: [str], entities: map{cashtags: [map]?, hashtags: [map]?, mentions: [map]?, urls: [map]?}, geo: map{coordinates: map?{coordinates: [num(double)], type: str}, place_id: str?}, id: str, in_reply_to_user_id: str, lang: str, matched_media_notes: [map], media_metadata: [map], non_public_metrics: map, note_post: map{entities: map?{cashtags: [map]?, hashtags: [map]?, mentions: [map]?, urls: [map]?}, text: str}, note_request_suggestions: [map], organic_metrics: map, paid_partnership: bool, possibly_sensitive: bool, promoted_metrics: map, public_metrics: map{bookmark_count: int(int64), impression_count: int(int64), like_count: int(int64), quote_count: int(int64), reply_count: int(int64), repost_count: int(int64)}, referenced_posts: [map], reply_settings: str, scopes: map{followers: bool}, source: str, suggested_source_links: [str], suggested_source_links_with_counts: [map], text: str, username: str, withheld: map{copyright: bool, country_codes: [str], scope: str?}}, errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}} # The request has succeeded.\n\n@endpoint GET /2/tweets/firehose/stream/lang/ko\n@desc Stream Korean Posts\n@required {partition: int(int32) # The partition number.}\n@optional {backfill_minutes: int(int32) # The number of minutes of backfill requested., tweet.fields: [str] # A comma separated list of Tweet fields to display., expansions: [str] # A comma separated list of fields to expand., media.fields: [str] # A comma separated list of Media fields to display., poll.fields: [str] # A comma separated list of Poll fields to display., user.fields: [str] # A comma separated list of User fields to display., place.fields: [str] # A comma separated list of Place fields to display., start_time: str(date-time) # YYYY-MM-DDTHH:mm:ssZ. The earliest UTC timestamp to which the Posts will be provided., end_time: str(date-time) # YYYY-MM-DDTHH:mm:ssZ. The latest UTC timestamp to which the Posts will be provided.}\n@returns(200) {data: map{article: map, article_title: map, attachments: map{media_keys: [str]?, media_source_tweet_id: [str]?, poll_ids: [str]?}, author_id: str, card_uri: str, community_id: str, context_annotations: [map], conversation_id: str, created_at: str(date-time), display_text_range: [int(int64)], edit_controls: map{editable_until: str?, edits_remaining: int(int64)?, is_edit_eligible: bool?}, edit_history_post_ids: [str], entities: map{cashtags: [map]?, hashtags: [map]?, mentions: [map]?, urls: [map]?}, geo: map{coordinates: map?{coordinates: [num(double)], type: str}, place_id: str?}, id: str, in_reply_to_user_id: str, lang: str, matched_media_notes: [map], media_metadata: [map], non_public_metrics: map, note_post: map{entities: map?{cashtags: [map]?, hashtags: [map]?, mentions: [map]?, urls: [map]?}, text: str}, note_request_suggestions: [map], organic_metrics: map, paid_partnership: bool, possibly_sensitive: bool, promoted_metrics: map, public_metrics: map{bookmark_count: int(int64), impression_count: int(int64), like_count: int(int64), quote_count: int(int64), reply_count: int(int64), repost_count: int(int64)}, referenced_posts: [map], reply_settings: str, scopes: map{followers: bool}, source: str, suggested_source_links: [str], suggested_source_links_with_counts: [map], text: str, username: str, withheld: map{copyright: bool, country_codes: [str], scope: str?}}, errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}} # The request has succeeded.\n\n@endpoint GET /2/tweets/firehose/stream/lang/pt\n@desc Stream Portuguese Posts\n@required {partition: int(int32) # The partition number.}\n@optional {backfill_minutes: int(int32) # The number of minutes of backfill requested., tweet.fields: [str] # A comma separated list of Tweet fields to display., expansions: [str] # A comma separated list of fields to expand., media.fields: [str] # A comma separated list of Media fields to display., poll.fields: [str] # A comma separated list of Poll fields to display., user.fields: [str] # A comma separated list of User fields to display., place.fields: [str] # A comma separated list of Place fields to display., start_time: str(date-time) # YYYY-MM-DDTHH:mm:ssZ. The earliest UTC timestamp to which the Posts will be provided., end_time: str(date-time) # YYYY-MM-DDTHH:mm:ssZ. The latest UTC timestamp to which the Posts will be provided.}\n@returns(200) {data: map{article: map, article_title: map, attachments: map{media_keys: [str]?, media_source_tweet_id: [str]?, poll_ids: [str]?}, author_id: str, card_uri: str, community_id: str, context_annotations: [map], conversation_id: str, created_at: str(date-time), display_text_range: [int(int64)], edit_controls: map{editable_until: str?, edits_remaining: int(int64)?, is_edit_eligible: bool?}, edit_history_post_ids: [str], entities: map{cashtags: [map]?, hashtags: [map]?, mentions: [map]?, urls: [map]?}, geo: map{coordinates: map?{coordinates: [num(double)], type: str}, place_id: str?}, id: str, in_reply_to_user_id: str, lang: str, matched_media_notes: [map], media_metadata: [map], non_public_metrics: map, note_post: map{entities: map?{cashtags: [map]?, hashtags: [map]?, mentions: [map]?, urls: [map]?}, text: str}, note_request_suggestions: [map], organic_metrics: map, paid_partnership: bool, possibly_sensitive: bool, promoted_metrics: map, public_metrics: map{bookmark_count: int(int64), impression_count: int(int64), like_count: int(int64), quote_count: int(int64), reply_count: int(int64), repost_count: int(int64)}, referenced_posts: [map], reply_settings: str, scopes: map{followers: bool}, source: str, suggested_source_links: [str], suggested_source_links_with_counts: [map], text: str, username: str, withheld: map{copyright: bool, country_codes: [str], scope: str?}}, errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}} # The request has succeeded.\n\n@endpoint GET /2/tweets/label/stream\n@desc Stream Post labels\n@optional {backfill_minutes: int(int32) # The number of minutes of backfill requested., start_time: str(date-time) # YYYY-MM-DDTHH:mm:ssZ. The earliest UTC timestamp from which the Post labels will be provided., end_time: str(date-time) # YYYY-MM-DDTHH:mm:ssZ. The latest UTC timestamp from which the Post labels will be provided.}\n@returns(200) The request has succeeded.\n\n@endpoint GET /2/tweets/sample/stream\n@desc Stream sampled Posts\n@optional {backfill_minutes: int(int32) # The number of minutes of backfill requested., tweet.fields: [str] # A comma separated list of Tweet fields to display., expansions: [str] # A comma separated list of fields to expand., media.fields: [str] # A comma separated list of Media fields to display., poll.fields: [str] # A comma separated list of Poll fields to display., user.fields: [str] # A comma separated list of User fields to display., place.fields: [str] # A comma separated list of Place fields to display.}\n@returns(200) {data: map{article: map, article_title: map, attachments: map{media_keys: [str]?, media_source_tweet_id: [str]?, poll_ids: [str]?}, author_id: str, card_uri: str, community_id: str, context_annotations: [map], conversation_id: str, created_at: str(date-time), display_text_range: [int(int64)], edit_controls: map{editable_until: str?, edits_remaining: int(int64)?, is_edit_eligible: bool?}, edit_history_post_ids: [str], entities: map{cashtags: [map]?, hashtags: [map]?, mentions: [map]?, urls: [map]?}, geo: map{coordinates: map?{coordinates: [num(double)], type: str}, place_id: str?}, id: str, in_reply_to_user_id: str, lang: str, matched_media_notes: [map], media_metadata: [map], non_public_metrics: map, note_post: map{entities: map?{cashtags: [map]?, hashtags: [map]?, mentions: [map]?, urls: [map]?}, text: str}, note_request_suggestions: [map], organic_metrics: map, paid_partnership: bool, possibly_sensitive: bool, promoted_metrics: map, public_metrics: map{bookmark_count: int(int64), impression_count: int(int64), like_count: int(int64), quote_count: int(int64), reply_count: int(int64), repost_count: int(int64)}, referenced_posts: [map], reply_settings: str, scopes: map{followers: bool}, source: str, suggested_source_links: [str], suggested_source_links_with_counts: [map], text: str, username: str, withheld: map{copyright: bool, country_codes: [str], scope: str?}}, errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}} # The request has succeeded.\n\n@endpoint GET /2/tweets/sample10/stream\n@desc Stream 10% sampled Posts\n@required {partition: int(int32) # The partition number.}\n@optional {backfill_minutes: int(int32) # The number of minutes of backfill requested., tweet.fields: [str] # A comma separated list of Tweet fields to display., expansions: [str] # A comma separated list of fields to expand., media.fields: [str] # A comma separated list of Media fields to display., poll.fields: [str] # A comma separated list of Poll fields to display., user.fields: [str] # A comma separated list of User fields to display., place.fields: [str] # A comma separated list of Place fields to display., start_time: str(date-time) # YYYY-MM-DDTHH:mm:ssZ. The earliest UTC timestamp to which the Posts will be provided., end_time: str(date-time) # YYYY-MM-DDTHH:mm:ssZ. The latest UTC timestamp to which the Posts will be provided.}\n@returns(200) {data: map{article: map, article_title: map, attachments: map{media_keys: [str]?, media_source_tweet_id: [str]?, poll_ids: [str]?}, author_id: str, card_uri: str, community_id: str, context_annotations: [map], conversation_id: str, created_at: str(date-time), display_text_range: [int(int64)], edit_controls: map{editable_until: str?, edits_remaining: int(int64)?, is_edit_eligible: bool?}, edit_history_post_ids: [str], entities: map{cashtags: [map]?, hashtags: [map]?, mentions: [map]?, urls: [map]?}, geo: map{coordinates: map?{coordinates: [num(double)], type: str}, place_id: str?}, id: str, in_reply_to_user_id: str, lang: str, matched_media_notes: [map], media_metadata: [map], non_public_metrics: map, note_post: map{entities: map?{cashtags: [map]?, hashtags: [map]?, mentions: [map]?, urls: [map]?}, text: str}, note_request_suggestions: [map], organic_metrics: map, paid_partnership: bool, possibly_sensitive: bool, promoted_metrics: map, public_metrics: map{bookmark_count: int(int64), impression_count: int(int64), like_count: int(int64), quote_count: int(int64), reply_count: int(int64), repost_count: int(int64)}, referenced_posts: [map], reply_settings: str, scopes: map{followers: bool}, source: str, suggested_source_links: [str], suggested_source_links_with_counts: [map], text: str, username: str, withheld: map{copyright: bool, country_codes: [str], scope: str?}}, errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}} # The request has succeeded.\n\n@endpoint GET /2/tweets/search/all\n@desc Search Posts All\n@required {query: str}\n@optional {start_time: str(date-time), end_time: str(date-time), since_id: str, until_id: str, max_results: int(int32)=10, next_token: str # A base32hex-encoded pagination token., pagination_token: str # A base32hex-encoded pagination token., sort_order: str(recency/relevancy), post.fields: [str] # A comma separated list of Post fields to display., expansions: [str] # A comma separated list of fields to expand., user.fields: [str] # A comma separated list of User fields to display., media.fields: [str] # A comma separated list of Media fields to display., poll.fields: [str] # A comma separated list of Poll fields to display., place.fields: [str] # A comma separated list of Place fields to display.}\n@returns(200) {data: [map], errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}, meta: map{newest_id: str, next_token: str, oldest_id: str, previous_token: str, result_count: int(int32)}} # The request has succeeded.\n\n@endpoint GET /2/tweets/search/recent\n@desc Search Posts Recent\n@required {query: str}\n@optional {max_results: int(int32)=10, next_token: str # A base32hex-encoded pagination token., pagination_token: str # A base32hex-encoded pagination token., start_time: str(date-time) # Must be within the last 7 days., end_time: str(date-time), since_id: str, until_id: str, sort_order: str(recency/relevancy), post.fields: [str] # A comma separated list of Post fields to display., expansions: [str] # A comma separated list of fields to expand., user.fields: [str] # A comma separated list of User fields to display., media.fields: [str] # A comma separated list of Media fields to display., poll.fields: [str] # A comma separated list of Poll fields to display., place.fields: [str] # A comma separated list of Place fields to display.}\n@returns(200) {data: [map], errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}, meta: map{newest_id: str, next_token: str, oldest_id: str, previous_token: str, result_count: int(int32)}} # The request has succeeded.\n\n@endpoint GET /2/tweets/search/stream\n@desc Stream filtered Posts\n@optional {backfill_minutes: int(int32) # The number of minutes of backfill requested., start_time: str(date-time) # YYYY-MM-DDTHH:mm:ssZ. The earliest UTC timestamp to which the Posts will be provided., end_time: str(date-time) # YYYY-MM-DDTHH:mm:ssZ. The latest UTC timestamp to which the Posts will be provided., tweet.fields: [str] # A comma separated list of Tweet fields to display., expansions: [str] # A comma separated list of fields to expand., media.fields: [str] # A comma separated list of Media fields to display., poll.fields: [str] # A comma separated list of Poll fields to display., user.fields: [str] # A comma separated list of User fields to display., place.fields: [str] # A comma separated list of Place fields to display.}\n@returns(200) {data: map{article: map, article_title: map, attachments: map{media_keys: [str]?, media_source_tweet_id: [str]?, poll_ids: [str]?}, author_id: str, card_uri: str, community_id: str, context_annotations: [map], conversation_id: str, created_at: str(date-time), display_text_range: [int(int64)], edit_controls: map{editable_until: str?, edits_remaining: int(int64)?, is_edit_eligible: bool?}, edit_history_post_ids: [str], entities: map{cashtags: [map]?, hashtags: [map]?, mentions: [map]?, urls: [map]?}, geo: map{coordinates: map?{coordinates: [num(double)], type: str}, place_id: str?}, id: str, in_reply_to_user_id: str, lang: str, matched_media_notes: [map], media_metadata: [map], non_public_metrics: map, note_post: map{entities: map?{cashtags: [map]?, hashtags: [map]?, mentions: [map]?, urls: [map]?}, text: str}, note_request_suggestions: [map], organic_metrics: map, paid_partnership: bool, possibly_sensitive: bool, promoted_metrics: map, public_metrics: map{bookmark_count: int(int64), impression_count: int(int64), like_count: int(int64), quote_count: int(int64), reply_count: int(int64), repost_count: int(int64)}, referenced_posts: [map], reply_settings: str, scopes: map{followers: bool}, source: str, suggested_source_links: [str], suggested_source_links_with_counts: [map], text: str, username: str, withheld: map{copyright: bool, country_codes: [str], scope: str?}}, errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}, matching_rules: [map]} # The request has succeeded.\n\n@endpoint GET /2/tweets/search/stream/rules\n@desc Get filtered-stream rules\n@optional {ids: [str], max_results: int(int32)=1000, pagination_token: str # A base32hex-encoded pagination token.}\n@returns(200) {data: [map], errors: [any], meta: map{next_token: str, result_count: int(int32)}} # The request has succeeded.\n\n@endpoint POST /2/tweets/search/stream/rules\n@desc Update stream rules\n@optional {dry_run: bool, delete_all: bool, add: [map{tag: str, value!: str}] # Rules to add., delete: map{ids: [str], values: [str]}}\n@returns(200) {data: [map], errors: [any], meta: map{sent: str, summary: map}} # The request has succeeded.\n\n@endpoint GET /2/tweets/search/stream/rules/counts\n@desc Get Rule Counts\n@optional {rules_count.fields: str}\n@returns(200) {data: map{all_project_client_apps: [map], cap_per_client_app: str, cap_per_project: str, client_app_rules_count: map{client_app_id: str, rule_count: int}, project_rules_count: str}, errors: [any]} # The request has succeeded.\n\n@endpoint GET /2/tweets/search/webhooks\n@desc Get stream links\n@returns(200) {data: [map], errors: [any]} # The request has succeeded.\n\n@endpoint DELETE /2/tweets/search/webhooks/{webhook_id}\n@desc Delete stream link\n@required {webhook_id: str}\n@returns(200) {data: map{deleted: bool}, errors: [any]} # The request has succeeded.\n\n@endpoint POST /2/tweets/search/webhooks/{webhook_id}\n@desc Create stream link\n@required {webhook_id: str}\n@returns(200) {data: map{provisioned: bool}, errors: [any]} # The request has succeeded.\n\n@endpoint DELETE /2/tweets/{id}\n@desc Delete Posts\n@required {id: str}\n@returns(200) {data: map{deleted: bool}, errors: [any]} # The request has succeeded.\n\n@endpoint GET /2/tweets/{id}\n@desc Get Posts by ID\n@required {id: str}\n@optional {post.fields: [str] # A comma separated list of Post fields to display., expansions: [str] # A comma separated list of fields to expand., user.fields: [str] # A comma separated list of User fields to display., media.fields: [str] # A comma separated list of Media fields to display., poll.fields: [str] # A comma separated list of Poll fields to display., place.fields: [str] # A comma separated list of Place fields to display.}\n@returns(200) {data: map{article: map, article_title: map, attachments: map{media_keys: [str]?, media_source_tweet_id: [str]?, poll_ids: [str]?}, author_id: str, card_uri: str, community_id: str, context_annotations: [map], conversation_id: str, created_at: str(date-time), display_text_range: [int(int64)], edit_controls: map{editable_until: str?, edits_remaining: int(int64)?, is_edit_eligible: bool?}, edit_history_post_ids: [str], entities: map{cashtags: [map]?, hashtags: [map]?, mentions: [map]?, urls: [map]?}, geo: map{coordinates: map?{coordinates: [num(double)], type: str}, place_id: str?}, id: str, in_reply_to_user_id: str, lang: str, matched_media_notes: [map], media_metadata: [map], non_public_metrics: map, note_post: map{entities: map?{cashtags: [map]?, hashtags: [map]?, mentions: [map]?, urls: [map]?}, text: str}, note_request_suggestions: [map], organic_metrics: map, paid_partnership: bool, possibly_sensitive: bool, promoted_metrics: map, public_metrics: map{bookmark_count: int(int64), impression_count: int(int64), like_count: int(int64), quote_count: int(int64), reply_count: int(int64), repost_count: int(int64)}, referenced_posts: [map], reply_settings: str, scopes: map{followers: bool}, source: str, suggested_source_links: [str], suggested_source_links_with_counts: [map], text: str, username: str, withheld: map{copyright: bool, country_codes: [str], scope: str?}}, errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}} # The request has succeeded.\n\n@endpoint GET /2/tweets/{id}/liking_users\n@desc Get Posts Liking Users\n@required {id: str}\n@optional {max_results: int(int32)=100, pagination_token: str # A base32hex-encoded pagination token., user.fields: [str] # A comma separated list of User fields to display., expansions: [str] # A comma separated list of fields to expand., post.fields: [str] # A comma separated list of Post fields to display.}\n@returns(200) {data: [map], errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}, meta: map{next_token: str, previous_token: str, result_count: int(int32)}} # The request has succeeded.\n\n@endpoint GET /2/tweets/{id}/quote_tweets\n@desc Get Posts Quoted Posts\n@required {id: str}\n@optional {max_results: int(int32)=10, pagination_token: str # A base32hex-encoded pagination token., exclude: [str], post.fields: [str] # A comma separated list of Post fields to display., expansions: [str] # A comma separated list of fields to expand., user.fields: [str] # A comma separated list of User fields to display., media.fields: [str] # A comma separated list of Media fields to display., poll.fields: [str] # A comma separated list of Poll fields to display., place.fields: [str] # A comma separated list of Place fields to display.}\n@returns(200) {data: [map], errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}, meta: map{next_token: str, result_count: int(int32)}} # The request has succeeded.\n\n@endpoint GET /2/tweets/{id}/retweeted_by\n@desc Get Posts Reposted by\n@required {id: str}\n@optional {max_results: int(int32)=100, pagination_token: str # A base32hex-encoded pagination token., user.fields: [str] # A comma separated list of User fields to display., expansions: [str] # A comma separated list of fields to expand., post.fields: [str] # A comma separated list of Post fields to display.}\n@returns(200) {data: [map], errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}, meta: map{next_token: str, previous_token: str, result_count: int(int32)}} # The request has succeeded.\n\n@endpoint GET /2/tweets/{id}/retweets\n@desc Get Posts Reposts\n@required {id: str}\n@optional {max_results: int(int32)=100, pagination_token: str # A base32hex-encoded pagination token., post.fields: [str] # A comma separated list of Post fields to display., expansions: [str] # A comma separated list of fields to expand., user.fields: [str] # A comma separated list of User fields to display., media.fields: [str] # A comma separated list of Media fields to display., poll.fields: [str] # A comma separated list of Poll fields to display., place.fields: [str] # A comma separated list of Place fields to display.}\n@returns(200) {data: [map], errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}, meta: map{next_token: str, previous_token: str, result_count: int(int32)}} # The request has succeeded.\n\n@endpoint PUT /2/tweets/{tweet_id}/hidden\n@desc Hide reply\n@required {tweet_id: str, hidden: bool # Whether the reply should be hidden.}\n@returns(200) {data: map{hidden: bool}, errors: [any]} # The request has succeeded.\n\n@endpoint GET /2/usage/credits\n@desc Get usage credits\n@returns(200) {data: map{free_balance: num, free_grants: [map], prepaid_balance: num, total_balance: num}, errors: [any]} # The request has succeeded.\n\n@endpoint GET /2/usage/tweets\n@desc Get Usage\n@optional {days: int(int32)=7, usage.fields: [str] # A comma separated list of Usage fields to display.}\n@returns(200) {data: map{cap_reset_day: int, daily_client_app_usage: [map], daily_project_usage: map{project_id: str?, usage: [map]?}, project_cap: str, project_id: str, project_usage: str}, errors: [any]} # The request has succeeded.\n\n@endpoint GET /2/users\n@desc Get Users by IDs\n@required {ids: [str]}\n@optional {user.fields: [str] # A comma separated list of User fields to display., expansions: [str] # A comma separated list of fields to expand., post.fields: [str] # A comma separated list of Post fields to display.}\n@returns(200) {data: [map], errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}} # The request has succeeded.\n\n@endpoint GET /2/users/by\n@desc Get Users by Usernames\n@required {usernames: [str]}\n@optional {user.fields: [str] # A comma separated list of User fields to display., expansions: [str] # A comma separated list of fields to expand., post.fields: [str] # A comma separated list of Post fields to display.}\n@returns(200) {data: [map], errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}} # The request has succeeded.\n\n@endpoint GET /2/users/by/username/{username}\n@desc Get Users by Username\n@required {username: str}\n@optional {user.fields: [str] # A comma separated list of User fields to display., expansions: [str] # A comma separated list of fields to expand., post.fields: [str] # A comma separated list of Post fields to display.}\n@returns(200) {data: map{affiliation: map{badge_url: str?, description: str?, url: str?, user_id: [str]?}, confirmed_email: str, connection_status: [str], created_at: str(date-time), description: str, entities: map{description: map?{cashtags: [map]?, hashtags: [map]?, mentions: [map]?, urls: [map]?}, url: map?{urls: [map]?}}, id: str, is_identity_verified: bool, location: str, most_recent_post_id: str, name: str, parody: bool, pinned_post_id: str, profile_banner_url: str, profile_image_url: str, protected: bool, public_metrics: map{followers_count: int(int64), following_count: int(int64), like_count: int(int64)?, listed_count: int(int64), media_count: int(int64)?, post_count: int(int64)}, receives_your_dm: bool, subscriber_count: int, subscribes_to_you: bool, subscription: map{subscribes_to_you: bool}, subscription_type: str, url: str, username: str, verified: bool, verified_followers_count: int, verified_type: str, withheld: map{country_codes: [str]?, scope: str?}}, errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}} # The request has succeeded.\n\n@endpoint GET /2/users/compliance/stream\n@desc Stream Users compliance data\n@required {partition: int(int32) # The partition number.}\n@optional {backfill_minutes: int(int32) # The number of minutes of backfill requested., start_time: str(date-time) # YYYY-MM-DDTHH:mm:ssZ. The earliest UTC timestamp from which the User Compliance events will be provided., end_time: str(date-time) # YYYY-MM-DDTHH:mm:ssZ. The latest UTC timestamp from which the User Compliance events will be provided.}\n@returns(200) The request has succeeded.\n\n@endpoint GET /2/users/me\n@desc Get Users Me\n@optional {user.fields: [str] # A comma separated list of User fields to display., expansions: [str] # A comma separated list of fields to expand., post.fields: [str] # A comma separated list of Post fields to display.}\n@returns(200) {data: map{affiliation: map{badge_url: str?, description: str?, url: str?, user_id: [str]?}, confirmed_email: str, connection_status: [str], created_at: str(date-time), description: str, entities: map{description: map?{cashtags: [map]?, hashtags: [map]?, mentions: [map]?, urls: [map]?}, url: map?{urls: [map]?}}, id: str, is_identity_verified: bool, location: str, most_recent_post_id: str, name: str, parody: bool, pinned_post_id: str, profile_banner_url: str, profile_image_url: str, protected: bool, public_metrics: map{followers_count: int(int64), following_count: int(int64), like_count: int(int64)?, listed_count: int(int64), media_count: int(int64)?, post_count: int(int64)}, receives_your_dm: bool, subscriber_count: int, subscribes_to_you: bool, subscription: map{subscribes_to_you: bool}, subscription_type: str, url: str, username: str, verified: bool, verified_followers_count: int, verified_type: str, withheld: map{country_codes: [str]?, scope: str?}}, errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}} # The request has succeeded.\n\n@endpoint GET /2/users/personalized_trends\n@desc Get Trends Personalized Trends\n@optional {personalized_trend.fields: [str] # A comma separated list of PersonalizedTrend fields to display.}\n@returns(200) {data: [map], errors: [any]} # The request has succeeded.\n\n@endpoint GET /2/users/public_keys\n@desc Get public keys\n@required {ids: [str]}\n@optional {public_key.fields: [str] # A comma separated list of PublicKey fields to display.}\n@returns(200) {data: [map], errors: [any]} # The request has succeeded.\n\n@endpoint GET /2/users/reposts_of_me\n@desc Get Users Reposts of Me\n@optional {max_results: int(int32)=100, pagination_token: str # A base32hex-encoded pagination token., post.fields: [str] # A comma separated list of Post fields to display., expansions: [str] # A comma separated list of fields to expand., user.fields: [str] # A comma separated list of User fields to display., media.fields: [str] # A comma separated list of Media fields to display., poll.fields: [str] # A comma separated list of Poll fields to display., place.fields: [str] # A comma separated list of Place fields to display.}\n@returns(200) {data: [map], errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}, meta: map{next_token: str, previous_token: str, result_count: int(int32)}} # The request has succeeded.\n\n@endpoint GET /2/users/search\n@desc Search Users\n@required {query: str}\n@optional {max_results: int(int32)=100, next_token: str, user.fields: [str] # A comma separated list of User fields to display., expansions: [str] # A comma separated list of fields to expand., post.fields: [str] # A comma separated list of Post fields to display.}\n@returns(200) {data: [map], errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}, meta: map{next_token: str, previous_token: str}} # The request has succeeded.\n\n@endpoint GET /2/users/{id}\n@desc Get Users by ID\n@required {id: str}\n@optional {user.fields: [str] # A comma separated list of User fields to display., expansions: [str] # A comma separated list of fields to expand., post.fields: [str] # A comma separated list of Post fields to display.}\n@returns(200) {data: map{affiliation: map{badge_url: str?, description: str?, url: str?, user_id: [str]?}, confirmed_email: str, connection_status: [str], created_at: str(date-time), description: str, entities: map{description: map?{cashtags: [map]?, hashtags: [map]?, mentions: [map]?, urls: [map]?}, url: map?{urls: [map]?}}, id: str, is_identity_verified: bool, location: str, most_recent_post_id: str, name: str, parody: bool, pinned_post_id: str, profile_banner_url: str, profile_image_url: str, protected: bool, public_metrics: map{followers_count: int(int64), following_count: int(int64), like_count: int(int64)?, listed_count: int(int64), media_count: int(int64)?, post_count: int(int64)}, receives_your_dm: bool, subscriber_count: int, subscribes_to_you: bool, subscription: map{subscribes_to_you: bool}, subscription_type: str, url: str, username: str, verified: bool, verified_followers_count: int, verified_type: str, withheld: map{country_codes: [str]?, scope: str?}}, errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}} # The request has succeeded.\n\n@endpoint GET /2/users/{id}/affiliates\n@desc Get Users Affiliates\n@required {id: str}\n@optional {max_results: int(int32), pagination_token: str # A 64-bit signed integer., user.fields: [str] # A comma separated list of User fields to display., expansions: [str] # A comma separated list of fields to expand., post.fields: [str] # A comma separated list of Post fields to display.}\n@returns(200) {data: [map], errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}, meta: map{next_token: str, previous_token: str, result_count: int(int32)}} # The request has succeeded.\n\n@endpoint GET /2/users/{id}/blocking\n@desc Get Users Blocking\n@required {id: str}\n@optional {max_results: int(int32), pagination_token: str, user.fields: [str] # A comma separated list of User fields to display., expansions: [str] # A comma separated list of fields to expand., post.fields: [str] # A comma separated list of Post fields to display.}\n@returns(200) {data: [map], errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}, meta: map{next_token: str, previous_token: str, result_count: int(int32)}} # The request has succeeded.\n\n@endpoint POST /2/users/{id}/blocking\n@desc Users ID Block\n@required {id: str, target_user_id: str}\n@returns(200) {data: map{blocking: bool}, errors: [any]} # The request has succeeded.\n\n@endpoint GET /2/users/{id}/bookmarks\n@desc Get Users Bookmarks\n@required {id: str}\n@optional {max_results: int(int32), pagination_token: str # A base32hex-encoded pagination token., post.fields: [str] # A comma separated list of Post fields to display., expansions: [str] # A comma separated list of fields to expand., user.fields: [str] # A comma separated list of User fields to display., media.fields: [str] # A comma separated list of Media fields to display., poll.fields: [str] # A comma separated list of Poll fields to display., place.fields: [str] # A comma separated list of Place fields to display.}\n@returns(200) {data: [map], errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}, meta: map{next_token: str, previous_token: str, result_count: int(int32)}} # The request has succeeded.\n\n@endpoint POST /2/users/{id}/bookmarks\n@desc Create Bookmark\n@required {id: str}\n@optional {folder_id: str # Optional ID of the Bookmark folder to add the Post(s) to. When omitted, Posts are added to the user's top-level Bookmarks only. A bulk request uses this one folder for every ID., tweet_id: str # The ID of the Post to add to the user's Bookmarks. Mutually exclusive with `tweet_ids`., tweet_ids: [str] # Post IDs to add to the user's Bookmarks. At most 25. Mutually exclusive with `tweet_id`.}\n@returns(200) The request has succeeded.\n\n@endpoint GET /2/users/{id}/bookmarks/folders\n@desc Get Users Bookmark Folders\n@required {id: str}\n@optional {max_results: int(int32), pagination_token: str # A base32hex-encoded pagination token.}\n@returns(200) {data: [map], errors: [any]} # The request has succeeded.\n\n@endpoint POST /2/users/{id}/bookmarks/folders\n@desc Create Bookmark Folder\n@required {id: str, name: str # Name of the Bookmark folder (1-25 characters).}\n@returns(201) {data: map{id: str, name: str}, errors: [any]} # The request has succeeded.\n\n@endpoint GET /2/users/{id}/bookmarks/folders/{folder_id}\n@desc Get Users Bookmarks by Folder ID\n@required {id: str, folder_id: str}\n@optional {max_results: int(int32), pagination_token: str # A base32hex-encoded pagination token.}\n@returns(200) {data: [map], errors: [any]} # The request has succeeded.\n\n@endpoint DELETE /2/users/{id}/bookmarks/{tweet_id}\n@desc Delete Bookmark\n@required {id: str, tweet_id: str}\n@returns(200) {data: map{bookmarked: bool}, errors: [any]} # The request has succeeded.\n\n@endpoint POST /2/users/{id}/dm/block\n@desc Block Users Dms\n@required {id: str}\n@returns(200) {data: map{blocked: bool}, errors: [any]} # The request has succeeded.\n\n@endpoint POST /2/users/{id}/dm/unblock\n@desc Unblock Users Dms\n@required {id: str}\n@returns(200) {data: map{blocked: bool}, errors: [any]} # The request has succeeded.\n\n@endpoint GET /2/users/{id}/followed_lists\n@desc Get Users Followed Lists\n@required {id: str}\n@optional {max_results: int(int32)=100, pagination_token: str # A 64-bit signed integer., list.fields: [str] # A comma separated list of List fields to display., expansions: [str] # A comma separated list of fields to expand., user.fields: [str] # A comma separated list of User fields to display.}\n@returns(200) {data: [map], errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}, meta: map{next_token: str, previous_token: str, result_count: int(int32)}} # The request has succeeded.\n\n@endpoint POST /2/users/{id}/followed_lists\n@desc Follow List\n@required {id: str, list_id: str}\n@returns(200) {data: map{following: bool}, errors: [any]} # The request has succeeded.\n\n@endpoint DELETE /2/users/{id}/followed_lists/{list_id}\n@desc Unfollow a List\n@required {id: str, list_id: str}\n@returns(200) {data: map{following: bool}, errors: [any]} # The request has succeeded.\n\n@endpoint GET /2/users/{id}/followers\n@desc Get Users Followers\n@required {id: str}\n@optional {max_results: int(int32), pagination_token: str # A base32hex-encoded pagination token., user.fields: [str] # A comma separated list of User fields to display., expansions: [str] # A comma separated list of fields to expand., post.fields: [str] # A comma separated list of Post fields to display.}\n@returns(200) {data: [map], errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}, meta: map{next_token: str, previous_token: str, result_count: int(int32)}} # The request has succeeded.\n\n@endpoint GET /2/users/{id}/following\n@desc Get Users Following\n@required {id: str}\n@optional {max_results: int(int32), pagination_token: str # A base32hex-encoded pagination token., user.fields: [str] # A comma separated list of User fields to display., expansions: [str] # A comma separated list of fields to expand., post.fields: [str] # A comma separated list of Post fields to display.}\n@returns(200) {data: [map], errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}, meta: map{next_token: str, previous_token: str, result_count: int(int32)}} # The request has succeeded.\n\n@endpoint POST /2/users/{id}/following\n@desc Follow User\n@required {id: str, target_user_id: str}\n@returns(200) {data: map{following: bool, pending_follow: bool}, errors: [any]} # The request has succeeded.\n\n@endpoint GET /2/users/{id}/liked_tweets\n@desc Get Users Liked Posts\n@required {id: str}\n@optional {max_results: int(int32), pagination_token: str # A base32hex-encoded pagination token., post.fields: [str] # A comma separated list of Post fields to display., expansions: [str] # A comma separated list of fields to expand., user.fields: [str] # A comma separated list of User fields to display., media.fields: [str] # A comma separated list of Media fields to display., poll.fields: [str] # A comma separated list of Poll fields to display., place.fields: [str] # A comma separated list of Place fields to display.}\n@returns(200) {data: [map], errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}, meta: map{next_token: str, previous_token: str, result_count: int(int32)}} # The request has succeeded.\n\n@endpoint POST /2/users/{id}/likes\n@desc Like Post\n@required {id: str, tweet_id: str}\n@returns(200) {data: map{liked: bool}, errors: [any]} # The request has succeeded.\n\n@endpoint DELETE /2/users/{id}/likes/{tweet_id}\n@desc Unlike Post\n@required {id: str, tweet_id: str}\n@returns(200) {data: map{liked: bool}, errors: [any]} # The request has succeeded.\n\n@endpoint GET /2/users/{id}/list_memberships\n@desc Get Users List Memberships\n@required {id: str}\n@optional {max_results: int(int32)=100, pagination_token: str, list.fields: [str] # A comma separated list of List fields to display., expansions: [str] # A comma separated list of fields to expand., user.fields: [str] # A comma separated list of User fields to display.}\n@returns(200) {data: [map], errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}, meta: map{next_token: str, previous_token: str, result_count: int(int32)}} # The request has succeeded.\n\n@endpoint GET /2/users/{id}/mentions\n@desc Get Users Mentions\n@required {id: str}\n@optional {max_results: int(int32), pagination_token: str # A base32hex-encoded pagination token., start_time: str(date-time) # Must be on or after 2010-11-06., end_time: str(date-time) # Must be on or after 2010-11-06., since_id: str, until_id: str, post.fields: [str] # A comma separated list of Post fields to display., expansions: [str] # A comma separated list of fields to expand., user.fields: [str] # A comma separated list of User fields to display., media.fields: [str] # A comma separated list of Media fields to display., poll.fields: [str] # A comma separated list of Poll fields to display., place.fields: [str] # A comma separated list of Place fields to display.}\n@returns(200) {data: [map], errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}, meta: map{newest_id: str, next_token: str, oldest_id: str, previous_token: str, result_count: int(int32)}} # The request has succeeded.\n\n@endpoint GET /2/users/{id}/muting\n@desc Get Users Muting\n@required {id: str}\n@optional {max_results: int(int32)=100, pagination_token: str, user.fields: [str] # A comma separated list of User fields to display., expansions: [str] # A comma separated list of fields to expand., post.fields: [str] # A comma separated list of Post fields to display.}\n@returns(200) {data: [map], errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}, meta: map{next_token: str, previous_token: str, result_count: int(int32)}} # The request has succeeded.\n\n@endpoint POST /2/users/{id}/muting\n@desc Mute User\n@required {id: str, target_user_id: str}\n@returns(200) {data: map{muting: bool}, errors: [any]} # The request has succeeded.\n\n@endpoint GET /2/users/{id}/owned_lists\n@desc Get Users Owned Lists\n@required {id: str}\n@optional {max_results: int(int32)=100, pagination_token: str # A 64-bit signed integer., list.fields: [str] # A comma separated list of List fields to display., expansions: [str] # A comma separated list of fields to expand., user.fields: [str] # A comma separated list of User fields to display.}\n@returns(200) {data: [map], errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}, meta: map{next_token: str, previous_token: str, result_count: int(int32)}} # The request has succeeded.\n\n@endpoint GET /2/users/{id}/pinned_lists\n@desc Get Users Pinned Lists\n@required {id: str}\n@optional {list.fields: [str] # A comma separated list of List fields to display., expansions: [str] # A comma separated list of fields to expand., user.fields: [str] # A comma separated list of User fields to display.}\n@returns(200) {data: [map], errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}, meta: map{result_count: int(int32)}} # The request has succeeded.\n\n@endpoint POST /2/users/{id}/pinned_lists\n@desc Pin List\n@required {id: str, list_id: str}\n@returns(200) {data: map{pinned: bool}, errors: [any]} # The request has succeeded.\n\n@endpoint DELETE /2/users/{id}/pinned_lists/{list_id}\n@desc Unpin a List\n@required {id: str, list_id: str}\n@returns(200) {data: map{pinned: bool}, errors: [any]} # The request has succeeded.\n\n@endpoint GET /2/users/{id}/public_keys\n@desc Get public keys\n@required {id: str}\n@optional {public_key.fields: [str] # A comma separated list of PublicKey fields to display.}\n@returns(200) {data: [map], errors: [any]} # The request has succeeded.\n\n@endpoint POST /2/users/{id}/public_keys\n@desc Add public key\n@required {id: str, public_key: map{identity_public_key_signature: str, public_key: str, public_key_fingerprint: str, registration_method: str, signing_public_key: str, signing_public_key_signature: str}, version: str # Public key version.}\n@optional {generate_version: bool # When true, the server generates a new version.}\n@returns(200) {data: map{juicebox_config: map, public_key_version: str}, errors: [any]} # The request has succeeded.\n\n@endpoint POST /2/users/{id}/retweets\n@desc Repost Post\n@required {id: str, tweet_id: str}\n@returns(200) {data: map{rest_id: str, retweeted: bool}, errors: [any]} # The request has succeeded.\n\n@endpoint DELETE /2/users/{id}/retweets/{source_tweet_id}\n@desc Unrepost Post\n@required {id: str, source_tweet_id: str}\n@returns(200) {data: map{retweeted: bool}, errors: [any]} # The request has succeeded.\n\n@endpoint GET /2/users/{id}/timelines/reverse_chronological\n@desc Get Users Timeline\n@required {id: str}\n@optional {max_results: int(int32), pagination_token: str # A base32hex-encoded pagination token., start_time: str(date-time) # Must be on or after 2010-11-06., end_time: str(date-time) # Must be on or after 2010-11-06., since_id: str, until_id: str, exclude: [str], post.fields: [str] # A comma separated list of Post fields to display., expansions: [str] # A comma separated list of fields to expand., user.fields: [str] # A comma separated list of User fields to display., media.fields: [str] # A comma separated list of Media fields to display., poll.fields: [str] # A comma separated list of Poll fields to display., place.fields: [str] # A comma separated list of Place fields to display.}\n@returns(200) {data: [map], errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}, meta: map{newest_id: str, next_token: str, oldest_id: str, previous_token: str, result_count: int(int32)}} # The request has succeeded.\n\n@endpoint GET /2/users/{id}/tweets\n@desc Get Users Posts\n@required {id: str}\n@optional {max_results: int(int32), pagination_token: str # A base32hex-encoded pagination token., start_time: str(date-time) # Must be on or after 2010-11-06., end_time: str(date-time) # Must be on or after 2010-11-06., since_id: str, until_id: str, exclude: [str], post.fields: [str] # A comma separated list of Post fields to display., expansions: [str] # A comma separated list of fields to expand., user.fields: [str] # A comma separated list of User fields to display., media.fields: [str] # A comma separated list of Media fields to display., poll.fields: [str] # A comma separated list of Poll fields to display., place.fields: [str] # A comma separated list of Place fields to display.}\n@returns(200) {data: [map], errors: [any], includes: map{media: [map], places: [map], polls: [map], posts: [map], topics: [map], users: [map]}, meta: map{newest_id: str, next_token: str, oldest_id: str, previous_token: str, result_count: int(int32)}} # The request has succeeded.\n\n@endpoint DELETE /2/users/{source_user_id}/blocking/{target_user_id}\n@desc Unblock User\n@required {source_user_id: str, target_user_id: str}\n@returns(200) {data: map{blocking: bool}, errors: [any]} # The request has succeeded.\n\n@endpoint DELETE /2/users/{source_user_id}/following/{target_user_id}\n@desc Unfollow User\n@required {source_user_id: str, target_user_id: str}\n@returns(200) {data: map{following: bool}, errors: [any]} # The request has succeeded.\n\n@endpoint DELETE /2/users/{source_user_id}/muting/{target_user_id}\n@desc Unmute User\n@required {source_user_id: str, target_user_id: str}\n@returns(200) {data: map{muting: bool}, errors: [any]} # The request has succeeded.\n\n@endpoint GET /2/webhooks\n@desc Get webhook\n@optional {webhook_config.fields: [str] # A comma separated list of WebhookConfig fields to display.}\n@returns(200) {data: [map], errors: [any], meta: map{result_count: int(int32)}} # The request has succeeded.\n\n@endpoint POST /2/webhooks\n@desc Create webhook\n@required {url: str # The URL the webhook delivers events to.}\n@returns(200) {data: map{created_at: str, id: str, url: str, valid: bool}, errors: [any]} # The request has succeeded.\n\n@endpoint POST /2/webhooks/replay\n@desc Create replay job for webhook\n@required {from_date: str # The oldest (inclusive) UTC timestamp from which events are replayed, in yyyymmddhhmm format., to_date: str # The newest (inclusive) UTC timestamp up to which events are replayed, in yyyymmddhhmm format., webhook_id: str # The ID of the webhook to replay events to.}\n@returns(200) {data: map{created_at: str, job_id: str}, errors: [any]} # The request has succeeded.\n\n@endpoint DELETE /2/webhooks/{webhook_id}\n@desc Delete webhook\n@required {webhook_id: str}\n@returns(200) {data: map{deleted: bool}, errors: [any]} # The request has succeeded.\n\n@endpoint PUT /2/webhooks/{webhook_id}\n@desc Validate webhook\n@required {webhook_id: str}\n@returns(200) {data: map{valid: bool}, errors: [any]} # The request has succeeded.\n\n@end\n"}