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 Direct Messages API

Endpoints related to retrieving, managing Direct Messages

Twitter/X Direct Messages 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 Direct Messages. The published artifact set on APIs.io includes an OpenAPI specification, API documentation, and an API reference.

This API exposes 9 operations across 8 paths, and defines 74 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.

9 operations 8 paths 74 schemas 1 DELETE5 GET3 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 Direct Messages 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 9

Across 8 paths, the API surfaces 9 operations — 1 DELETE, 5 GET, 3 POST. Each is listed below with its method, path, parameters, and response codes.

Direct Messages 9

Endpoints related to retrieving, managing Direct Messages

POST
/2/dm_conversations
Create DM conversation
createDirectMessagesConversation body → 201default
GET
/2/dm_conversations/media/{dm_id}/{media_id}/{resource_id}
Download DM Media
dmConversationsMediaDownload 3 params → 200default
GET
/2/dm_conversations/with/{participant_id}/dm_events
Get DM events for a DM conversation
getDirectMessagesEventsByParticipantId 9 params → 200default
POST
/2/dm_conversations/with/{participant_id}/messages
Create DM message by participant ID
createDirectMessagesByParticipantId 1 param body → 201default
POST
/2/dm_conversations/{dm_conversation_id}/messages
Create DM message by conversation ID
createDirectMessagesByConversationId 1 param body → 201default
GET
/2/dm_conversations/{id}/dm_events
Get DM events for a DM conversation
getDirectMessagesEventsByConversationId 9 params → 200default
GET
/2/dm_events
Get DM events
getDirectMessagesEvents 8 params → 200default
DELETE
/2/dm_events/{event_id}
Delete DM event
deleteDirectMessagesEvents 1 param → 200default
GET
/2/dm_events/{event_id}
Get DM event by ID
getDirectMessagesEventsById 6 params → 200default

Schemas 74

The contract defines 74 schemas that model the data the API accepts and returns. The most detailed are Tweet (32 properties), User (21 properties), DmEvent (13 properties), UrlFields (9 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
Get2DmConversationsWithParticipantIdDmEventsResponse
object
4 properties
PlaceId
string
The identifier for this place.
Problem
object
An HTTP Problem Details object, as defined in IETF RFC 7807 (https://tools.ietf.org/html/rfc7807).
4 properties 2 required
Get2DmEventsEventIdResponse
object
3 properties
MediaId
string
The unique identifier of this Media.
PaginationToken32
string
A base32 pagination token.
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].
MentionEntity
UrlFields
object
Represent the portion of text recognized as a URL.
9 properties 1 required
Get2DmConversationsIdDmEventsResponse
object
4 properties
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
Tweet
object
32 properties
Error
object
2 properties 2 required
Geo
object
4 properties 3 required
DmParticipants
array
Participants for the DM Conversation.
NextToken
string
The next token.
CreateMessageRequest
HttpStatusCode
integer
HTTP Status Code.
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
DmEvent
object
13 properties 2 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.
Get2DmEventsResponse
object
4 properties
Media
object
4 properties 1 required
PollId
string
Unique identifier of this poll.
ResultCount
integer
The number of results returned in this response.
ContextAnnotationDomainFields
object
Represents the data for the context annotation domain.
3 properties 1 required
MediaWidth
integer
The width of the media in pixels.
CommunityId
string
The unique identifier of this Community.
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
CreateDmEventResponse
object
2 properties
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
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.
DmMediaAttachment
object
1 property 1 required
CashtagEntity
MediaHeight
integer
The height of the media in pixels.
UserName
string
The X handle (screen name) of this user.
DmResourceId
string
The resource identifier of the media file, including file extension.
FullTextEntities
object
5 properties
TopicId
string
Unique identifier of this Topic.
PlaceType
string
UserWithheld
object
Indicates withholding details for [withheld content](https://help.twitter.com/en/rules-and-policies/tweet-withheld-by-country).
2 properties 1 required
CreateTextMessageRequest
object
2 properties 1 required
CreateAttachmentsMessageRequest
object
2 properties 1 required
DmEventId
string
Unique identifier of a DM Event.
Place
object
8 properties 2 required
NoteId
string
The unique identifier of this Community Note.
CreateDmConversationRequest
object
3 properties 3 required
PreviousToken
string
The previous token.
DmAttachments
array
Attachments to a DM Event.
ReplySettingsWithVerifiedUsers
string
Shows who can reply a Tweet. Fields returned are everyone, mentionedusers, subscribers, verified and following.
DmConversationId
string
Unique identifier of a DM conversation. This can either be a numeric string, or a pair of numeric strings separated by a '-' character in the case of one-on-on…
HashtagEntity
UrlEntityDm
Represent the portion of text recognized as a URL, and its start and end position within the text.
NoteTweetText
string
The note content of the Tweet.
DeleteDmResponse
object
2 properties
User
object
The X User object.
21 properties 3 required
Expansions
object
6 properties

Specification

The full machine-readable OpenAPI contract behind this narrative.

Source

twitter-x-direct-messages-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 Chat API
Twitter/X Communities API
Twitter/X Community Notes API
Twitter/X Compliance API
Twitter/X Connections 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 Direct Messages 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.