---
title: "Delete Chat Messages"
method: POST
path: "/2/chat/conversations/{id}/messages/delete"
tags: ["Chat"]
---

# Delete Chat Messages

`POST /2/chat/conversations/{id}/messages/delete`

## Request

- Base URL: `https://api.x.com`
- URL: `https://api.x.com/2/chat/conversations/{id}/messages/delete`
- Auth: one of:
  - OAuth 2
    - Authorization code: `https://api.x.com/2/oauth2/authorize`
    - Token URL: `https://api.x.com/2/oauth2/token` scopes: `tweet.read`, `dm.write`, `users.read`
  - HTTP oauth

Deletes one or more messages from a Chat conversation. For 1:1 conversations, provide the recipient's user ID; the server constructs the canonical conversation ID from the authenticated user and recipient. Delete for all removes a message you sent (or, in groups you administer, any message) for every participant; delete for self removes any message only from your own view.

## Path parameters

- `id` string, required

## Request body

- DeleteChatMessagesRequest
  - `action_signatures` DeleteChatMessagesActionSignatures[], required: Signatures for this action, forwarded in the order they are sent.
    - `encoded_message_event_detail` string, required: Base64-encoded Thrift MessageEventDetail for the signed action.
    - `message_event_signature` DeleteChatMessagesActionSignaturesMessageEventSignature, required
      - `message_signing_key_info_list` DeleteChatMessagesActionSignaturesMessageEventSignatureMessageSigningKeyInfoList[]: List of signing key information for message verification.
        - `member_id` string: The member ID associated with this signing key.
        - `public_key_version` string: The version of the public key.
        - `signing_public_key` string: The signing public key.
      - `public_key_version` string, required: The version of the public key used for signing.
      - `signature` string, required: The signature of the message event.
      - `signature_version` string, required: The version of the signature algorithm.
      - `signing_public_key` string: The public key used for signing.
    - `message_id` string, required: Client-generated ID of the message being signed.
    - `signature_payload` string: Payload string the client signed; used only in server-side failure logs.
  - `delete_message_action` 'delete_for_all' | 'delete_for_self', required: delete_for_all removes the messages for every participant; delete_for_self removes them only from the authenticated user's view.
  - `media_hash_keys` string[]: Hash keys of encrypted media blobs to delete alongside the messages (delete_for_all only).
  - `sequence_ids` string[], required: Sequence IDs of the messages to delete.

## Response `200`

The request has succeeded.

