GoHighLevel Conversations API
Update Message Status
/conversations/messages/:messageId/statusPUT /conversations/messages/:messageId/status Post the necessary fields for the API to update message status It takes 1 path parameter and 4 body fields, requires the conversations/message.write scope and authenticates with a sub-account (location) token.
Request and authentication
- Method
PUT- Full URL
https://services.leadconnectorhq.com/conversations/messages/:messageId/status- Scopes
conversations/message.write- Token type
- Sub-account (location) token
- Accepted auth
- OAuth Access Token, Private Integration Token
- API version header
Version: 2021-07-28- Schema verified
- 22 June 2026
Path parameters
Substituted into the URL. Required by definition.
| Name | Type | Description |
|---|---|---|
messageIdrequired | string | Example: |
Request body
JSON body fields. Nested objects are shown indented under their parent.
| Name | Type | Description |
|---|---|---|
statusrequired | string | Message status One of: Example: |
error | unknown | Error object from the conversation provider |
emailMessageId | string | Email message Id Example: |
recipients | array | Email delivery status for additional email recipients. |
Response fields
Top-level fields returned on a successful call.
| Name | Type | Description |
|---|---|---|
conversationIdrequired | string | Conversation ID. Example: |
emailMessageId | string | This contains the email message id (only for Email type). Use this ID to send inbound replies to GHL to create a threaded email. Example: |
messageIdrequired | string | This is the main Message ID Example: |
messageIds | array | When sending via the GMB channel, we will be returning list of messageIds instead of single messageId. |
msg | string | Additional response message when sending a workflow message Example: |
forwardData | unknown | Optional metadata for forwarded email Example: |
statusrequired | string | Message status One of: Example: |
Example request
Copy-paste ready. Swap YOUR_TOKEN for your access token or Private Integration Token, and the sample ID for your own.
curl -X PUT 'https://services.leadconnectorhq.com/conversations/messages/ve9EPM428h8vShlRW1KT/status' \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Version: 2021-07-28' \
-H 'Content-Type: application/json' \
-d '{
"status": "read"
}'Skip the schema lookup
Hylo gives your AI agent this schema — and the other 52 documented here — without you looking anything up. Ask in plain English; it picks the endpoint, fills the body, and can run the call against your own sub-account.
More conversations endpoints
- Add An Inbound MessagePOST /conversations/messages/inbound
- Add An Outbound MessagePOST /conversations/messages/outbound
- Add Message AttachmentsPUT /conversations/messages/:messageId/attachments
- Complete File UploadPOST /conversations/messages/upload/complete
- Create ConversationPOST /conversations/
- Create Custom SubtypePOST /conversations/preferences/custom-subtypes
- All GoHighLevel Conversations endpointsCategory index
- GoHighLevel API referenceEvery category, webhooks, and OAuth scopes