GoHighLevel Conversations API
Initiate File Upload
/conversations/messages/upload/initiatePOST /conversations/messages/upload/initiate Initiate file upload to GCS. Generates a signed URL for direct file upload to Google Cloud Storage. Returns a signed URL valid for 15 minutes. Upload file via PUT request, then call /complete to finalize It takes 6 body fields, requires the conversations/message.write scope.
Request and authentication
- Method
POST- Full URL
https://services.leadconnectorhq.com/conversations/messages/upload/initiate- Scopes
conversations/message.write- API version header
Version: 2021-07-28- Schema verified
- 22 June 2026
Request body
JSON body fields. Nested objects are shown indented under their parent.
| Name | Type | Description |
|---|---|---|
locationIdrequired | string | Location ID Example: |
conversationIdrequired | string | Conversation ID Example: |
filenamerequired | string | Original filename with extension Example: |
contentTyperequired | string | MIME type of the file Example: |
fileSize | number | File size in bytes (optional, for pre-validation) Example: |
channelrequired | string | Channel type for size limits (WHATSAPP for 100MB limit, others for 5MB) Example: |
Response fields
Top-level fields returned on a successful call.
| Name | Type | Description |
|---|---|---|
uploadUrlrequired | string | Signed URL for direct upload to GCS. Use PUT request with file content. Example: |
uploadIdrequired | string | Unique upload ID for tracking and completing the upload Example: |
filePathrequired | string | File path in GCS bucket (needed for confirmation endpoint) Example: |
expiresAtrequired | number | URL expiration timestamp (Unix milliseconds) Example: |
maxFileSizerequired | number | Maximum allowed file size in bytes Example: |
Example request
Copy-paste ready. Swap YOUR_TOKEN for your access token or Private Integration Token.
curl -X POST 'https://services.leadconnectorhq.com/conversations/messages/upload/initiate' \
-H 'Authorization: Bearer YOUR_TOKEN' \
-H 'Version: 2021-07-28' \
-H 'Content-Type: application/json' \
-d '{
"locationId": "ve9EPM428h8vShlRW1KT",
"conversationId": "ve9EPM428h8vShlRW1KT",
"filename": "video.mp4",
"contentType": "video/mp4",
"channel": "WHATSAPP"
}'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