How AI is applied across API Evangelist and APIs.io. Read my AI disclosure →
API Evangelist API Evangelist
Discovery
Learnings
Guidance
Toolbox
Alignment
API Evangelist LLC

Twitter/X Chat API

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

Twitter/X Chat API is one of 22 APIs that Twitter/X 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, and an API reference.

This API exposes 17 operations across 16 paths, and defines 89 schemas. It is described by OpenAPI 3.2.0, at version 2.166.

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

17 operations 16 paths 89 schemas 6 GET11 POST

Metadata

The identity and technical contract details declared by the specification.

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

Authentication & Security 3

Twitter/X 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 17

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

Chat 17
GET
/2/chat/conversations
Get Chat Conversations
getChatConversations 5 params → 200default
POST
/2/chat/conversations/group
Create Chat Group Conversation
createChatConversation body → 201default
POST
/2/chat/conversations/group/initialize
Initialize Chat Group
initializeChatGroup → 200default
GET
/2/chat/conversations/{id}
Get Chat Conversation
getChatConversation 4 params → 200default
GET
/2/chat/conversations/{id}/events
Get Chat Conversation Events
getChatConversationEvents 4 params → 200default
POST
/2/chat/conversations/{id}/keys
Add Conversation Keys
addConversationKeys 1 param body → 200default
POST
/2/chat/conversations/{id}/members
Add members to a Chat group conversation
addChatGroupMembers 1 param body → 200default
POST
/2/chat/conversations/{id}/messages
Send Chat Message
sendChatMessage 1 param body → 201default
POST
/2/chat/conversations/{id}/read
Mark Conversation as Read
markChatConversationRead 1 param body → 200default
POST
/2/chat/conversations/{id}/typing
Send Typing Indicator
sendChatTypingIndicator 1 param → 200default
POST
/2/chat/media/upload/initialize
Initialize Chat Media Upload
chatMediaUploadInitialize body → 200default
POST
/2/chat/media/upload/{id}/append
Append Chat Media Upload
chatMediaUploadAppend 1 param body → 200default
POST
/2/chat/media/upload/{id}/finalize
Finalize Chat Media Upload
chatMediaUploadFinalize 1 param body → 200default
GET
/2/chat/media/{id}/{media_hash_key}
Download Chat Media
chatMediaDownload 2 params → 200default
GET
/2/users/public_keys
Get public keys for multiple users
getUsersPublicKeys 2 params → 200default
GET
/2/users/{id}/public_keys
Get user public keys
getUsersPublicKey 2 params → 200default
POST
/2/users/{id}/public_keys
Add public key
addUserPublicKey 1 param body → 200default

Schemas 89

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

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

Specification

The full machine-readable OpenAPI contract behind this narrative.

Source

twitter-x-chat-api-openapi.yml Raw ↑

Other APIs Twitter/X publishes across the network.

Twitter/X Account Activity API
Twitter/X Activity API
Twitter/X Articles API
Twitter/X Bookmarks API
Twitter/X Communities API
Twitter/X Community Notes API
Twitter/X Compliance API
Twitter/X Connections API
Twitter/X Direct Messages API
Twitter/X General API
Twitter/X Likes API
Twitter/X Lists API
Where this information came from

This is an independent, third-party profile of Twitter/X Chat API, published by API Evangelist. We do not operate, host, resell, or support these APIs, and we are not affiliated with or endorsed by the company unless stated above. Everything here is built from publicly available information — the company's own site, developer portal, documentation, public repositories, and the specifications it publishes for public use. Nothing is obtained by breaching a system, defeating an access control, or using credentials.

The Kin Score and Agent Readiness rating are independently calculated assessments of a company's public API artifacts, scored against a published rubric. They are not certifications, endorsements, security assessments, or audits.

Corrections, re-scores, and removal are free — no partnership or purchase required, and you do not need to justify the request. A removed company is recorded as unrated, never scored zero for having asked. Acknowledgement within one business day; removal within two.

info@apievangelist.com · Read the full data-sourcing policy →
On a security or compliance team? Put security in the subject line and you will get a person, not a form — we will tell you exactly which public URLs this profile was built from.