Need help with your APIs? I offer API discovery, governance & evangelism services. Explore services →
API Evangelist API Evangelist
Discovery
Learnings
Guidance
Toolbox
Alignment
API Evangelist LLC

X (Twitter) Chat API

The Chat API from X (Twitter) — 15 operation(s) for chat.

X (Twitter) Chat API is one of 23 APIs that X (Twitter) publishes on the APIs.io network, described by a machine-readable OpenAPI specification.

Tagged areas include Chat. The published artifact set on APIs.io includes an OpenAPI specification, API documentation, a getting-started guide, an API reference, authentication docs, and rate-limit docs.

This API exposes 16 operations across 15 paths, and defines 88 schemas. It is described by OpenAPI 3.0.0, at version 2.161.

Requests are made against a single base URL, https://api.x.com.

16 operations 15 paths 88 schemas 5 GET11 POST

Metadata

The identity and technical contract details declared by the specification.

Specification
OpenAPI 3.0.0
API Version
2.161
Base URL
https://api.x.com/2
Authentication
HTTP Bearer, OAuth 2.0, HTTP Oauth
Terms of Service
Resource Areas
1

Authentication & Security 3

X (Twitter) Chat API declares 3 security schemes for authenticating requests. It accepts HTTP bearer tokens (BearerToken). It supports OAuth 2.0 (OAuth2UserToken) using the authorizationCode flow, exposing 21 scopes. It uses HTTP oauth authentication (UserToken).

Paths & Operations 16

Across 15 paths, the API surfaces 16 operations — 5 GET, 11 POST. Each is listed below with its method, path, parameters, and response codes.

Chat 16
GET
/2/chat/conversations
X Get Chat Conversations
getChatConversations 5 params → 200default
POST
/2/chat/conversations/group
X Create Chat Group Conversation
createChatConversation body → 201default
POST
/2/chat/conversations/group/initialize
X Initialize Chat Group
initializeChatGroup → 200default
GET
/2/chat/conversations/{id}
X Get Chat Conversation
getChatConversation 4 params → 200default
POST
/2/chat/conversations/{id}/keys
X Initialize Conversation Keys
initializeChatConversationKeys 1 param body → 200default
POST
/2/chat/conversations/{id}/members
X Add Members to a Chat Group Conversation
addChatGroupMembers 1 param body → 200default
POST
/2/chat/conversations/{id}/messages
X Send Chat Message
sendChatMessage 1 param body → 201default
POST
/2/chat/conversations/{id}/read
X Mark Conversation as Read
markChatConversationRead 1 param body → 200default
POST
/2/chat/conversations/{id}/typing
X Send Typing Indicator
sendChatTypingIndicator 1 param → 200default
POST
/2/chat/media/upload/initialize
X Initialize Chat Media Upload
chatMediaUploadInitialize body → 200default
POST
/2/chat/media/upload/{id}/append
X Append Chat Media Upload
chatMediaUploadAppend 1 param body → 200default
POST
/2/chat/media/upload/{id}/finalize
X Finalize Chat Media Upload
chatMediaUploadFinalize 1 param body → 200default
GET
/2/chat/media/{id}/{media_hash_key}
X Download Chat Media
chatMediaDownload 2 params → 200default
GET
/2/users/public_keys
X Get Public Keys for Multiple Users
getUsersPublicKeys 2 params → 200default
GET
/2/users/{id}/public_keys
X Get User Public Keys
getUsersPublicKey 2 params → 200default
POST
/2/users/{id}/public_keys
X Add Public Key
addUserPublicKey 1 param body → 200default

Schemas 88

The contract defines 88 schemas that model the data the API accepts and returns. The most detailed are Tweet (29 properties), User (21 properties), ChatConversation (13 properties), ChatCreateConversationRequest (11 properties). Each schema is shown below with its type and property counts.

