---
source_url: https://www.pubnub.com/docs/sdks/rest-api/delete-message-history
title: Delete message history
---

# Delete message history

> For AI agents: documentation index at https://www.pubnub.com/llms-full.txt

Removes the messages from the history of a specific channel.

* If you supply neither a `start` nor an `end` parameter, the server deletes all messages for that channel.
* If you supply a `start` parameter without an `end` parameter, the server deletes all messages *before* that time. Start time is *exclusive*, meaning that a message with that timestamp will not be deleted.
* If you supply an `end` parameter without a `start` parameter, the server deletes all messages from the *current* time until the end time. End time is *inclusive*, meaning that a message with that timestamp will be deleted.
* If you supply both a `start` and an `end` parameter, the server deletes all messages from the start time through the end time. Start time is exclusive, and end time is inclusive.
* If you supply both a `start` and an `end` parameter, and their values are equal, the server deletes *no messages*.
* To delete a single message, set the parameter values as follows: `end = messageTimetoken` and `start = messageTimetoken(int) + 1`
* If you have Access Manager enabled for your subkey, the request needs to have a signature or authKey.

| Path Parameters |
| --- |
| `sub_key`string—**REQUIRED**Your app's subscribe key from Admin Portal.Example: sub-c-50264475-1902-558x-d213-7p19052012n2 |
| `channels`string—**REQUIRED**The channel names to perform the operation on.Example: ch1,ch2 |

| Query Parameters |
| --- |
| `start`numberTimetoken delimiting the start of time slice (exclusive) to pull messages from. Exclusive means that the message associated with the timetoken will be excluded from the result.If provided, lets you select a start date, in Timetoken format. If not provided, it will default to current time. Page through results by providing a start OR end time token. Retrieve a slice of the time line by providing both a start AND end time token. start is exclusive, that is, the first item returned will be the one immediately after the start Timetoken value.Example: 123323123123123 |
| `end`numberTimetoken delimiting the end of time slice (inclusive) to pull messages from. Inclusive means that the message associated with the timetoken will be included in the result.If provided, lets you select an end date, in Timetoken format. Page through results by providing a start OR end time token. Retrieve a slice of the time line by providing both a start AND end time token. End is inclusive, that is, if a message is associated exactly with the end Timetoken, it will be included in the result.Example: 123323123123123 |
| `auth`stringString which is either the auth key (Access Manager legacy) or a valid token (Access Manager) used to authorize the operation if access control is enabled.Example: authKey / p0thisAkFl043rhDdHRsCkNyZXisRBjoERtZXRhoENzaWdYIGOAeTyWGJI |
| `uuid`stringA UTF-8 encoded string of up to 92 characters used to identify the client.Example: myUniqueUserId |
| `signature`stringSignature used to verify that the request was signed with the secret key associated with the subscriber key.If Access Manager is enabled, either a valid authorization token or a signature are required.See Access Manager documentation for details on how to compute the signature. |
| `timestamp`integerUnix epoch timestamp used as a nonce for signature computation. Must have no more than ± 60 second offset from NTP.Required if signature parameter is supplied. |

| Responses |
| --- |
| `200`OKSchema — OPTIONALstatus integer — OPTIONALerror boolean — OPTIONALerror_message string — OPTIONAL | Schema—**OPTIONAL** | `status`integer—**OPTIONAL** | `error`boolean—**OPTIONAL** | `error_message`string—**OPTIONAL** |
| Schema—**OPTIONAL** |
| `status`integer—**OPTIONAL** |
| `error`boolean—**OPTIONAL** |
| `error_message`string—**OPTIONAL** |
| `400`Parse error.Schema — OPTIONALstatus integer — OPTIONALerror boolean — OPTIONALerror_message string — OPTIONAL | Schema—**OPTIONAL** | `status`integer—**OPTIONAL** | `error`boolean—**OPTIONAL** | `error_message`string—**OPTIONAL** |
| Schema—**OPTIONAL** |
| `status`integer—**OPTIONAL** |
| `error`boolean—**OPTIONAL** |
| `error_message`string—**OPTIONAL** |
| `403`Do not have permission to deleteSchema — OPTIONALstatus integer — OPTIONALerror boolean — OPTIONALerror_message string — OPTIONAL | Schema—**OPTIONAL** | `status`integer—**OPTIONAL** | `error`boolean—**OPTIONAL** | `error_message`string—**OPTIONAL** |
| Schema—**OPTIONAL** |
| `status`integer—**OPTIONAL** |
| `error`boolean—**OPTIONAL** |
| `error_message`string—**OPTIONAL** |

sub_key
*
Type:
string
Your app's subscribe key from
[Admin Portal](https://admin.pubnub.com)
.
channels
*
Type:
string
The channel names to perform the operation on.
start
Type:
number
Timetoken delimiting the start of time slice (exclusive) to pull messages from. Exclusive means that the message associated with the timetoken will be excluded from the result.

If provided, lets you select a
start
date, in Timetoken format. If not provided, it will default to current time. Page through results by providing a start OR end time token. Retrieve a slice of the time line by providing both a start AND end time token. start is
exclusive
, that is, the first item returned will be the one immediately after the start Timetoken value.
end
Type:
number
Timetoken delimiting the end of time slice (inclusive) to pull messages from. Inclusive means that the message associated with the timetoken will be included in the result.

If provided, lets you select an
end
date, in Timetoken format. Page through results by providing a start OR end time token. Retrieve a slice of the time line by providing both a start AND end time token. End is
inclusive
, that is, if a message is associated exactly with the end Timetoken, it will be included in the result.
auth
Type:
string
String which is either the auth key (Access Manager legacy) or a valid token (
[Access Manager](https://www.pubnub.com/docs/security/access-control/overview.md)
) used to authorize the operation if access control is enabled.
uuid
Type:
string
A UTF-8 encoded string of up to 92 characters used to
[identify the client](https://www.pubnub.com/docs/architecture/core-concepts.md)
.
signature
Type:
string
Signature used to verify that the request was signed with the secret key associated with the subscriber key.

If Access Manager is enabled, either a valid authorization token or a signature are required.

See Access Manager documentation for details on how to compute the signature.
timestamp
Type:
integer
Unix epoch timestamp used as a nonce for signature computation. Must have no more than ± 60 second offset from NTP.

Required if
signature
parameter is supplied.
status
Type:
integer
Example:
200
error
Type:
boolean
Example:
false
error_message
Type:
string
Example:
""
status
Type:
integer
Example:
400
error
Type:
boolean
Example:
true
error_message
Type:
string
Example:
"Parse error"
status
Type:
integer
Example:
403
error
Type:
boolean
Example:
true
error_message
Type:
string
Example:
"Do not have permission to delete"
