HighLevel: Get messages by conversation id
HighLevel conversations.getMessages: arguments, response, policy and SDK examples.
← Conversations operations · Get started
Operation gohighlevel.get_messages
Provider route: GET /conversations/{conversationId}/messages. Alter supplies the connection’s credentials and routing.
Call through Alter
Section titled “Call through Alter”Install @alter-ai/sdk @alter-ai/gohighlevel with npm, or alter-sdk-gohighlevel with pip. Supply your connected customer’s grant ID and the arguments described below.
import { App } from "@alter-ai/sdk";import { HighLevelIntegration } from "@alter-ai/gohighlevel";
async function execute(input: Parameters<HighLevelIntegration["conversations"]["getMessages"]>[0]) { const app = new App({ apiKey: process.env.ALTER_API_KEY! }); try { const provider = new HighLevelIntegration(app, { grantId: process.env.PROVIDER_GRANT_ID! }); const call = await provider.conversations.getMessages(input); const result = await call.wait(); return result.bodyJson(); } finally { await app.close(); }}import osfrom alter_sdk import Appfrom alter_sdk_gohighlevel import HighLevelIntegration
async def execute(arguments): async with App(api_key=os.environ["ALTER_API_KEY"]) as app: provider = HighLevelIntegration(app, {"grant_id": os.environ["PROVIDER_GRANT_ID"]}) call = await provider.conversations.get_messages(arguments) result = await call.wait() return result.body_json()| Field | Type | Presence | Description and constraints |
|---|---|---|---|
$ | object | Root | Additional keys: not allowed |
path | object | Required within parent | Additional keys: not allowed |
path.conversationId | string | Required within parent | |
query | object | Optional | Additional keys: not allowed |
query.lastMessageId | string | Optional | |
query.limit | number | Optional | |
query.type | string | Optional | One of: TYPE_CALL, TYPE_SMS, TYPE_RCS, TYPE_EMAIL, TYPE_FACEBOOK, TYPE_GMB, TYPE_INSTAGRAM, TYPE_WHATSAPP, TYPE_ACTIVITY_APPOINTMENT, TYPE_ACTIVITY_CONTACT, TYPE_ACTIVITY_INVOICE, TYPE_ACTIVITY_PAYMENT, TYPE_ACTIVITY_OPPORTUNITY, TYPE_LIVE_CHAT, TYPE_INTERNAL_COMMENTS, TYPE_ACTIVITY_EMPLOYEE_ACTION_LOG, TYPE_TIKTOK, TYPE_ACTIVITY_WHATSAPP, TYPE_FORM_SUBMISSION |
Response
Section titled “Response”Response media type: application/json. The table describes the pinned successful response. Referenced models link to their complete fields.
| Field | Type | Presence | Description and constraints |
|---|---|---|---|
$ | Model | Root | Expand Get messages by conversation id — response body |
Referenced models: Get messages by conversation id — response body
Schemas
Section titled “Schemas”Get messages by conversation id — response body
| Field | Type | Presence | Description and constraints |
|---|---|---|---|
$ | object | Root | |
lastMessageId | string | Required within parent | Id of the last message in the messages array |
messages | array | Required within parent | Array of messages |
messages[] | Model | Each item | Expand Get message by message id — response body |
nextPage | boolean | Required within parent | Next page value true indicates only 20 message is in the response. Rest of the messages are in the next page. Please use the lastMessageId value in the query to get the next page messages |
Referenced models: Get message by message id — response body
Get message by message id — response body
| Field | Type | Presence | Description and constraints |
|---|---|---|---|
$ | object | Root | |
attachments | array | Optional | An array of attachment URLs. Attachments will be empty for Call and Voicemails, type 1 and 10. Please use get call recording API to fetch call recording and voicemails. |
attachments[] | string | Each item | |
body | string | Optional | Body content of the message |
chatWidgetId | string | Optional | Chat Widget Id |
contactId | string | Required within parent | Contact ID associated with the message |
contentType | string | Required within parent | Content type of the message body |
conversationId | string | Required within parent | Conversation ID associated with the message |
conversationProviderId | string | Optional | Conversation Provider Id |
dateAdded | string | Required within parent | Timestamp when the message was created |
direction | string | Required within parent | Direction of the message Known values: inbound, outbound |
id | string | Required within parent | Unique identifier for the message |
locationId | string | Required within parent | Location ID associated with the message |
messageType | string | Required within parent | Type of the message as a string Known values: TYPE_CALL, TYPE_SMS, TYPE_RCS, TYPE_EMAIL, TYPE_SMS_REVIEW_REQUEST, TYPE_WEBCHAT, TYPE_SMS_NO_SHOW_REQUEST, TYPE_CAMPAIGN_SMS, TYPE_CAMPAIGN_CALL, TYPE_CAMPAIGN_EMAIL, TYPE_CAMPAIGN_VOICEMAIL, TYPE_FACEBOOK, TYPE_CAMPAIGN_FACEBOOK, TYPE_CAMPAIGN_MANUAL_CALL, TYPE_CAMPAIGN_MANUAL_SMS, TYPE_GMB, TYPE_CAMPAIGN_GMB, TYPE_REVIEW, TYPE_INSTAGRAM, TYPE_WHATSAPP, TYPE_CUSTOM_SMS, TYPE_CUSTOM_EMAIL, TYPE_CUSTOM_PROVIDER_SMS, TYPE_CUSTOM_PROVIDER_EMAIL, TYPE_IVR_CALL, TYPE_ACTIVITY_CONTACT, TYPE_ACTIVITY_INVOICE, TYPE_ACTIVITY_PAYMENT, TYPE_ACTIVITY_OPPORTUNITY, TYPE_LIVE_CHAT, TYPE_LIVE_CHAT_INFO_MESSAGE, TYPE_ACTIVITY_APPOINTMENT, TYPE_FACEBOOK_COMMENT, TYPE_INSTAGRAM_COMMENT, TYPE_CUSTOM_CALL, TYPE_INTERNAL_COMMENT, TYPE_ACTIVITY_EMPLOYEE_ACTION_LOG, TYPE_TIKTOK, TYPE_TIKTOK_COMMENT, TYPE_ACTIVITY_WHATSAPP, TYPE_FORM_SUBMISSION, TYPE_SMS_REACTION |
meta | Model | Optional | Expand Get message by message id — response body — meta Additional metadata associated with the message |
source | string | Optional | Message source Known values: workflow, bulk_actions, campaign, api, app |
status | string | Optional | Delivery status of the message Known values: connected, delivered, failed, opened, pending, read, scheduled, sent, undelivered, clicked, opt_out, queued |
type | JSON | Required within parent | |
type (anyOf 1) | number | Alternative | Numeric message type code |
type (anyOf 2) | string | Alternative | Pattern: ^-?[0-9]+(?:\.[0-9]+)?(?:[eE][+-]?[0-9]+)?$ |
userId | string | Optional | User Id |
Referenced models: Get message by message id — response body — meta
Get message by message id — response body — meta
| Field | Type | Presence | Description and constraints |
|---|---|---|---|
$ | object | Root | |
callDuration | string | Optional | Call duration in seconds |
callStatus | string | Optional | Call status - can be pending, completed, answered, busy, no-answer, failed, canceled, or voicemail Known values: pending, completed, answered, busy, no-answer, failed, canceled, voicemail |
email | object | Optional | meta will contain email, for message type 3 (email). messageIds is list of all email message ids under the message thread |
Policy, approvals and errors
Section titled “Policy, approvals and errors”SDK function policy ID: gohighlevel.get_messages. Catalog operation: get-messages. Rules can name either ID; function rules distinguish managed calls and conservatively cover raw calls sharing the route. Existing grant permissions and policy rules apply. wait() returns an immediate result or waits for a required approval; it never approves the request itself. Persist the approval ID to resume after a restart.
Provider errors retain their response; JSON decoding raises ProviderAPIError for provider failures. ManagedOperationError identifies contract/input/retention errors. See error handling and provider-specific behavior. Sensitive input may be refused before approval storage. A decoding error never resubmits a write.
Required provider scopes: ["conversations/message.readonly"]
Pinned headers: {"Version": "v3"}