GoHighLevel Conversations API

Complete File Upload

POST/conversations/messages/upload/complete

POST /conversations/messages/upload/complete Validates the uploaded file in GCS and returns the public URL. Call this endpoint after successfully uploading the file to the signed URL It takes 5 body fields, requires the conversations/message.write scope.

Request and authentication

Method
POST
Full URL
https://services.leadconnectorhq.com/conversations/messages/upload/complete
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
uploadIdrequiredstring

Upload ID from request response

Example: a1b2c3d4-e5f6-7890-abcd-ef1234567890

filePathrequiredstring

File path from request response

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

locationIdrequiredstring

Location ID

Example: ve9EPM428h8vShlRW1KT

conversationIdrequiredstring

Conversation ID

Example: ve9EPM428h8vShlRW1KT

filenamerequiredstring

Original filename (for response mapping)

Example: video.mp4

Response fields

Top-level fields returned on a successful call.

NameTypeDescription
uploadedFilesrequiredobject

Map of filename to public URL

Example: [object Object]

metadatarequiredobject

File metadata

Example: [object Object]

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/complete' \
  -H 'Authorization: Bearer YOUR_TOKEN' \
  -H 'Version: 2021-07-28' \
  -H 'Content-Type: application/json' \
  -d '{
    "uploadId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "filePath": "location/loc123/conversations/conv456/uuid.mp4",
    "locationId": "ve9EPM428h8vShlRW1KT",
    "conversationId": "ve9EPM428h8vShlRW1KT",
    "filename": "video.mp4"
  }'

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