ghl_form_upload_custom_files
Upload files to custom fields for a contact. Supports multiple file types and up to 50MB per file.
Instructions
EXCEPTION — no callable body schema: the official spec documents this endpoint's multipart/form-data requestBody as a bare empty object (no fields listed), so this tool's generated input schema has NO body property at all; there is currently no way to attach file bytes through this tool. Per the spec's prose, fields must be a buffer keyed <custom_field_id>_<file_id> (custom field ID + a random file id), max 50MB, one of PDF/DOCX/DOC/JPG/JPEG/PNG/GIF/CSV/XLSX/XLS/MP4/MPEG/ZIP/RAR/TXT/SVG. Fixing this requires a registry.ts change (a hand-written schema override capability that doesn't exist yet), which is out of scope for this docs-only override pass — flagged as an exception in the audit.
Upload files to custom fields
Post the necessary fields for the API to upload files. The files need to be a buffer with the key "< custom_field_id >_< file_id >". Here custom field id is the ID of your custom field and file id is a randomly generated id (or uuid) There is support for multiple file uploads as well. Have multiple fields in the format mentioned.File size is limited to 50 MB. The allowed file types are: PDFDOCXDOCJPGJPEGPNGGIFCSVXLSXXLSMP4MPEGZIPRAR<
Endpoint: POST /forms/upload-custom-files (Version header: v3; source: v3/forms-v3.json)
OAuth scopes: forms.write
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| body | Yes | Request body. The official spec provides no field-level schema for this body; pass fields as documented. For multipart uploads, file values may be given as { filePath, filename?, mimeType? } objects. | |
| contactId | Yes | Contact ID to upload the file to. | |
| locationId | Yes | Location ID of the contact. |