- DeleteChatMessagesResponse
  - `data` DeleteChatMessagesResponseData
    - `deleted` boolean, required: Whether the messages were deleted.
  - `errors` Problem[]
    - union
      - ResourceNotFoundProblem
        - `detail` string, required
        - `parameter` string
        - `resource_id` string
        - `resource_type` string, required
        - `status` integer
        - `title` string, required
        - `type` 'https://api.x.com/2/problems/resource-not-found', required
        - `value` string
      - InvalidRequestProblem
        - `detail` string, required
        - `parameter` string
        - `status` integer
        - `title` string, required
        - `type` 'https://api.x.com/2/problems/invalid-request', required
        - `value` string
      - NotAuthorizedForResourceProblem
        - `detail` string, required
        - `parameter` string
        - `resource_id` string
        - `resource_type` string, required
        - `section` string
        - `status` integer
        - `title` string, required
        - `type` 'https://api.x.com/2/problems/not-authorized-for-resource', required
        - `value` string
      - NotAuthorizedForFieldProblem
        - `detail` string, required
        - `field` string, required
        - `parameter` string
        - `resource_id` string
        - `resource_type` string
        - `section` string
        - `status` integer
        - `title` string, required
        - `type` 'https://api.x.com/2/problems/not-authorized-for-field', required
        - `value` string
      - FieldUnauthorizedProblem
        - `detail` string, required
        - `field` string, required
        - `resource_type` string
        - `section` string
        - `status` integer
        - `title` string, required
        - `type` 'https://api.x.com/2/problems/field-unauthorized', required
      - FieldHydrationFailureProblem
        - `detail` string, required
        - `field` string, required
        - `resource_type` string
        - `section` string
        - `status` integer
        - `title` string, required
        - `type` 'https://api.x.com/2/problems/field-hydration-failure', required
      - ResourceUnavailableProblem
        - `detail` string, required
        - `resource_id` string
        - `resource_type` string, required
        - `status` integer
        - `title` string, required
        - `type` 'https://api.x.com/2/problems/resource-unavailable', required
      - DisallowedResourceProblem
        - `detail` string, required
        - `resource_id` string
        - `resource_type` string
        - `section` string
        - `status` integer
        - `title` string, required
        - `type` 'https://api.x.com/2/problems/disallowed-resource', required
      - RecipientNotMessageableProblem
        - `detail` string, required
        - `status` integer
        - `title` string, required
        - `type` 'https://api.x.com/2/problems/recipient-not-messageable', required
      - InternalErrorProblem
        - `detail` string, required
        - `status` integer
        - `title` string, required
        - `type` 'https://api.x.com/2/problems/internal-error', required
      - DmBadAttachmentProblem
        - `detail` string, required
        - `status` integer
        - `title` string, required
        - `type` 'https://api.x.com/2/problems/dm-bad-attachment', required
      - DmBadCtaProblem
        - `detail` string, required
        - `status` integer
        - `title` string, required
        - `type` 'https://api.x.com/2/problems/dm-bad-cta', required
      - DmBadCustomProfileProblem
        - `detail` string, required
        - `status` integer
        - `title` string, required
        - `type` 'https://api.x.com/2/problems/dm-bad-custom-profile', required
      - DmBadMediaProblem
        - `detail` string, required
        - `status` integer
        - `title` string, required
        - `type` 'https://api.x.com/2/problems/dm-bad-media', required
      - DmBadQuickReplyProblem
        - `detail` string, required
        - `status` integer
        - `title` string, required
        - `type` 'https://api.x.com/2/problems/dm-bad-quick-reply', required
      - DmBadUrlProblem
        - `detail` string, required
        - `status` integer
        - `title` string, required
        - `type` 'https://api.x.com/2/problems/dm-bad-url', required
      - DmConversationNameTooLongProblem
        - `detail` string, required
        - `status` integer
        - `title` string, required
        - `type` 'https://api.x.com/2/problems/dm-conversation-name-too-long', required
      - DmConversationNotFoundProblem
        - `detail` string, required
        - `status` integer
        - `title` string, required
        - `type` 'https://api.x.com/2/problems/dm-conversation-not-found', required
      - DmDuplicateProblem
        - `detail` string, required
        - `status` integer
        - `title` string, required
        - `type` 'https://api.x.com/2/problems/dm-duplicate', required
      - DmInactiveDeviceProblem
        - `detail` string, required
        - `status` integer
        - `title` string, required
        - `type` 'https://api.x.com/2/problems/dm-inactive-device', required
      - DmNotDeliveredProblem
        - `detail` string, required
        - `status` integer
        - `title` string, required
        - `type` 'https://api.x.com/2/problems/dm-not-delivered', required
      - DmNotFoundProblem
        - `detail` string, required
        - `status` integer
        - `title` string, required
        - `type` 'https://api.x.com/2/problems/dm-not-found', required
      - DmNotOwnerProblem
        - `detail` string, required
        - `status` integer
        - `title` string, required
        - `type` 'https://api.x.com/2/problems/dm-not-owner', required
      - DmParticipantNotAddedProblem
        - `detail` string, required
        - `status` integer
        - `title` string, required
        - `type` 'https://api.x.com/2/problems/dm-participant-not-added', required
      - DmParticipantNotFoundProblem
        - `detail` string, required
        - `status` integer
        - `title` string, required
        - `type` 'https://api.x.com/2/problems/dm-participant-not-found', required
      - DmParticipantRestrictedProblem
        - `detail` string, required
        - `status` integer
        - `title` string, required
        - `type` 'https://api.x.com/2/problems/dm-participant-restricted', required
      - DmParticipantUnavailableProblem
        - `detail` string, required
        - `status` integer
        - `title` string, required
        - `type` 'https://api.x.com/2/problems/dm-participant-unavailable', required
      - DmRateLimitedProblem
        - `detail` string, required
        - `status` integer
        - `title` string, required
        - `type` 'https://api.x.com/2/problems/dm-rate-limited', required
      - DmRecipientBlocksSenderProblem
        - `detail` string, required
        - `status` integer
        - `title` string, required
        - `type` 'https://api.x.com/2/problems/dm-recipient-blocks-sender', required
      - DmRecipientCannotReceiveProblem
        - `detail` string, required
        - `status` integer
        - `title` string, required
        - `type` 'https://api.x.com/2/problems/dm-recipient-cannot-receive', required
      - DmRecipientEncryptedUnavailableProblem
        - `detail` string, required
        - `status` integer
        - `title` string, required
        - `type` 'https://api.x.com/2/problems/dm-recipient-encrypted-unavailable', required
      - DmRecipientNotAcceptingProblem
        - `detail` string, required
        - `status` integer
        - `title` string, required
        - `type` 'https://api.x.com/2/problems/dm-recipient-not-accepting', required
      - DmRecipientNotFoundProblem
        - `detail` string, required
        - `status` integer
        - `title` string, required
        - `type` 'https://api.x.com/2/problems/dm-recipient-not-found', required
      - DmRecipientRestrictsGroupsProblem
        - `detail` string, required
        - `status` integer
        - `title` string, required
        - `type` 'https://api.x.com/2/problems/dm-recipient-restricts-groups', required
      - DmRecipientUnavailableProblem
        - `detail` string, required
        - `status` integer
        - `title` string, required
        - `type` 'https://api.x.com/2/problems/dm-recipient-unavailable', required
      - DmRequestInProgressProblem
        - `detail` string, required
        - `status` integer
        - `title` string, required
        - `type` 'https://api.x.com/2/problems/dm-request-in-progress', required
      - DmSafetyLimitedProblem
        - `detail` string, required
        - `status` integer
        - `title` string, required
        - `type` 'https://api.x.com/2/problems/dm-safety-limited', required
      - DmSafetyRejectedProblem
        - `detail` string, required
        - `status` integer
        - `title` string, required
        - `type` 'https://api.x.com/2/problems/dm-safety-rejected', required
      - DmSenderBlocksRecipientProblem
        - `detail` string, required
        - `status` integer
        - `title` string, required
        - `type` 'https://api.x.com/2/problems/dm-sender-blocks-recipient', required
      - DmSenderDeclinedDmsProblem
        - `detail` string, required
        - `status` integer
        - `title` string, required
        - `type` 'https://api.x.com/2/problems/dm-sender-declined-dms', required
      - DmSenderDmsClosedProblem
        - `detail` string, required
        - `status` integer
        - `title` string, required
        - `type` 'https://api.x.com/2/problems/dm-sender-dms-closed', required
      - DmSenderEncryptedUnavailableProblem
        - `detail` string, required
        - `status` integer
        - `title` string, required
        - `type` 'https://api.x.com/2/problems/dm-sender-encrypted-unavailable', required
      - DmSenderNotInConversationProblem
        - `detail` string, required
        - `status` integer
        - `title` string, required
        - `type` 'https://api.x.com/2/problems/dm-sender-not-in-conversation', required
      - DmSenderNotPermittedProblem
        - `detail` string, required
        - `status` integer
        - `title` string, required
        - `type` 'https://api.x.com/2/problems/dm-sender-not-permitted', required
      - DmSenderNotVerifiedProblem
        - `detail` string, required
        - `status` integer
        - `title` string, required
        - `type` 'https://api.x.com/2/problems/dm-sender-not-verified', required
      - DmSenderPhoneRequiredProblem
        - `detail` string, required
        - `status` integer
        - `title` string, required
        - `type` 'https://api.x.com/2/problems/dm-sender-phone-required', required
      - DmSenderReadOnlyProblem
        - `detail` string, required
        - `status` integer
        - `title` string, required
        - `type` 'https://api.x.com/2/problems/dm-sender-read-only', required
      - DmSenderUnavailableProblem
        - `detail` string, required
        - `status` integer
        - `title` string, required
        - `type` 'https://api.x.com/2/problems/dm-sender-unavailable', required
      - DmTextEmptyProblem
        - `detail` string, required
        - `status` integer
        - `title` string, required
        - `type` 'https://api.x.com/2/problems/dm-text-empty', required
      - DmTextTooLongProblem
        - `detail` string, required
        - `status` integer
        - `title` string, required
        - `type` 'https://api.x.com/2/problems/dm-text-too-long', required
      - DmTooFewParticipantsProblem
        - `detail` string, required
        - `status` integer
        - `title` string, required
        - `type` 'https://api.x.com/2/problems/dm-too-few-participants', required
      - DmTooManyParticipantsProblem
        - `detail` string, required
        - `status` integer
        - `title` string, required
        - `type` 'https://api.x.com/2/problems/dm-too-many-participants', required
      - DmUnsupportedMessageProblem
        - `detail` string, required
        - `status` integer
        - `title` string, required
        - `type` 'https://api.x.com/2/problems/dm-unsupported-message', required
      - DuplicateRuleProblem
        - `detail` string
        - `id` string
        - `title` string, required
        - `type` 'https://api.twitter.com/2/problems/duplicate-rules', required
        - `value` string, required
      - InvalidRuleProblem
        - `detail` string
        - `details` string[], required
        - `title` string, required
        - `type` 'https://api.twitter.com/2/problems/invalid-rules', required
        - `value` string

