---
source_url: https://www.pubnub.com/docs/chat/chat-sdk/build/features/messages/history
title: Message history
updated_at: 2026-06-23T11:41:37.664Z
---

> Documentation Index
> For a curated overview of PubNub documentation, see: https://www.pubnub.com/docs/llms.txt
> For the full list of all documentation pages, see: https://www.pubnub.com/docs/llms-full.txt


# Message history

PubNub APIs let you effectively fetch historical messages from direct, group, or public conversations.

While [App Context API](https://www.pubnub.com/docs/general/metadata/basics) lets you manage metadata and relationships between users and channels, enabling efficient tracking of which channels are associated with a given user, [Message Persistence API](https://www.pubnub.com/docs/general/storage) lets you retrieve messages from those channels. Together, these APIs enable you to gather all conversations involving a user and easily fetch specific message histories for any interactions between users.

Use `getHistory()` to fetch past messages from a channel.

:::note API limitation
Results cannot be filtered by message type. All messages within the specified timeframe are returned.
:::

##### Under the hood

`getHistory()` calls Message Persistence API and the JavaScript SDK [fetchMessages()](https://www.pubnub.com/docs/sdks/javascript/api-reference/storage-and-playback#fetch-history) method.

### Method signature

This method takes the following parameters:

```ts
channel.getHistory({
    startTimetoken?: string,
    endTimetoken?: string,
    count?: number
}): Promise<{
    messages: Message[],
    isMore: boolean
}>
```

#### Input

| Parameter | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| startTimetoken | string | Optional |  | [Timetoken](https://www.pubnub.com/docs/sdks/javascript/api-reference/misc#time) delimiting the start of a time slice (exclusive) to pull messages from. For details, refer to the [Fetch History section](https://www.pubnub.com/docs/sdks/javascript/api-reference/storage-and-playback#fetch-history). |
| endTimetoken | string | Optional |  | Timetoken delimiting the end of a time slice (inclusive) to pull messages from. For details, refer to the [Fetch History section](https://www.pubnub.com/docs/sdks/javascript/api-reference/storage-and-playback#fetch-history). |
| count | number | Optional | `25` | Number of historical messages to return for the channel in a single call. Since each call returns all attached [message reactions](https://www.pubnub.com/docs/chat/chat-sdk/build/features/messages/reactions) by default, the maximum number of returned messages is `25`. For more details, refer to the description of the `includeMessageActions` parameter in the [JavaScript SDK docs](https://www.pubnub.com/docs/sdks/javascript/api-reference/storage-and-playback#methods). |

#### Output

| Parameter | Description |
| --- | --- |
| `Promise<>`Type: `object` | Returned object containing two fields: `messages` and `isMore`. |
| `> messages`Type: `Message[]` | Array listing the requested number of historical [Message objects](https://www.pubnub.com/docs/chat/chat-sdk/learn/chat-entities/message). |
| `> isMore`Type: `boolean` | Whether there are any more historical messages to pull. |

By default, each call returns all message actions and metadata attached to the retrieved messages.

### Sample code

From the `support` channel, fetch `10` historical messages older than the timetoken `15343325214676133`.

```ts
// reference the "channel" object
const channel = await chat.getChannel("support")
// invoke the "getHistory()" method on the "channel" object
await channel.getHistory(
    {
        startTimetoken: "15343325214676133",
        count: 10
    }
)
```