• Tools
  • Tools
loading...
No Results
Home > Documentation

Highlevel

1. Overview

HighLevel (LeadConnector) provides CRM, tasks, opportunities, calendars, and appointments. The GoInsight HighLevel tool exposes the actions defined under api/highlevel/dsl/. The sections below list Start node inputs and End node outputs exactly as in each DSL file.

  • Contacts: Upsert, get, list, update, and delete.
  • Tasks: Create, get, list, update, and delete.
  • Opportunities: Create, get, update, and delete.
  • Calendar & appointments: Free slots and book appointment (including optional AdditionalFields).

2. Prerequisites

Before using this node, configure a valid account and credentials in GoInsight. Some operations require API keys or OAuth tokens with scopes that cover the action.

3. Credentials

For detailed guidance on how to obtain and configure credentials, see Credentials Configuration Guide.

4. Supported Operations

Summary

Resource Operation Description
Appointment Book an Appointment Books an appointment for a contact in HighLevel calendar
Task Create a Task Creates a new task for a contact in HighLevel platform
Opportunity Create an Opportunity Creates a new opportunity in HighLevel platform
Contact Delete a Contact Deletes a specific contact from HighLevel platform using the contact ID. This operation cannot be undone.
Task Delete a Task Permanently deletes a HighLevel task for the given contact. Cannot be undone. This workflow does not prompt for confirmation—the DELETE request is sent as soon as the action runs; verify ContactId and TaskId before invoking.
Opportunity Delete an Opportunity Permanently deletes a HighLevel opportunity by OpportunityId. Cannot be undone. This workflow does not prompt for confirmation—the DELETE request is sent as soon as the action runs; verify OpportunityId (e.g. from Search Opportunities or Get Many Opportunities) before invoking.
Calendar Get Calendar Free Slots Retrieves available time slots for a calendar in HighLevel platform
Contact Get Many Contacts Retrieves a list of contacts from HighLevel platform with pagination and filtering support
Task Get Many Tasks Retrieves a list of tasks from HighLevel platform with pagination support
Contact Get a Contact Retrieves detailed information about a specific contact from HighLevel platform using the contact ID. This function returns comprehensive contact data including personal information, contact details, tags, and custom fields.
Task Get a Task Retrieves detailed information about a specific task from HighLevel platform
Opportunity Get an Opportunity Retrieves detailed information about a specific opportunity from HighLevel platform
Contact Update a Contact Updates an existing contact information in HighLevel platform
Task Update a Task Updates an existing task information in HighLevel platform
Opportunity Update an Opportunity Updates an existing opportunity information in HighLevel platform
Contact Upsert a Contact Creates a new contact or updates an existing contact in HighLevel platform