## Other responses

- `default`: The request has failed.

## Changes

- **2026-11-03** `2e1fefa37444`: 2 breaking, 2 info
  - added `#/components/schemas/DmBadAttachmentProblem, #/components/schemas/DmBadCtaProblem, #/components/schemas/DmBadCustomProfileProblem, #/components/schemas/DmBadMediaProblem, #/components/schemas/DmBadQuickReplyProblem, #/components/schemas/DmBadUrlProblem, #/components/schemas/DmConversationNameTooLongProblem, #/components/schemas/DmConversationNotFoundProblem, #/components/schemas/DmDuplicateProblem, #/components/schemas/DmInactiveDeviceProblem, #/components/schemas/DmNotDeliveredProblem, #/components/schemas/DmNotFoundProblem, #/components/schemas/DmNotOwnerProblem, #/components/schemas/DmParticipantNotAddedProblem, #/components/schemas/DmParticipantNotFoundProblem, #/components/schemas/DmParticipantRestrictedProblem, #/components/schemas/DmParticipantUnavailableProblem, #/components/schemas/DmRateLimitedProblem, #/components/schemas/DmRecipientBlocksSenderProblem, #/components/schemas/DmRecipientCannotReceiveProblem, #/components/schemas/DmRecipientEncryptedUnavailableProblem, #/components/schemas/DmRecipientNotAcceptingProblem, #/components/schemas/DmRecipientNotFoundProblem, #/components/schemas/DmRecipientRestrictsGroupsProblem, #/components/schemas/DmRecipientUnavailableProblem, #/components/schemas/DmRequestInProgressProblem, #/components/schemas/DmSafetyLimitedProblem, #/components/schemas/DmSafetyRejectedProblem, #/components/schemas/DmSenderBlocksRecipientProblem, #/components/schemas/DmSenderDeclinedDmsProblem, #/components/schemas/DmSenderDmsClosedProblem, #/components/schemas/DmSenderEncryptedUnavailableProblem, #/components/schemas/DmSenderNotInConversationProblem, #/components/schemas/DmSenderNotPermittedProblem, #/components/schemas/DmSenderNotVerifiedProblem, #/components/schemas/DmSenderPhoneRequiredProblem, #/components/schemas/DmSenderReadOnlyProblem, #/components/schemas/DmSenderUnavailableProblem, #/components/schemas/DmTextEmptyProblem, #/components/schemas/DmTextTooLongProblem, #/components/schemas/DmTooFewParticipantsProblem, #/components/schemas/DmTooManyParticipantsProblem, #/components/schemas/DmUnsupportedMessageProblem` to the response body `oneOf` list for the response status `default`
  - added `#/components/schemas/DmBadAttachmentProblem, #/components/schemas/DmBadCtaProblem, #/components/schemas/DmBadCustomProfileProblem, #/components/schemas/DmBadMediaProblem, #/components/schemas/DmBadQuickReplyProblem, #/components/schemas/DmBadUrlProblem, #/components/schemas/DmConversationNameTooLongProblem, #/components/schemas/DmConversationNotFoundProblem, #/components/schemas/DmDuplicateProblem, #/components/schemas/DmInactiveDeviceProblem, #/components/schemas/DmNotDeliveredProblem, #/components/schemas/DmNotFoundProblem, #/components/schemas/DmNotOwnerProblem, #/components/schemas/DmParticipantNotAddedProblem, #/components/schemas/DmParticipantNotFoundProblem, #/components/schemas/DmParticipantRestrictedProblem, #/components/schemas/DmParticipantUnavailableProblem, #/components/schemas/DmRateLimitedProblem, #/components/schemas/DmRecipientBlocksSenderProblem, #/components/schemas/DmRecipientCannotReceiveProblem, #/components/schemas/DmRecipientEncryptedUnavailableProblem, #/components/schemas/DmRecipientNotAcceptingProblem, #/components/schemas/DmRecipientNotFoundProblem, #/components/schemas/DmRecipientRestrictsGroupsProblem, #/components/schemas/DmRecipientUnavailableProblem, #/components/schemas/DmRequestInProgressProblem, #/components/schemas/DmSafetyLimitedProblem, #/components/schemas/DmSafetyRejectedProblem, #/components/schemas/DmSenderBlocksRecipientProblem, #/components/schemas/DmSenderDeclinedDmsProblem, #/components/schemas/DmSenderDmsClosedProblem, #/components/schemas/DmSenderEncryptedUnavailableProblem, #/components/schemas/DmSenderNotInConversationProblem, #/components/schemas/DmSenderNotPermittedProblem, #/components/schemas/DmSenderNotVerifiedProblem, #/components/schemas/DmSenderPhoneRequiredProblem, #/components/schemas/DmSenderReadOnlyProblem, #/components/schemas/DmSenderUnavailableProblem, #/components/schemas/DmTextEmptyProblem, #/components/schemas/DmTextTooLongProblem, #/components/schemas/DmTooFewParticipantsProblem, #/components/schemas/DmTooManyParticipantsProblem, #/components/schemas/DmUnsupportedMessageProblem` to the `errors/items/` response property `oneOf` list for the response status `200`
  - added `https://api.x.com/2/problems/dm-bad-attachment, https://api.x.com/2/problems/dm-bad-cta, https://api.x.com/2/problems/dm-bad-custom-profile, https://api.x.com/2/problems/dm-bad-media, https://api.x.com/2/problems/dm-bad-quick-reply, https://api.x.com/2/problems/dm-bad-url, https://api.x.com/2/problems/dm-conversation-name-too-long, https://api.x.com/2/problems/dm-conversation-not-found, https://api.x.com/2/problems/dm-duplicate, https://api.x.com/2/problems/dm-inactive-device, https://api.x.com/2/problems/dm-not-delivered, https://api.x.com/2/problems/dm-not-found, https://api.x.com/2/problems/dm-not-owner, https://api.x.com/2/problems/dm-participant-not-added, https://api.x.com/2/problems/dm-participant-not-found, https://api.x.com/2/problems/dm-participant-restricted, https://api.x.com/2/problems/dm-participant-unavailable, https://api.x.com/2/problems/dm-rate-limited, https://api.x.com/2/problems/dm-recipient-blocks-sender, https://api.x.com/2/problems/dm-recipient-cannot-receive, https://api.x.com/2/problems/dm-recipient-encrypted-unavailable, https://api.x.com/2/problems/dm-recipient-not-accepting, https://api.x.com/2/problems/dm-recipient-not-found, https://api.x.com/2/problems/dm-recipient-restricts-groups, https://api.x.com/2/problems/dm-recipient-unavailable, https://api.x.com/2/problems/dm-request-in-progress, https://api.x.com/2/problems/dm-safety-limited, https://api.x.com/2/problems/dm-safety-rejected, https://api.x.com/2/problems/dm-sender-blocks-recipient, https://api.x.com/2/problems/dm-sender-declined-dms, https://api.x.com/2/problems/dm-sender-dms-closed, https://api.x.com/2/problems/dm-sender-encrypted-unavailable, https://api.x.com/2/problems/dm-sender-not-in-conversation, https://api.x.com/2/problems/dm-sender-not-permitted, https://api.x.com/2/problems/dm-sender-not-verified, https://api.x.com/2/problems/dm-sender-phone-required, https://api.x.com/2/problems/dm-sender-read-only, https://api.x.com/2/problems/dm-sender-unavailable, https://api.x.com/2/problems/dm-text-empty, https://api.x.com/2/problems/dm-text-too-long, https://api.x.com/2/problems/dm-too-few-participants, https://api.x.com/2/problems/dm-too-many-participants, https://api.x.com/2/problems/dm-unsupported-message` mapping keys to the response discriminator for the response status `default`
  - added `https://api.x.com/2/problems/dm-bad-attachment, https://api.x.com/2/problems/dm-bad-cta, https://api.x.com/2/problems/dm-bad-custom-profile, https://api.x.com/2/problems/dm-bad-media, https://api.x.com/2/problems/dm-bad-quick-reply, https://api.x.com/2/problems/dm-bad-url, https://api.x.com/2/problems/dm-conversation-name-too-long, https://api.x.com/2/problems/dm-conversation-not-found, https://api.x.com/2/problems/dm-duplicate, https://api.x.com/2/problems/dm-inactive-device, https://api.x.com/2/problems/dm-not-delivered, https://api.x.com/2/problems/dm-not-found, https://api.x.com/2/problems/dm-not-owner, https://api.x.com/2/problems/dm-participant-not-added, https://api.x.com/2/problems/dm-participant-not-found, https://api.x.com/2/problems/dm-participant-restricted, https://api.x.com/2/problems/dm-participant-unavailable, https://api.x.com/2/problems/dm-rate-limited, https://api.x.com/2/problems/dm-recipient-blocks-sender, https://api.x.com/2/problems/dm-recipient-cannot-receive, https://api.x.com/2/problems/dm-recipient-encrypted-unavailable, https://api.x.com/2/problems/dm-recipient-not-accepting, https://api.x.com/2/problems/dm-recipient-not-found, https://api.x.com/2/problems/dm-recipient-restricts-groups, https://api.x.com/2/problems/dm-recipient-unavailable, https://api.x.com/2/problems/dm-request-in-progress, https://api.x.com/2/problems/dm-safety-limited, https://api.x.com/2/problems/dm-safety-rejected, https://api.x.com/2/problems/dm-sender-blocks-recipient, https://api.x.com/2/problems/dm-sender-declined-dms, https://api.x.com/2/problems/dm-sender-dms-closed, https://api.x.com/2/problems/dm-sender-encrypted-unavailable, https://api.x.com/2/problems/dm-sender-not-in-conversation, https://api.x.com/2/problems/dm-sender-not-permitted, https://api.x.com/2/problems/dm-sender-not-verified, https://api.x.com/2/problems/dm-sender-phone-required, https://api.x.com/2/problems/dm-sender-read-only, https://api.x.com/2/problems/dm-sender-unavailable, https://api.x.com/2/problems/dm-text-empty, https://api.x.com/2/problems/dm-text-too-long, https://api.x.com/2/problems/dm-too-few-participants, https://api.x.com/2/problems/dm-too-many-participants, https://api.x.com/2/problems/dm-unsupported-message` discriminator mapping keys to the `errors/items/` response property for the response status `200`
- …earlier changes not shown

[Operation history](https://skmtc.dev/x/apis/x-api-v2/changes/2/chat/conversations/:id/messages/delete/post.md)

---

[API](https://skmtc.dev/x/apis/x-api-v2.md) - [All operations](https://skmtc.dev/x/apis/x-api-v2/llms.txt) - [OpenAPI document](https://skmtc.dev/x/apis/x-api-v2/revisions/2e1fefa37444?raw)