PollId
string
Unique identifier of this poll.
Media
object
4 properties 1 required
ChatAddPublicKeyResponse
object
2 properties
Geo
object
4 properties 3 required
PlaceId
string
The identifier for this place.
ContextAnnotationDomainFields
object
Represents the data for the context annotation domain.
3 properties 1 required
MentionFields
object
Represent the portion of text recognized as a User mention, and its start and end position within the text.
2 properties 1 required
HashtagEntity
ChatGetConversationResponse
object
3 properties
Get2UsersPublicKeysResponse
object
2 properties
ReplySettingsWithVerifiedUsers
string
Shows who can reply a Tweet. Fields returned are everyone, mentionedusers, subscribers, verified and following.
Topic
object
The topic of a Space, as selected by its creator.
3 properties 2 required
ChatAddGroupMembersRequest
object
6 properties 1 required
MediaHashKey
string
The media hash key returned from the upload initialize step. Alphanumeric characters only.
Place
object
8 properties 2 required
ChatCreateConversationResponse
object
2 properties
ChatMediaUploadInitializeResponse
object
Response from initializing a Chat media upload.
1 property
UserWithheld
object
Indicates withholding details for [withheld content](https://help.twitter.com/en/rules-and-policies/tweet-withheld-by-country).
2 properties 1 required
CountryCode
string
A two-letter ISO 3166-1 alpha-2 country code.
PollOption
object
Describes a choice in a Poll object.
3 properties 3 required
ChatInitializeGroupResponse
object
2 properties
CashtagEntity
MediaPayloadByte
string
The file to upload.
ChatPublicKey
object
A user's public key with associated key recovery configuration.
4 properties
PublicKey
object
Public key information for Chat encryption
4 properties
NoteTweetText
string
The note content of the Tweet.
Point
object
A [GeoJson Point](https://tools.ietf.org/html/rfc7946section-3.1.2) geometry object.
2 properties 2 required
ChatGetConversationsResponse
object
4 properties
ChatMediaUploadAppendRequest
ChatAddPublicKeyRequest
object
3 properties 2 required
ChatMarkConversationReadRequest
object
1 property 1 required
PollOptionLabel
string
The text of a poll choice.
ChatMarkConversationReadResponse
object
2 properties
PlaceType
string
ChatConversation
object
A Chat conversation resource representing either a direct or group conversation.
13 properties 1 required
ChatJuiceboxConfig
object
Key recovery configuration for Juicebox-based key storage.
6 properties
CommunityId
string
The unique identifier of this Community.
Get2UsersIdPublicKeysResponse
object
2 properties
DisplayTextRange
array
Represent a boundary range (start and end zero-based indices) for the portion of text that is displayed for a post. start must be smaller than end. The start i…
ChatActionSignature
object
Cryptographic signature for a chat action.
4 properties
User
object
The X User object.
21 properties 3 required
ChatMediaUploadFinalizeResponse
object
Response from finalizing a Chat media upload.
1 property
MentionEntity
FullTextEntities
object
5 properties
UrlFields
object
Represent the portion of text recognized as a URL.
9 properties 1 required
Tweet
object
29 properties
Problem
object
An HTTP Problem Details object, as defined in IETF RFC 7807 (https://tools.ietf.org/html/rfc7807).
4 properties 2 required
TweetWithheld
object
Indicates withholding details for [withheld content](https://help.twitter.com/en/rules-and-policies/tweet-withheld-by-country).
3 properties 2 required
Url
string
A validly formatted URL.
Expansions
object
6 properties
ChatMediaUploadFinalizeRequest
object
Request body for finalizing a Chat media upload.
5 properties
ChatMessageSigningKeyInfo
object
Signing key information for message verification.
3 properties
EntityIndicesInclusiveInclusive
object
Represent a boundary range (start and end index) for a recognized entity (for example a hashtag or a mention). start must be smaller than end. The start index…
2 properties 2 required
TweetText
string
The content of the Tweet.
ChatConversationParticipantKey
object
A participant's encrypted conversation key.
3 properties
ContextAnnotationEntityFields
object
Represents the data for the context annotation entity.
3 properties 1 required
BinaryPayload
string
Raw binary data bytes.
ChatInitializeConversationKeysResponse
object
2 properties
ChatMessageEvent
object
An Chat message event with extracted envelope fields and the original encoded event.
10 properties 1 required
UrlEntity
Represent the portion of text recognized as a URL, and its start and end position within the text.
MediaUploadAppendResponse
object
A response from getting a media upload request status.
2 properties 1 required
HttpStatusCode
integer
HTTP Status Code.
EntityIndicesInclusiveExclusive
object
Represent a boundary range (start and end index) for a recognized entity (for example a hashtag or a mention). start must be smaller than end. The start index…
2 properties 2 required
MediaPayloadBinary
string
The file to upload.
TweetId
string
Unique identifier of this Tweet. This is returned as a string in order to avoid complications with languages and tools that cannot handle large integers.
MediaKey
string
The Media Key identifier for this attachment.
Error
object
2 properties 2 required
ChatMessageEventSignature
object
Message event signature for verification.
5 properties
ChatConversationOrRecipientId
string
Identifies the conversation target. Accepts three formats: (1) a recipient user ID for 1:1 conversations (e.g., '1215441834412953600'), (2) a legacy 1:1 conver…
CashtagFields
object
Represent the portion of text recognized as a Cashtag, and its start and end position within the text.
1 property 1 required
ChatInitializeConversationKeysRequest
object
4 properties 2 required
MediaWidth
integer
The width of the media in pixels.
Position
array
A [GeoJson Position](https://tools.ietf.org/html/rfc7946section-3.1.1) in the format [longitude,latitude].
ChatSendMessageRequest
object
4 properties 2 required
MediaSegments
UrlImage
object
Represent the information for the URL image.
3 properties
ChatSendTypingIndicatorResponse
object
2 properties
UserName
string
The X handle (screen name) of this user.
ChatCreateConversationRequest
object
11 properties 4 required
ContextAnnotation
object
Annotation inferred from the Tweet text.
2 properties 2 required
Poll
object
Represent a Poll attached to a Tweet.
5 properties 2 required
HashtagFields
object
Represent the portion of text recognized as a Hashtag, and its start and end position within the text.
1 property 1 required
MediaHeight
integer
The height of the media in pixels.
ChatAddGroupMembersResponse
object
2 properties
TopicId
string
Unique identifier of this Topic.
ChatMediaUploadInitializeRequest
object
Request body for initializing a Chat media upload.
2 properties
UserId
string
Unique identifier of this User. This is returned as a string in order to avoid complications with languages and tools that cannot handle large integers.
ChatSendMessageResponse
object
2 properties

Specification

The full machine-readable OpenAPI contract behind this narrative.

Source

twitter-chat-api-openapi.yml Raw ↑

Other APIs X (Twitter) publishes across the network.

X Ads API
X Activity API
X (Twitter) Account Activity API
X (Twitter) Activity API
X (Twitter) Bookmarks API
X (Twitter) Communities API
X (Twitter) Community Notes API
X (Twitter) Compliance API
X (Twitter) Connections API
X (Twitter) Direct Messages API
X (Twitter) General API
X (Twitter) Likes API