Total: 16 API Operations — Parameters and output names/types match api/highlevel/dsl/*.json Start / End nodes.

Operation Details

Book an Appointment

Source DSL: api/highlevel/dsl/Book_an_Appointment.json

Books an appointment for a contact in HighLevel calendar

Input Parameters:

  • CalendarId (string, required)
    • Calendar ID. Can be obtained from Get Calendars API or found in HighLevel dashboard under Settings > Calendars. Example: HFytWWELgzPQni9Fql9R
  • LocationId (string, required)
    • The HighLevel sub-account location identifier for this booking. Retrieve it using Get Locations or copy it from agency or sub-account settings in the dashboard. Example: exf5ABy34KMLAk4ENO5I
  • ContactId (string, required)
    • Contact ID. Can be obtained from Search Contacts or Get Contact API. Example: w3sKJchjQ1lzboiDCYlj
  • StartTime (string, required)
    • Appointment start time in ISO 8601 format with timezone. Examples: With timezone: 2021-06-23T14:30:00+08:00 (Beijing time), UTC format: 2021-06-23T06:30:00Z. If timezone is omitted, the location's default timezone will be used.
  • AssignedUserId (string, required)
    • Team member user ID responsible for this appointment. Can be obtained from Get Users API or HighLevel team settings. Example: J4BnNFA506mZsXcFz4bN

Options:

  • AdditionalFields (object, optional) — default: {}
    • Optional object for EndTime (string ISO 8601), Title (string), Description (string), IgnoreDateRange (bool, default false), IgnoreFreeSlotValidation (bool, default false), ToNotify (bool, default true when key omitted). CamelCase API-style keys (endTime, ignoreDateRange) are also accepted.

Output:

  • AppointmentId (string)
    • The unique ID of the created appointment. Use this ID to update or cancel the appointment later. Empty string if creation failed.
  • Success (bool)
    • Boolean flag indicating whether the appointment was successfully created. True = success, False = failed. Check ErrorMessage for failure details.
  • OriginalStatusCode (number)
    • The original HTTP status code returned by HighLevel API. 0 means request did not reach upstream (timeout/connection error). Use for debugging.
  • StatusCode (number)
    • System operation status code. 200 = system healthy (including API business errors reflected in ErrorMessage), 500 = system error (network failure, timeout, code crash), -1 = parameter validation error (request not sent).
  • ErrorMessage (string)
    • Error description message. Empty string if the operation completed successfully. Contains specific error details when StatusCode is non-200 or when the upstream API returns a business error.

Create a Task

Source DSL: api/highlevel/dsl/Create_a_Task.json

Creates a new task for a contact in HighLevel platform

Input Parameters:

  • ContactId (string, required)
    • Unique identifier for the contact. Can be obtained via Search Contacts or Get Contact. Example: w3sKJchjQ1lzboiDCYlj
  • Title (string, required)
    • Task title. Short description of the task, recommended <= 100 characters. Example: Follow up with lead about pricing
  • DueDate (string, required)
    • Task due date. Supported formats: Date only (2025-12-25, treated as 00:00 UTC), Date+Time (2025-12-25T14:30:00Z), or Unix timestamp in milliseconds (1735084800000). Timezone defaults to UTC. Relative times are not supported. Example: 2025-12-25 or 2025-12-25T14:30:00Z

Options:

  • Body (string, optional)
    • Detailed task description. Supports plain text or Markdown, up to 5000 characters. Example: Contact expressed interest in Enterprise plan. Need to prepare custom quote.
  • Completed (bool, optional) — default: false
    • Whether the task is completed. Default is false. Usually kept as default when creating, unless importing historical completed tasks.

Output:

  • TaskId (string)
    • Unique identifier of the newly created task. Format is HighLevel internal ID (e.g., tsk_w3sKJchjQ1lzboiDCYlj). Can be used for subsequent Update Task or Delete Task operations. Non-empty on success, empty string on failure.
  • OriginalStatusCode (number)
    • Raw HTTP status code from the upstream API. 0 means the request was not sent.
  • StatusCode (number)
    • System operation status code. 200 = system healthy (including API business errors reflected in ErrorMessage), 500 = system error (network failure, timeout, code crash), -1 = parameter validation error (request not sent).
  • ErrorMessage (string)
    • Error description message. Empty string if the operation completed successfully. Contains specific error details when StatusCode is non-200 or when the upstream API returns a business error.

Create an Opportunity

Source DSL: api/highlevel/dsl/Create_an_Opportunity.json

Creates a new opportunity in HighLevel platform

Input Parameters:

  • PipelineId (string, required)
    • The unique identifier of the sales pipeline where this opportunity will be created. Each pipeline represents a different sales process (e.g., 'New Business', 'Renewals'). You can get available pipeline IDs by calling the 'Get Pipelines' action. Example: "1234567890"
  • LocationId (string, required)
    • The unique identifier of the HighLevel location (sub-account) where this opportunity will be created. You can get your location ID from the 'Get Locations' action or from your HighLevel dashboard settings. Example: "exf5ABy34KMLAk4ENO5I"
  • ContactId (string, required)
    • The unique identifier of the contact to associate with this opportunity. This ID can be obtained from the 'Search Contacts' or 'Get Contact' action. If you don't have a contact yet, create one first using 'Create Contact' action. Example: "w3sKJchjQ1lzboiDCYlj"
  • Name (string, required)
    • The name/title of the opportunity. This should be a descriptive label that helps identify the deal (e.g., 'Q1 Enterprise License', 'Website Redesign Project'). Maximum 255 characters. Example: "Enterprise Software License - Acme Corp"

Options:

  • MonetaryValue (number, optional) — default: 0
    • The monetary value of the opportunity in USD (United States Dollars). Supports decimal values (e.g., 1500.50 for $1,500.50). If not provided, defaults to 0. This value is used for pipeline reporting and forecasting. Example: 5000.00
  • Status (string, optional) — default: open
    • The current status of the opportunity. Possible values:
    • - 'open': Active opportunity being worked on (default)
    • - 'won': Successfully closed deal
    • - 'lost': Lost to competitor or declined
    • - 'abandoned': No longer pursuing
    • Note: 'all' is not a valid status for creating opportunities (it's only used for filtering in search queries). Example: "open"

Output:

  • OpportunityId (string)
    • The unique identifier of the newly created opportunity. Use this ID to update, retrieve, or delete the opportunity in subsequent actions. Empty string if creation failed.
  • Success (bool)
    • Indicates whether the opportunity was successfully created. True if StatusCode is 200 and ErrorMessage is empty; False otherwise.
  • OriginalStatusCode (number)
    • The original HTTP status code returned by the HighLevel API. Default 0 means the request did not reach upstream (e.g., timeout). Use for debugging.
  • StatusCode (number)
    • System operation status code. 200 = system healthy (including API business errors reflected in ErrorMessage), 500 = system error (network failure, timeout, code crash), -1 = parameter validation error (request not sent).
  • ErrorMessage (string)
    • Error description message. Empty string if the operation completed successfully. Contains specific error details when StatusCode is non-200 or when the upstream API returns a business error.

Delete a Contact

Source DSL: api/highlevel/dsl/Delete_a_Contact.json

Deletes a specific contact from HighLevel platform using the contact ID. This operation cannot be undone.

Input Parameters:

  • ContactId (string, required)
    • The HighLevel contact record identifier to permanently remove. This tool does not show a confirmation prompt—calling the action immediately issues the DELETE to HighLevel. Irreversible; verify the ID first (e.g. Get a Contact). Example: "w3sKJchjQ1lzboiDCYlj"

Output:

  • OriginalStatusCode (number)
    • The original HTTP status code returned by the HighLevel API. Default 0 means the request did not reach upstream (e.g., timeout). Use for debugging. Common values: 200=Success, 401=Invalid token, 404=Contact not found, 429=Rate limited.
  • StatusCode (number)
    • System operation status code. 200 = system healthy (including API business errors reflected in ErrorMessage), 500 = system error (network failure, timeout, code crash), -1 = parameter validation error (request not sent).
  • ErrorMessage (string)
    • Error description message. Empty string if the operation completed successfully. Contains specific error details when StatusCode is non-200 or when the upstream API returns a business error.

Delete a Task

Source DSL: api/highlevel/dsl/Delete_a_Task.json

Permanently deletes a HighLevel task for the given contact. Cannot be undone. This workflow does not prompt for confirmation—the DELETE request is sent as soon as the action runs; verify ContactId and TaskId before invoking.

Input Parameters:

  • ContactId (string, required)
    • The unique identifier of the contact in HighLevel. This ID can be obtained from: Get Contact by Email/Phone action (recommended for lookup), Create Contact action (returns the new contact's ID), or List Contacts action (for batch operations). Format: A mix of letters and numbers (e.g., 'w3sKJchjQ1lzboiDCYlj'). This is NOT the contact's email or phone number. This workflow does not prompt for confirmation before deleting the task.
  • TaskId (string, required)
    • The unique identifier of the task to be deleted. This ID can be obtained from: Get Tasks action (list all tasks for a contact), Create Task action (returns the new task's ID), or Search Tasks action (find tasks by criteria). Format: A sequence of digits (e.g., '1234567890'). No confirmation step: invoking this action immediately deletes the task via the API. WARNING: Permanent and cannot be undone.

Output:

  • OriginalStatusCode (number)
    • The original HTTP status code returned by the HighLevel API. Default 0 means the request did not reach upstream (e.g., timeout). Use for debugging. Common values: 200=Success, 401=Invalid token, 404=Task not found, 429=Rate limited.
  • StatusCode (number)
    • System operation status code. 200 = system healthy (including API business errors reflected in ErrorMessage), 500 = system error (network failure, timeout, code crash), -1 = parameter validation error (request not sent).
  • ErrorMessage (string)
    • Error description message. Empty string if the operation completed successfully. Contains specific error details when StatusCode is non-200 or when the upstream API returns a business error.

Delete an Opportunity

Source DSL: api/highlevel/dsl/Delete_an_Opportunity.json

Permanently deletes a HighLevel opportunity by OpportunityId. Cannot be undone. This workflow does not prompt for confirmation—the DELETE request is sent as soon as the action runs; verify OpportunityId (e.g. from Search Opportunities or Get Many Opportunities) before invoking.

Input Parameters:

  • OpportunityId (string, required)
    • The unique identifier of the opportunity to delete. This ID can be obtained from 'Search Opportunities' or 'Get Many Opportunities' actions. Format: alphanumeric string (e.g., '1234567890abcdef'). Example: '1234567890'. This tool does not show a confirmation prompt—calling the action immediately issues the DELETE to HighLevel. Irreversible.

Output:

  • OriginalStatusCode (number)
    • The original HTTP status code returned by the HighLevel API. Default 0 means the request did not reach upstream (e.g., timeout). Use for debugging. Common values: 200=Success, 401=Invalid token, 404=Opportunity not found, 429=Rate limited.
  • StatusCode (number)
    • System operation status code. 200 = system healthy (including API business errors reflected in ErrorMessage), 500 = system error (network failure, timeout, code crash), -1 = parameter validation error (request not sent).
  • ErrorMessage (string)
    • Error description message. Empty string if the operation completed successfully. Contains specific error details when StatusCode is non-200 or when the upstream API returns a business error.

Get Calendar Free Slots

Source DSL: api/highlevel/dsl/Get_Calendar_Free_Slots.json

Retrieves available time slots for a calendar in HighLevel platform

Input Parameters:

  • CalendarId (string, required)
    • Calendar ID. You can get this ID by:
    • 1. Calling List Calendars action to retrieve all calendars
    • 2. Copying from HighLevel dashboard: Settings > Calendars > (select calendar) > URL contains the ID
    • Example: "1234567890abcdef"
  • StartDate (string, required)
    • Start date in Unix timestamp milliseconds format.
    • How to convert:
    • - Excel: =(A1-DATE(1970,1,1))*86400000 (A1 is your date cell)
    • - Online tool: https://www.epochconverter.com/ (select milliseconds)
    • - JavaScript: new Date('2025-01-15').getTime()
    • Example: 1548898600000 (represents 2019-01-31 00:30:00 UTC)
    • Important: Date range (EndDate - StartDate) cannot exceed 31 days.
  • EndDate (string, required)
    • End date in Unix timestamp milliseconds format.
    • How to convert:
    • - Excel: =(A1-DATE(1970,1,1))*86400000 (A1 is your date cell)
    • - Online tool: https://www.epochconverter.com/ (select milliseconds)
    • - JavaScript: new Date('2025-01-15').getTime()
    • Example: 1601490599999 (represents 2020-09-30 23:49:59 UTC)
    • Important: Date range (EndDate - StartDate) cannot exceed 31 days.

Options:

  • Timezone (string, optional)
    • Timezone in IANA format (e.g. "America/New_York", "Europe/London", "Asia/Shanghai").
    • Common timezones:
    • - US East: America/New_York
    • - US West: America/Los_Angeles
    • - UK: Europe/London
    • - China: Asia/Shanghai
    • - India: Asia/Kolkata
    • Full list: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones
    • Default behavior: If not provided, uses the calendar's default timezone setting in HighLevel.

Output:

  • Slots (object-array)
    • Available time slots list. Each slot contains:
    • - Start (string): Slot start time in ISO 8601 format (e.g. "2025-12-23T10:00:00Z")
    • - End (string): Slot end time in ISO 8601 format (e.g. "2025-12-23T11:00:00Z")
    • Empty array if no free slots available.
  • OriginalStatusCode (number)
    • The raw HTTP status code returned by the upstream API. 0 indicates the request was not sent or a network error occurred.
  • StatusCode (number)
    • System operation status code. 200 = system healthy (including API business errors reflected in ErrorMessage), 500 = system error (network failure, timeout, code crash), -1 = parameter validation error (request not sent).
  • ErrorMessage (string)
    • Error description message. Empty string if the operation completed successfully. Contains specific error details when StatusCode is non-200 or when the upstream API returns a business error.

Get Many Contacts

Source DSL: api/highlevel/dsl/Get_Many_Contacts.json

Retrieves a list of contacts from HighLevel platform with pagination and filtering support

Input Parameters:

  • LocationId (string, required)
    • HighLevel Location ID (required). This identifies which sub-account to query contacts from. You can get this ID from:
    • - Get Locations action
    • - HighLevel dashboard → Settings → Business Profile → Location ID
    • Example: "exf5ABy34KMLAk4ENO5I"

Options:

  • Limit (number, optional) — default: 20
    • Maximum number of contacts to return. Range: 1-100. Default: 20.
  • Query (string, optional)
    • Search query to filter contacts by name, email, or phone. Supports partial matching (case-insensitive).
    • Examples:
    • - "John" → matches "John Doe", "Johnny Smith"
    • - "@gmail.com" → matches all Gmail addresses
    • - "+1-415" → matches phone numbers starting with +1-415
    • Leave empty to retrieve all contacts.
  • StartAfterId (string, optional)
    • Pagination Strategy:
    • - Recommended: Use StartAfterId (cursor-based) for reliable pagination
    • - Alternative: Use StartAfter (timestamp-based) for time-range queries
    • - Note: Do NOT use both parameters simultaneously. Choose one method per request.
    • Contact ID for cursor-based pagination. Use the last ContactId from the previous page's response to get the next page.
    • Usage: After getting the first page, extract the last contact's ContactId and pass it here for the next request.
    • Example: "w3sKJchjQ1lzboiDCYlj"
  • StartAfter (number, optional)
    • ⚠️ Advanced Option: Most users should use StartAfterId instead. This parameter is only needed for time-range queries.
    • Pagination Strategy:
    • - Recommended: Use StartAfterId (cursor-based) for reliable pagination
    • - Alternative: Use StartAfter (timestamp-based) for time-range queries
    • - Note: Do NOT use both parameters simultaneously. Choose one method per request.
    • Unix timestamp (in seconds) for cursor-based pagination. Use this to get contacts added after a specific time. Leave empty for the first page.
    • Format: Integer (e.g., 1640995200 = 2021-12-31 00:00:00 UTC)
    • How to get: Use an online converter like https://www.unixtimestamp.com/
    • Example: 1640995200

Output:

  • Contacts (object-array)
    • Array of contact objects. Each contact contains:
    • - ContactId (string): Unique contact identifier
    • - FirstName (string): Contact's first name
    • - LastName (string): Contact's last name
    • - Email (string): Primary email address
    • - Phone (string): Primary phone number
    • - Tags (array): List of tags assigned to the contact
    • - DateAdded (string): ISO 8601 timestamp when contact was created
  • Pagination (object)
    • Pagination metadata:
    • - HasMore (boolean): Whether there are more pages
    • - NextStartAfterId (string): Contact ID to use for next page
    • - NextStartAfter (string): Timestamp to use for next page (alternative method)
    • - CurrentPage (number): Number of contacts in current page
    • - Limit (number): Requested page size
    • - Total (number): Total contacts matching query
  • Total (number)
    • Total number of contacts.
  • OriginalStatusCode (number)
    • Raw HTTP status code from the upstream API. 0 means the request was not sent.
  • StatusCode (number)
    • System operation status code. 200 = system healthy (including API business errors reflected in ErrorMessage), 500 = system error (network failure, timeout, code crash), -1 = parameter validation error (request not sent).
  • ErrorMessage (string)
    • Error description message. Empty string if the operation completed successfully. Contains specific error details when StatusCode is non-200 or when the upstream API returns a business error.

Get Many Tasks

Source DSL: api/highlevel/dsl/Get_Many_Tasks.json

Retrieves a list of tasks from HighLevel platform with pagination support

Input Parameters:

  • ContactId (string, required)
    • Unique identifier of the HighLevel contact (required). How to get: via Get Contact or Search Contacts API, or copy from HighLevel dashboard. Format: 22-character alphanumeric string. Example: "w3sKJchjQ1lzboiDCYlj"

Options:

  • Limit (number, optional) — default: 50
    • Maximum number of tasks to return per request. Default: 50. Max: 100.
  • Offset (number, optional) — default: 0
    • Number of tasks to skip. Used for pagination. Example: offset=50 returns tasks 51-100.

Output:

  • Tasks (object-array)
    • List of tasks (array of objects). Each task object contains: TaskId (string): unique identifier, Title (string): task title, Body (string): detailed description, Status (string): task status, ContactId (string): associated contact ID, DueDate (string): due date in YYYY-MM-DD format, Completed (boolean): whether the task is completed.
  • Pagination (object)
    • Pagination metadata including Limit, Offset, Total, and HasMore flag.
  • Total (number)
    • Total number of tasks for this contact. Note: This value represents the total count of all tasks and is not affected by pagination parameters.
  • OriginalStatusCode (number)
    • Raw HTTP status code returned by the upstream API. 0 means the request was not sent.
  • StatusCode (number)
    • System operation status code. 200 = system healthy (including API business errors reflected in ErrorMessage), 500 = system error (network failure, timeout, code crash), -1 = parameter validation error (request not sent).
  • ErrorMessage (string)
    • Error description message. Empty string if the operation completed successfully. Contains specific error details when StatusCode is non-200 or when the upstream API returns a business error.

Get a Contact

Source DSL: api/highlevel/dsl/Get_a_Contact.json

Retrieves detailed information about a specific contact from HighLevel platform using the contact ID. This function returns comprehensive contact data including personal information, contact details, tags, and custom fields.

Input Parameters:

  • ContactId (string, required)
    • The HighLevel contact record identifier to load full profile for. Copy from the dashboard contact URL, Search Contacts, or a prior Create or Upsert response. Example: "w3sKJchjQ1lzboiDCYlj"

Output:

  • Contact (object)
    • The contact information object returned from the HighLevel API. Contains comprehensive contact details including personal information (name, email, phone), address fields, custom fields, tags, timestamps, and associated location ID. The structure follows the HighLevel API's native response format, with fields such as id, firstName, lastName, email, phone, address1, city, state, country
  • OriginalStatusCode (number)
    • OriginalStatusCode output
  • StatusCode (number)
    • StatusCode output
  • ErrorMessage (string)
    • ErrorMessage output

Get a Task

Source DSL: api/highlevel/dsl/Get_a_Task.json

Retrieves detailed information about a specific task from HighLevel platform

Input Parameters:

  • ContactId (string, required)
    • The unique identifier of the contact. Can be obtained from Search Contacts or Get Many Contacts action. Example: "w3sKJchjQ1lzboiDCYlj"
  • TaskId (string, required)
    • The unique identifier of the task to retrieve. Can be obtained from Get Many Tasks or Search Tasks action. Example: "1234567890"

Output:

  • Task (object)
    • The task object containing all task details:
    • - id (string): Task unique identifier
    • - title (string): Task title
    • - body (string): Task description/notes
    • - status (string): Task status (e.g., 'pending', 'completed')
    • - contactId (string): Associated contact ID
    • - dueDate (string): Due date in ISO 8601 format (e.g., '2025-12-23T10:00:00Z')
    • - completed (boolean): Whether the task is completed
  • OriginalStatusCode (number)
    • The original HTTP status code returned by the upstream API. Default value is 0. Use this for debugging and troubleshooting.
    • - 0: The request did not reach the upstream API (e.g., network timeout, connection refused).
    • - 200/201/204: Upstream API returned success.
    • - 4xx: Client error from upstream (e.g., 400 Bad Request, 401 Unauthorized, 404 Not Found).
    • - 5xx: Server error from upstream.
  • StatusCode (number)
    • System operation status code. 200 = system healthy (including API business errors reflected in ErrorMessage), 500 = system error (network failure, timeout, code crash), -1 = parameter validation error (request not sent).
  • ErrorMessage (string)
    • Error description message. Empty string if the operation completed successfully. Contains specific error details when StatusCode is non-200 or when the upstream API returns a business error.

Get an Opportunity

Source DSL: api/highlevel/dsl/Get_an_Opportunity.json

Retrieves detailed information about a specific opportunity from HighLevel platform

Input Parameters:

  • OpportunityId (string, required)
    • Unique identifier of the opportunity to retrieve. Can be obtained from: Search Opportunities action (search by contact, pipeline, or status), List Opportunities action (get all opportunities in a pipeline), or HighLevel dashboard URL (the ID in the opportunity detail page URL). Format: Alphanumeric string (e.g., 'abc123xyz789'). Example: '1234567890'

Output:

  • Opportunity (object)
    • The opportunity object containing the following fields: id (string): Unique opportunity identifier; name (string): Opportunity name/title; status (string): Current status. Common values: 'open', 'won', 'lost', 'abandoned'; monetaryValue (float): Deal value in the account's default currency (e.g., USD); contactId (string): Associated contact ID. Can be retrieved via Search Contacts or Get Contact; pipelineId (string): Sales pipeline ID this opportunity belongs to; pipelineStageId (string): Current stage ID within the pipeline (e.g., 'qualification', 'proposal', 'negotiation').
  • OriginalStatusCode (number)
    • Raw HTTP status code from the upstream API. 0 means the request was not sent.
  • StatusCode (number)
    • System operation status code. 200 = system healthy (including API business errors reflected in ErrorMessage), 500 = system error (network failure, timeout, code crash), -1 = parameter validation error (request not sent).
  • ErrorMessage (string)
    • Error description message. Empty string if the operation completed successfully. Contains specific error details when StatusCode is non-200 or when the upstream API returns a business error.

Update a Contact

Source DSL: api/highlevel/dsl/Update_a_Contact.json

Updates an existing contact information in HighLevel platform

Input Parameters:

  • ContactId (string, required)
    • Unique identifier of the contact to update. Can be obtained via Search Contacts or Get Many Contacts API. Example: w3sKJchjQ1lzboiDCYlj

Options:

  • FirstName (string, optional)
    • First name of the contact.
  • LastName (string, optional)
    • Last name of the contact.
  • Email (string, optional)
    • Email address of the contact. Used for email marketing and notifications. Format: user@example.com. Leave empty to keep unchanged.
  • Phone (string, optional)
    • Phone number of the contact.
  • Tags (string-array, optional)
    • List of tags for the contact, used for categorization and filtering. Supports multiple tags. Common tags: vip, customer, lead, hot_lead. Example: ["vip", "customer"]
  • CustomFields (object-array, optional)
    • List of custom fields to store additional contact information. Each item must contain id (custom field ID) and field_value. Example: [{"id": "custom_field_id_123", "field_value": "VIP Customer"}]. Note: Custom field IDs can be obtained via Get Custom Fields API.
  • AdditionalFields (object, optional)
    • Extension fields (key-value object) for non-core information. Common fields: address1, city, state, country, postalCode, website. Example: {"address1": "123 Main St", "city": "San Francisco", "state": "CA", "country": "USA", "postalCode": "94102", "website": "https://example.com"}

Output:

  • Success (bool)
    • Indicates whether the contact was successfully updated. true = update successful, false = update failed (see ErrorMessage for details).
  • ContactId (string)
    • ID of the updated contact.
  • OriginalStatusCode (number)
    • Original HTTP status code from the upstream API. 0 if no request was sent.
  • StatusCode (number)
    • System operation status code. 200 = system healthy (including API business errors reflected in ErrorMessage), 500 = system error (network failure, timeout, code crash), -1 = parameter validation error (request not sent).
  • ErrorMessage (string)
    • Error description message. Empty string if the operation completed successfully. Contains specific error details when StatusCode is non-200 or when the upstream API returns a business error.

Update a Task

Source DSL: api/highlevel/dsl/Update_a_Task.json

Updates an existing task information in HighLevel platform

Input Parameters:

  • ContactId (string, required)
    • Contact ID (required). Can be obtained via Search Contacts or Get Contact API. Example: "w3sKJchjQ1lzboiDCYlj"
  • TaskId (string, required)
    • Task ID to update (required). Can be obtained via List Tasks or Search Tasks API. Example: "1234567890"

Options:

  • Title (string, optional)
    • Task title (optional). Will overwrite the existing title. Leave empty to keep unchanged. Example: "Follow up with client"
  • Body (string, optional)
    • Task detailed description (optional). Supports plain text. Will overwrite the existing description. Leave empty to keep unchanged. Example: "Discuss pricing and contract terms"
  • DueDate (string, optional)
    • Task due date (optional). Supports two formats: 1. Unix timestamp in milliseconds (13 digits), e.g., 1735689600000. 2. ISO 8601 format, e.g., 2025-12-23T10:30:00+08:00 or 2025-12-23T02:30:00Z. Note: Providing only a date (e.g., 2025-12-23) may cause timezone parsing issues. Example: "1735689600000"
  • Completed (bool, optional) — default: false
    • Task completion status (optional). true = mark as completed, false = mark as uncompleted. Default: false (does not change original status if not provided).

Output:

  • TaskId (string)
    • The updated task ID. Usually the same as the input TaskId.
  • Success (bool)
    • Indicates whether the task was successfully updated. true = success, false = failure.
  • OriginalStatusCode (number)
    • Raw HTTP status code from the upstream HighLevel API. 0 = request not sent, 200 = success, 401 = unauthorized, 404 = task not found.
  • StatusCode (number)
    • System operation status code. 200 = system healthy (including API business errors reflected in ErrorMessage), 500 = system error (network failure, timeout, code crash), -1 = parameter validation error (request not sent).
  • ErrorMessage (string)
    • Error description message. Empty string if the operation completed successfully. Contains specific error details when StatusCode is non-200 or when the upstream API returns a business error.

Update an Opportunity

Source DSL: api/highlevel/dsl/Update_an_Opportunity.json

Updates an existing opportunity information in HighLevel platform

Input Parameters:

  • OpportunityId (string, required)
    • The unique identifier of the opportunity to update. Can be obtained from Search Opportunities or List Opportunities actions. Example: "ve9EPqCqojPWO3qFbCt1"

Options:

  • MonetaryValue (string, optional)
    • The monetary value of the opportunity (numeric string). Represents the potential deal amount. Format: Decimal number without currency symbol. Example: "5000.00" for $5,000. Leave empty to keep current value.
  • PipelineStageId (string, optional)
    • The ID of the pipeline stage to move this opportunity to. Represents the current sales stage (e.g., Qualification, Proposal, Negotiation). Can be obtained from Get Pipeline Stages action. Example: "7915dedc-8f18-4e0d-8dc9-ce9b946c5c2a". Leave empty to keep current stage.
  • Status (string, optional)
    • The status of the opportunity. Common values: "open" (active deal), "won" (deal closed successfully), "lost" (deal failed), "abandoned" (no longer pursuing). Leave empty to keep current status. Example: "open"
  • Name (string, optional)
    • The display name of the opportunity. Should clearly describe the deal. Best practice: Include company name and deal type. Example: "Enterprise Software Deal - Acme Corp". Leave empty to keep current name.

Output:

  • OpportunityId (string)
    • The ID of the updated opportunity. Returns the same ID as input if update succeeded.
  • Success (bool)
    • Indicates whether the opportunity was successfully updated. Returns true if the update operation completed without errors, false otherwise. Check ErrorMessage for details if false.
  • OriginalStatusCode (number)
    • The original HTTP status code returned by the HighLevel API. Default 0 means the request did not reach upstream (e.g., timeout). Use for debugging.
  • StatusCode (number)
    • System operation status code. 200 = system healthy (including API business errors reflected in ErrorMessage), 500 = system error (network failure, timeout, code crash), -1 = parameter validation error (request not sent).
  • ErrorMessage (string)
    • Error description message. Empty string if the operation completed successfully. Contains specific error details when StatusCode is non-200 or when the upstream API returns a business error.

Upsert a Contact

Source DSL: api/highlevel/dsl/Upsert_a_Contact.json

Creates a new contact or updates an existing contact in HighLevel platform

Input Parameters:

  • LocationId (string, required)
    • HighLevel location ID (required). Specifies which location/sub-account the contact belongs to. Obtain via Get Locations API. Format is a 22-character alphanumeric string. Example: "ve9EPM428h8vShlRW1KT"

Options:

  • FirstName (string, optional)
    • Contact first name. Example: "John"
  • LastName (string, optional)
    • Contact last name. Example: "Doe"
  • Email (string, optional)
    • Contact email address. Used for upsert matching (if exists, update; otherwise create). Example: "john.doe@example.com"
  • Phone (string, optional)
    • Contact phone number. Used for upsert matching. Supports international format. Example: "+1-555-0100"
  • Tags (string-array, optional) — default: []
    • Contact tags (string array). Used for categorization. Example: ["vip", "newsletter"]
  • CustomFields (object-array, optional) — default: []
    • Custom fields (object array). Each object contains 'id' and 'field_value'. Example: [{"id": "MgobCB14YMVKuE4Ka8p1", "field_value": "Enterprise"}]
  • AdditionalFields (object, optional) — default: {}
    • Additional contact fields. Supported keys: address1, city, state, country, postalCode, website. Example: {"city": "New York", "country": "US"}

Output:

  • ContactId (string)
    • The unique identifier of the created or updated contact. Format: 22-character alphanumeric string. Example: "ve9EPM428h8vShlRW1KT"
  • Success (bool)
    • Indicates whether the upsert operation succeeded. true = contact created or updated successfully; false = operation failed (check ErrorMessage for details).
  • OriginalStatusCode (number)
    • Raw HTTP status code from the upstream API. 0 means the request was not sent.
  • StatusCode (number)
    • System operation status code. 200 = system healthy (including API business errors reflected in ErrorMessage), 500 = system error (network failure, timeout, code crash), -1 = parameter validation error (request not sent).
  • ErrorMessage (string)
    • Error description message. Empty string if the operation completed successfully. Contains specific error details when StatusCode is non-200 or when the upstream API returns a business error.

5. Example Usage

This section sketches a minimal workflow using Create a Task. This example adds Start → HighLevel: Create a Task → Answer and sets ContactId, Title, and DueDate (plus optional body and completed flag).

Step-by-Step Guide:

  1. Add the tool node: In the workflow canvas, add a node from the Tools list, choose HighLevel, then select Create a Task.
  2. Configure credentials: Pick the saved credential for this integration.
  3. Configure parameters: Fill Input Parameters and Options as listed in Operation Details for that action (names match the DSL).
  4. Run: Execute the workflow and inspect the node log for Output fields.

6. FAQs

Q: Why am I getting 401 Unauthorized?

A: Verify OAuth2 credentials (Client ID, Secret, refresh token) and that the access token is valid.

Q: Pagination for Get Many Contacts?

A: Use StartAfterId or StartAfter as described in the DSL input descriptions; do not mix both in one request if the API forbids it.

Q: Where do parameter names come from?

A: Only from each file under api/highlevel/dsl/*.json — Start Inputs and End Outputs.

7. Official Documentation

HighLevel API documentation

Updated on: Aug 14, 2026
Was This Page Helpful?
Discussion

Leave a Reply. Cancel reply

Your email address will not be published. Required fields are marked*

Product-related questions?Contact Our Support Team to Get a Quick Solution>
On this page
  • 1. Overview
  • 2. Prerequisites
  • 3. Credentials
  • 4. Supported Operations
    • Summary
    • Operation Details
  • 5. Example Usage
  • 6. FAQs
  • 7. Official Documentation
loading...
No Results