Base URL and authentication
/api prefix. Every request carries an API
key as a bearer token:
Modules
Tags, calendars, custom fields and custom values are read from your CRM
directly; the platform does not proxy them. See
CRM resources and
GoHighLevel resources for which ids each setting wants.
Choose the smallest operation
List available tools includes capabilities too: Appointment Booking, Live Transfer and Add a Tag share the catalog with Service Area Check and Check a Tag. There is no separate capability-list endpoint. Read Get campaign to see installed abilities, and use Update campaign to configure them:capabilities.appointment_booking,capabilities.live_transfer,capabilities.add_tagtools.smart_service_area,tools.check_tag
The complete agent read is still useful for a configuration screen. The focused
script read removes platform-managed content and returns the editable text.
Setting CRM context fields configures which lead data the agent receives; it does
not update contact values in the CRM.
Resource design
Read-only synchronization details live under the campaign’smetadata, separate
from its editable settings. inventoryVersion covers capabilities and tools only;
send it as expectedVersion when you want to reject edits based on an older read.
Ordinary partial updates can omit it. inventoryFreshness tells you whether that
inventory was checked live or came from the last stored snapshot. A cached read
does not certify the current live configuration. Do not send metadata in an update.
Calling uses two independent switches: calling.speedToLead for immediate calls
and calling.powerDialer for scheduled calls. Both are supported for confirmation
campaigns too. The older combined dialing selector is compatibility input only.
The public JSON is a product contract. It does not mirror MongoDB collections,
internal field names or the voice provider’s configuration. The server translates
between them. One resource can combine information stored in several places.
Internal storage can change while this contract remains stable.
Settings live on their resource: script, speech and CRM context on the agent;
audience, calling rules and outcome prompts on the campaign. Send only the fields
you intend to change. An omitted setting is preserved. Supplied arrays replace
the relevant list; contextFields: [] explicitly clears the managed CRM block.
Outcome maps merge by key, so editing callback wording leaves opt-out wording alone.
Use a compact view when you only need part of a resource. It changes the response
shape, not permission checks. The operation page documents each representation.
Capabilities, workflow nodes and test runs retain their own operations because
they have identities, lifecycle rules or effects beyond changing a setting.
“Fewer endpoints” must still leave it clear whether a request edits configuration,
installs an ability, removes something, or initiates a call.
CRM administration belongs to the connected CRM’s own API. This reference has
no GHL proxy endpoints. Campaign reads report the calendar already selected;
the builder chatbot uses private, permission-checked lookups when it needs to
help someone select a different calendar, tag or pipeline.
Compatibility with earlier clients
Earlier routes remain available for existing clients but are omitted from the public reference and generated tools. New integrations should use the resource operations below:
Notes subscriptions are workflow settings. The legacy outcome route’s notes
switch does not become an outcome detection prompt.
The GHL module only answers for a sub-account with GoHighLevel connected. A
sub-account that keeps its contacts on the platform uses Native Contacts and
Native Calendar instead.
How to read an endpoint page
- The description ends with the required API key scope. A key without it
gets
403withInsufficientScopeand the scope named. - The request panel shows required fields first. Optional fields are collapsed. Expand them; the interesting settings are usually there.
- The responses list every status the endpoint can return, with the error code in each body. The codes are defined in Conventions.
- Every page is available as Markdown by appending
.mdto its URL, and the whole reference is at/llms-full.txtfor an assistant’s context window.
