GoHighLevel Conversations API

Initiate File Upload

POST/conversations/messages/upload/initiate

POST /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.

NameTypeDescription
locationIdrequiredstring

Location ID

Example: ve9EPM428h8vShlRW1KT

conversationIdrequiredstring

Conversation ID

Example: ve9EPM428h8vShlRW1KT

filenamerequiredstring

Original filename with extension

Example: video.mp4

contentTyperequiredstring

MIME type of the file

Example: video/mp4

fileSizenumber

File size in bytes (optional, for pre-validation)

Example: 52428800

channelrequiredstring

Channel type for size limits (WHATSAPP for 100MB limit, others for 5MB)

Example: WHATSAPP

Response fields

Top-level fields returned on a successful call.

NameTypeDescription
uploadUrlrequiredstring

Signed URL for direct upload to GCS. Use PUT request with file content.

Example: https://storage.googleapis.com/bucket/path?X-Goog-Algorithm=...

uploadIdrequiredstring

Unique upload ID for tracking and completing the upload

Example: a1b2c3d4-e5f6-7890-abcd-ef1234567890

filePathrequiredstring

File path in GCS bucket (needed for confirmation endpoint)

Example: location/loc123/conversations/conv456/uuid.mp4

expiresAtrequirednumber

URL expiration timestamp (Unix milliseconds)

Example: 1701619200000

maxFileSizerequirednumber

Maximum allowed file size in bytes

Example: 104857600

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