> ## Documentation Index
> Fetch the complete documentation index at: https://developer.rocket.chat/llms.txt
> Use this file to discover all available pages before exploring further.
# Get Thread Messages
> Get thread messages.
Use `aroundId` to load the replies surrounding a specific message. When you provide `aroundId`, the server calculates the page offset around that message instead of using the requested `offset`, and returns the calculated value in the response. Hidden message-history records are excluded from the returned messages and pagination totals.
### Changelog
| Version | Description |
| ------------ | ------------|
| 8.8.0 | Added the `aroundId` parameter and excluded hidden message-history records from results and pagination totals |
| 1.2.0 | Remove `tlm` field which is not supported |
| 1.1.0 | Update example results - original message in thread is not returned |
| 1.0.0 | Added |
## OpenAPI
````json GET /api/v1/chat.getThreadMessages
{
"openapi": "3.0.0",
"info": {
"version": "1.0.0",
"title": "Messaging"
},
"servers": [
{
"url": "https://apiexplorer.support.rocket.chat"
}
],
"tags": [
{
"name": "Chat"
},
{
"name": "Direct Messages"
},
{
"name": "Auto-Translate"
}
],
"paths": {
"/api/v1/chat.getThreadMessages": {
"get": {
"tags": [
"Chat"
],
"summary": "Get Thread Messages",
"description": "Get thread messages.\n\nUse `aroundId` to load the replies surrounding a specific message. When you provide `aroundId`, the server calculates the page offset around that message instead of using the requested `offset`, and returns the calculated value in the response. Hidden message-history records are excluded from the returned messages and pagination totals.\n\n### Changelog\n| Version | Description | \n| ------------ | ------------|\n| 8.8.0 | Added the `aroundId` parameter and excluded hidden message-history records from results and pagination totals |\n| 1.2.0 | Remove `tlm` field which is not supported |\n| 1.1.0 | Update example results - original message in thread is not returned |\n| 1.0.0 | Added |",
"operationId": "get-api-v1-chat.getThreadMessages",
"parameters": [
{
"$ref": "#/components/parameters/Auth-Token"
},
{
"$ref": "#/components/parameters/UserId"
},
{
"$ref": "#/components/parameters/offset"
},
{
"$ref": "#/components/parameters/count"
},
{
"$ref": "#/components/parameters/sort"
},
{
"$ref": "#/components/parameters/query"
},
{
"$ref": "#/components/parameters/fields"
},
{
"name": "tmid",
"in": "query",
"description": "The thread message ID.",
"required": "true",
"schema": {
"type": "string"
},
"example": "7aDSXtjMA3KPLxLjt"
},
{
"name": "aroundId",
"in": "query",
"description": "The ID of the thread's main message or one of its replies. The endpoint returns a page of replies surrounding this message. When you provide this parameter, the server calculates the page offset and ignores the requested `offset` value. The message must belong to the thread specified by `tmid`.",
"required": "false",
"schema": {
"type": "string"
},
"example": "GfhiiJjcjKFyYMuMY"
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"messages": {
"type": "array",
"items": {
"type": "object",
"properties": {
"_id": {
"type": "string"
},
"rid": {
"type": "string"
},
"msg": {
"type": "string"
},
"ts": {
"type": "string"
},
"u": {
"type": "object",
"properties": {
"_id": {
"type": "string"
},
"username": {
"type": "string"
},
"name": {
"type": "string"
}
}
},
"_updatedAt": {
"type": "string"
},
"mentions": {
"type": "array",
"items": {
"type": "object"
}
},
"channels": {
"type": "array",
"items": {
"type": "object"
}
},
"replies": {
"type": "array",
"items": {
"type": "string"
}
},
"tcount": {
"type": "integer"
},
"tlm": {
"type": "string"
},
"tmid": {
"type": "string"
}
}
}
},
"count": {
"type": "integer",
"description": "The number of visible replies returned in this response."
},
"offset": {
"type": "integer",
"description": "The starting offset of the returned page. When you provide `aroundId`, this is the offset calculated by the server."
},
"total": {
"type": "integer",
"description": "The total number of visible replies in the thread. Hidden message-history records are excluded."
},
"success": {
"type": "boolean"
}
}
},
"examples": {
"Example": {
"value": {
"messages": [
{
"_id": "gcGai9bRREqokjyPc",
"rid": "GENERAL",
"msg": "Test",
"ts": "2019-04-08T13:15:52.017Z",
"u": {
"_id": "p4a8YxvLQEHmiBKTS",
"username": "marc.dev",
"name": "Marc Dev"
},
"_updatedAt": "2019-04-08T14:40:27.789Z",
"mentions": [],
"channels": [],
"replies": [
"p4a8YxvLQEHmiBKTS"
],
"tcount": "5",
"tlm": "2019-04-08T14:40:27.724Z"
},
{
"_id": "GfhiiJjcjKFyYMuMY",
"rid": "GENERAL",
"tmid": "gcGai9bRREqokjyPc",
"msg": "This is a test!",
"ts": "2019-04-08T13:20:22.238Z",
"u": {
"_id": "p4a8YxvLQEHmiBKTS",
"username": "marc.dev",
"name": "Marc Dev"
},
"_updatedAt": "2019-04-08T13:20:22.265Z",
"mentions": [],
"channels": []
}
],
"count": "2",
"offset": "0",
"total": "2",
"success": "true"
}
}
}
}
}
},
"401": {
"$ref": "#/components/responses/authorizationError"
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"success": {
"type": "boolean"
},
"error": {
"type": "string"
},
"errorType": {
"type": "string"
}
}
},
"examples": {
"Missing parameter": {
"value": {
"success": "false",
"error": "The required \"tmid\" query param is missing. [error-invalid-params]",
"errorType": "error-invalid-params"
}
},
"Invalid Message": {
"value": {
"success": "false",
"error": "Invalid Message [error-invalid-message]",
"errorType": "error-invalid-message"
}
},
"Invalid aroundId": {
"value": {
"success": "false",
"error": "The provided \"aroundId\" does not belong to the thread [error-invalid-message]",
"errorType": "error-invalid-message"
}
}
}
}
}
}
}
}
}
},
"components": {
"parameters": {
"Auth-Token": {
"name": "X-Auth-Token",
"in": "header",
"description": "The `authToken` of the authenticated user.",
"required": "true",
"schema": {
"type": "string"
},
"example": "RScctEHSmLGZGywfIhWyRpyofhKOiMoUIpimhvheU3f"
},
"UserId": {
"name": "X-User-Id",
"in": "header",
"description": "The `userId` of the authenticated user.",
"required": "true",
"schema": {
"type": "string"
},
"example": "rbAXPnMktTFbNpwtJ"
},
"offset": {
"name": "offset",
"in": "query",
"description": "Number of items to \"skip\" in the query, i.e. requests return count items, skipping the first offset items. Refer to the [official documentation](https://developer.rocket.chat/apidocs/query-parameters#pagination) to learn more.",
"required": "false",
"schema": {
"type": "integer"
},
"example": "50"
},
"count": {
"name": "count",
"in": "query",
"description": "The number of items to return. Refer to the [official documentation](https://developer.rocket.chat/apidocs/query-parameters#pagination) to learn more.",
"required": "false",
"schema": {
"type": "integer"
},
"example": "50"
},
"sort": {
"name": "sort",
"in": "query",
"description": "List of fields to order by, and in which direction. This is a JSON object, with properties listed in desired order, with values of 1 for ascending, or -1 for descending. For example, `{ \"value\": -1, \"_id\": 1 }`. Refer to the [official documentation](https://developer.rocket.chat/apidocs/query-parameters#pagination) to learn more.",
"required": "false",
"schema": {}
},
"query": {
"name": "query",
"in": "query",
"description": "This parameter allows you to use MongoDB query operators to search for specific data. For example, to query users with a name that contains the letter \"g\": query=`{ \"name\": { \"$regex\": \"g\" }}`. Refer to the [official documentation](https://developer.rocket.chat/apidocs/query-parameters#query-and-fields) to learn more.",
"required": "false",
"schema": {}
},
"fields": {
"name": "fields",
"in": "query",
"description": "This parameter accepts a JSON object with properties that have a value of 1 or 0 to include or exclude them in the response. For example, to only retrieve the usernames of users: fields=`{ \"username\": 1 }`. Refer to the [official documentation](https://developer.rocket.chat/apidocs/query-parameters#query-and-fields) to learn more.",
"required": "false",
"schema": {
"type": "string"
}
}
},
"responses": {
"authorizationError": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"status": {
"type": "string"
},
"message": {
"type": "string"
}
}
},
"examples": {
"Authorization Error": {
"value": {
"status": "error",
"message": "You must be logged in to do this."
}
}
}
}
}
}
}
}
}
````