GoHighLevel API reference
Conversations API
The GoHighLevel Conversations API has 21 documented endpoints here, covering GET, POST and PUT requests. Conversations hold the inbound and outbound message history for a contact across the channels a location has connected. These endpoints send messages, manage threads, handle file uploads, and post review replies.
Every page below carries the full parameter list, the response shape, the OAuth scope, and a curl you can paste into a terminal. Base URL: https://services.leadconnectorhq.com
All conversations endpoints
| Endpoint | Method | Path | Scope |
|---|---|---|---|
| Add An Inbound Message | POST | /conversations/messages/inbound | conversations/message.write |
| Add An Outbound Message | POST | /conversations/messages/outbound | conversations/message.write |
| Add Message Attachments | PUT | /conversations/messages/:messageId/attachments | conversations/message.write |
| Complete File Upload | POST | /conversations/messages/upload/complete | conversations/message.write |
| Create Conversation | POST | /conversations/ | conversations.write |
| Create Custom Subtype | POST | /conversations/preferences/custom-subtypes | — |
| Export Messages By Location | GET | /conversations/messages/export | conversations/message.readonly |
| Get All Custom Subtypes | GET | /conversations/preferences/custom-subtypes | — |
| Get Contact Unsubscription Status | GET | /conversations/preferences/unsubscriptions/status | — |
| Get Conversation | GET | /conversations/:conversationId | conversations.readonly |
| Get Message Transcription | GET | /conversations/locations/:locationId/messages/:messageId/transcription | conversations/message.readonly |
| Initiate File Upload | POST | /conversations/messages/upload/initiate | conversations/message.write |
| Live Chat Agent Typing | POST | /conversations/providers/live-chat/typing | conversations/livechat.write |
| Search Conversation | GET | /conversations/search | conversations.readonly |
| Send A New Message | POST | /conversations/messages | conversations/message.write |
| Send Review Reply | POST | /conversations/messages/review-reply | conversations/message.write |
| Update Conversation | PUT | /conversations/:conversationId | conversations.write |
| Update Custom Subtype | PUT | /conversations/preferences/custom-subtypes/:id | — |
| Update Message Status | PUT | /conversations/messages/:messageId/status | conversations/message.write |
| Upload File Attachments | POST | /conversations/messages/upload | conversations/message.write |
| User Subscription Change | POST | /conversations/preferences/unsubscriptions/user-change | — |
Skip the schema lookup
Hylo hands these schemas to your AI agent over MCP, so it picks the right conversations endpoint and fills the body correctly the first time — then executes the call against your own sub-account when you approve it.
Elsewhere in the reference