API and Webhooks in HighLevel

The API and webhooks are how HighLevel talks to everything else. If you need HighLevel to connect to a tool that does not have a native integration, this is how you build that bridge.

Reading time: approximately 9 minutes.

Connect HighLevel to any external system using the – start your free trial today

The HighLevel API is included on every plan. Premium webhook features are available with Agency-level activation.

Start your free trial today.

Try HighLevel Free

What Is the HighLevel API?

The HighLevel API is a REST API that gives developers programmatic access to the HighLevel platform. Instead of clicking through the interface, you can read, write, and manage data – contacts, appointments, pipelines, messages, payments – through code.

The current version is API V2, which uses OAuth 2.0 authentication. API V1 has reached end-of-support.

Existing V1 integrations may continue to function, but HighLevel will not provide updates or support for them. Any new integration should be built on V2.

The official documentation is at marketplace.gohighlevel.com/docs. The developer community hub, including the Dev Slack, documentation links, and event calendar, is at developers.gohighlevel.com.

Basic API access is included on Starter and Unlimited plans. Advanced API access – which includes Agency API keys and additional OAuth 2.0 endpoints – is available on the Agency Pro plan.

Authentication: OAuth 2.0 vs Private Integration Tokens

HighLevel V2 supports two authentication approaches. Choosing the right one depends on what you are building and who it is for.

OAuth 2.0

  • For Marketplace apps distributed to multiple HighLevel accounts
  • Uses Authorization Code Grant flow – three-step process
  • Access tokens expire after 24 hours and must be refreshed
  • Requires creating an app in the HighLevel Developer Marketplace
  • Private apps for testing; switch to Public after approval for Marketplace listing
  • Best for: app developers, agencies building tools for clients, SaaS products built on HighLevel
Private Integration Token

  • For internal tools and single-account custom integrations
  • Static token – does not expire every 24 hours
  • Generated directly in HighLevel Settings – no Marketplace app required
  • Scoped to only the permissions you select at creation
  • Available for both Agency and Sub-Account levels
  • Best for: internal automations, custom scripts, single-client integrations

Both token types are used the same way in API requests – as a Bearer token in the Authorization header. The difference is how you obtain and manage them, not how you use them in the request itself.

Token security matters. Always scope tokens to the minimum permissions needed.

Rotate Private Integration Tokens every 90 days. Never commit tokens to version control or share them publicly.

What API Endpoints Are Available

HighLevel API V2 covers the major areas of the platform. The full reference is at marketplace.gohighlevel.com/docs.

API Area What You Can Do
Contacts Create, read, update, delete contacts. Apply and remove tags. Read and write custom fields. Search and filter contact records.
Conversations & Messaging Send SMS and email messages. Manage conversation threads. Read inbound message history. Mark conversations as read.
Calendar & Appointments Create and update appointments. Manage calendar availability. Handle booking workflows programmatically. Retrieve appointment details.
Pipelines & Opportunities Create and update pipeline opportunities. Move opportunities between stages. Manage opportunity status and assigned users.
Payments Process transactions, manage subscriptions, retrieve payment and order data.
Workflows Manage workflow enrollments – add or remove contacts from workflows programmatically.
Locations (Sub-Accounts) Retrieve and update sub-account settings, retrieve location details, generate location access tokens from an agency token.
Documents & Contracts List documents, send documents to contacts, list and send templates programmatically.
SaaS Configurator Query plans, manage subscriptions, bulk-enable SaaS mode for sub-accounts. Requires saas/* OAuth scope and Agency Pro plan.
Voice AI Manage Voice AI agents and actions. Retrieve call logs and transcripts. Connect real-time webhooks to call events.

Rate Limits and Response Headers

HighLevel API V2 using OAuth enforces two rate limits to maintain platform stability.

The burst limit is 100 API requests per 10 seconds per Marketplace app per resource (Location or Company). The daily limit is 200,000 API requests per day per Marketplace app per resource.

Rate limit headers are included in every API response. Build your integration to read these headers and implement exponential backoff before hitting limits.

A 429 response code means the rate limit has been reached – the integration should wait before retrying.

For the SaaS Configurator API specifically, the global rate limit is 10 requests per second. Always check the specific rate limit documentation for each API area before building high-volume integrations.

Webhooks: Outbound and Inbound

HighLevel has two distinct webhook systems. They work in opposite directions and solve different problems.

Type Direction How It Works Requires Premium
Outbound Webhook (standard) HighLevel → External Workflow action that fires a POST or GET to an external URL when a contact reaches that step. Sends standard contact and trigger data. No
Custom Webhook (Premium) HighLevel → External Workflow action supporting GET, POST, PUT, DELETE with full auth configuration, dynamic field mapping, custom headers, and query parameters. Yes
Inbound Webhook (Premium) External → HighLevel Workflow trigger that generates a unique URL. External systems POST data to that URL, which enrolls a contact and starts the workflow. Yes
System Webhooks HighLevel → External Platform-level event webhooks (e.g., SaaS plan created, contact events). Configured in Settings → Webhooks. Rate limited to 100 requests per minute per company. Signed with HMAC SHA256. No (system-level)

Custom Webhook Action (Premium)

The Custom Webhook workflow action is the most flexible outbound option. It supports all four HTTP methods – GET, POST, PUT, DELETE – and five authentication types: Bearer token, API key, Basic Auth, OAuth2, and custom headers.

Dynamic contact fields and custom values can be mapped into the payload, headers, and query parameters.

If the receiving server returns a non-2xx response, HighLevel retries with exponential backoff. Errors show as failed actions in Execution Logs with details on the response code received.

Inbound Webhook Trigger (Premium)

The Inbound Webhook trigger is the entry point for data coming from external systems into HighLevel. When you add it as a trigger, HighLevel generates a unique URL for that workflow.

Any external system – Zapier, Make, a custom application, an e-commerce platform – can POST data to that URL to enroll a contact and fire the workflow.

The data fields in the incoming POST body become available as custom values inside the workflow, usable in conditions, actions, and message personalization.

System Webhooks

System webhooks are configured at the platform level in Settings → Webhooks. They fire automatically on specific HighLevel events – such as a new contact being created, a SaaS plan being added, or a payment being processed – and deliver the event payload to an endpoint you register.

HighLevel signs system webhook payloads with an HMAC SHA256 signature in the X-HighLevel-Signature header. Validate this signature on your receiving endpoint to confirm the request genuinely came from HighLevel.

What You Can Build With It

  • Sync HighLevel contacts with an external CRM or database by using the Contacts API to push new contacts from HighLevel to another system on creation, or pull external records into HighLevel when a new customer is added elsewhere – keeping both systems in sync without manual data entry
  • Trigger HighLevel workflows from external events using the Inbound Webhook trigger – an e-commerce platform fires a webhook when an order is placed, HighLevel receives it and immediately enrolls the buyer in a post-purchase onboarding workflow
  • Send HighLevel contact data to external tools mid-workflow using the Custom Webhook action – when a lead reaches a qualification threshold in a nurture sequence, fire a webhook to your project management tool to create a client onboarding task automatically
  • Build a custom client reporting dashboard by pulling HighLevel data via the API – query contact counts, pipeline stage distributions, appointment volumes, and payment totals into a custom dashboard that surfaces the metrics your clients actually care about
  • Automate sub-account provisioning for an agency using the Locations API and SaaS Configurator API – when a new client signs up, programmatically create their sub-account, assign the right SaaS plan, and enroll them in onboarding workflows without manual setup
  • Connect HighLevel to Zapier or Make without writing any code – use the outbound Webhook action to send data from a HighLevel workflow to a Zap, and use the Inbound Webhook trigger to receive data from a Zap and fire a HighLevel workflow, bridging HighLevel with thousands of apps through either platform
  • Retrieve call logs and transcripts from Voice AI programmatically using the Voice AI Public APIs – pull call outcome data into external reporting systems or compliance archives without manually exporting from the HighLevel interface

Key Definitions

HighLevel API and Webhooks Terminology
Term What It Means
API V2 The current version of the HighLevel REST API. Uses OAuth 2.0 authentication. Covers contacts, conversations, calendars, pipelines, payments, workflows, and more. API V1 is end-of-support – no updates or technical support provided for V1 integrations.
REST API A type of API that uses standard HTTP methods (GET, POST, PUT, DELETE) to interact with platform data through structured URL endpoints. Responses are returned in JSON format. The HighLevel API is a REST API.
OAuth 2.0 The authentication protocol used by HighLevel API V2. Uses Authorization Code Grant flow for Marketplace apps – three-step process to obtain an access token. Tokens expire after 24 hours and must be refreshed. Best for apps distributed to multiple HighLevel accounts.
Private Integration Token A static OAuth 2.0 access token generated in HighLevel Settings. Scoped to permissions you select. Does not expire in 24 hours. Best for internal tools and single-account integrations. Should be rotated every 90 days. Available for both Agency and Sub-Account levels.
Scope A permission that limits what a token or OAuth app can access on a HighLevel account. When creating a Private Integration Token or OAuth app, you select only the scopes required. Fewer scopes means better security. Examples: contacts.readonly, contacts.write, calendars.write, saas.readonly.
Webhook (Outbound) An automated HTTP request sent from HighLevel to an external URL when a contact reaches a webhook step in a workflow. Delivers contact and event data as a payload. Standard outbound webhook supports POST and GET. Custom Webhook (Premium) adds PUT, DELETE, full auth options, and dynamic field mapping.
Webhook (Inbound) A Premium workflow trigger that receives HTTP POST requests from external systems. HighLevel generates a unique URL per workflow. External systems POST data to that URL to enroll a contact and trigger the workflow. The POST body data is available as custom values in workflow actions.
System Webhook Platform-level event webhooks configured in Settings → Webhooks. Fire automatically when specified HighLevel events occur. Signed with HMAC SHA256 in the X-HighLevel-Signature header. Rate limited to 100 requests per minute per company.
Rate Limit The maximum number of API requests allowed in a given time window. HighLevel V2 OAuth: burst limit of 100 requests per 10 seconds, daily limit of 200,000 requests per app per resource. Exceeding limits returns a 429 error code. Rate limit headers in API responses help monitor usage.
Payload The data body of a webhook request or API call. In outbound webhooks, HighLevel assembles the payload from contact fields, custom values, and trigger data before sending. In inbound webhooks, the payload is the JSON body sent by the external system to HighLevel’s unique trigger URL.
HMAC SHA256 Signature A cryptographic signature HighLevel adds to system webhook payloads in the X-HighLevel-Signature header. Used to verify that an inbound webhook request genuinely came from HighLevel and was not forged by a third party. Validate this signature on your receiving endpoint.
Premium Features Advanced workflow triggers and actions including the Custom Webhook action, Inbound Webhook trigger, Google Sheets, Slack, and AI actions. Enabled at the Agency level. Each sub-account receives 100 free executions; per-execution cost applies after. Rebillable to clients at markup.

Use Cases by Industry

Marketing Agencies

An agency manages 40 client sub-accounts on HighLevel. When a new client signs a contract (Documents and Contracts trigger), a workflow fires a Custom Webhook action to the agency’s internal provisioning system.

That system calls the HighLevel Locations API to create the sub-account, assigns the SaaS plan via the SaaS Configurator API, and sends the client their login credentials – all without any manual setup by the agency team.

Outcome: New client sub-accounts are fully provisioned in minutes rather than hours. No setup steps are missed.

The agency team focuses on strategy rather than account administration.

E-Commerce

An e-commerce business uses Shopify for order processing and HighLevel for customer follow-up. When an order is placed in Shopify, Shopify sends a webhook to the HighLevel Inbound Webhook trigger URL.

HighLevel receives the order data – product name, order total, customer email – and immediately enrolls the customer in a post-purchase sequence: an order confirmation, a shipping update follow-up, and a review request seven days later.

Outcome: Every customer receives a timely, personalized post-purchase sequence triggered in real time by the order event, without any manual enrollment or Shopify-HighLevel native integration.

SaaS Companies

A SaaS company needs to sync its customer database with HighLevel. When a new user signs up on their platform, their backend sends a POST request to an HighLevel Inbound Webhook URL containing the user’s name, email, plan tier, and company name.

HighLevel creates a contact with those details, applies a tag matching the plan tier, and enrolls the user in the appropriate onboarding workflow for that plan.

Outcome: Every new user is in HighLevel within seconds of signing up, tagged correctly, and enrolled in the right onboarding sequence – without any manual import or CSV upload.

Real Estate

A real estate team uses a third-party MLS data provider that fires webhooks when a new listing matches a saved search for a buyer contact. That webhook hits the HighLevel Inbound Webhook trigger, passing the listing address, price, and photos URL.

HighLevel uses the data to send a personalized SMS to the buyer: “A new listing matching your search just hit the market.” The contact’s custom fields are updated with the listing details.

Outcome: Buyers receive real-time, personalized listing alerts from their agent powered by HighLevel – with no manual outreach required when a matching property appears.

Healthcare and Wellness

A healthcare practice uses a separate EHR system for patient records. After each appointment, the EHR fires a webhook to HighLevel containing the patient’s contact ID and appointment outcome.

HighLevel receives the data and uses an Inbound Webhook workflow to route the patient to the correct post-appointment sequence based on the outcome field – standard follow-up, specialist referral follow-up, or post-procedure recovery check-ins.

Outcome: Patient follow-up is personalized to the clinical outcome of each appointment automatically, without staff manually routing patients between communication sequences after each visit.

Connect HighLevel to your entire tech stack using – start your free trial today

The HighLevel API is included on every plan. Premium webhook features activate at the Agency level.

Start your free trial today.

Start Free Trial

Who Is This For?

Especially Useful If You…

  • Need HighLevel to exchange data with an external system that does not have a native HighLevel integration – the API and webhooks are how you build that connection
  • Manage multiple client sub-accounts and want to automate provisioning, reporting, or configuration changes programmatically rather than through manual interface clicks
  • Build software products or tools on top of HighLevel and need programmatic access to platform data for your application logic
  • Use Zapier or Make to connect HighLevel with other tools and want to move beyond the limitations of native Zap triggers by using webhook-based connections for real-time data flow
  • Need HighLevel to react in real time to events that originate in external systems – orders, signups, EHR updates, MLS listings – without polling or manual imports

Less Relevant If You…

  • Only need HighLevel to connect with tools that already have native integrations – no API work required for those connections
  • Have no developer resources available and are not comfortable with HTTP requests, JSON payloads, and authentication tokens – the no-code webhook tools in the Workflow Builder cover most common integration needs without API knowledge
  • Run a simple single-account setup where all automation is self-contained within HighLevel and no external data exchange is needed

How to Set Up API and Webhooks in HighLevel

Step 1: Access the Developer Documentation

Visit marketplace.gohighlevel.com/docs for the full API V2 reference. Browse endpoint categories to identify what your integration needs.

For community support, join the HighLevel Dev Slack at developers.gohighlevel.com/join-dev-community.

Step 2: Create a Private Integration Token

Go to Settings → Private Integrations in your sub-account or agency. Click Create New Integration.

Name it descriptively. Select only the scopes your integration requires.

Copy the token immediately – it cannot be retrieved again. Store it securely.

Plan to rotate it every 90 days.

Step 3: Make Your First API Call

Use the token as a Bearer token in the Authorization header. Set the Version header to the required API version date.

Use an API client like Postman to test endpoints before writing code. Start with a simple GET request – for example, retrieving your location details – to confirm the token and headers are working correctly.

Step 4: Enable Premium Features for Webhooks

Go to Agency Settings → Workflow Premium Features and enable the toggle. Sub-accounts receive 100 free executions.

Rebilling can be enabled per sub-account to pass execution costs to clients at your chosen markup.

Step 5: Add a Custom Webhook Action to a Workflow

Inside a workflow, click + to add an action. Search for Custom Webhook.

Enter the destination URL, select the HTTP method, and configure authentication. Map contact fields and custom values into the payload.

Give the action a descriptive name. Save.

Step 6: Set Up an Inbound Webhook Trigger

Create a new workflow. Add a trigger and select Inbound Webhook from the Premium section.

Copy the unique URL HighLevel generates. Configure your external system to POST data to that URL.

The POST body fields are available as custom values in all downstream workflow actions.

Step 7: Test Before Going Live

Use Webhook.site or RequestBin to capture and inspect outbound webhook payloads before pointing them at production systems. For inbound webhooks, send a sample POST and check Execution Logs to confirm data was received and parsed correctly.

Fix any field mapping issues before enrolling real contacts.

Step 8: Apply Security Best Practices

Scope all tokens to minimum permissions. Never share tokens publicly.

Rotate Private Integration Tokens every 90 days using Rotate and Expire Later. Validate HMAC SHA256 signatures on system webhook endpoints.

Implement exponential backoff retry logic for API integrations to handle 429 rate limit responses.

Step 9: Monitor and Maintain

Check Execution Logs in workflows for failed Custom Webhook actions. Monitor rate limit response headers to stay ahead of daily and burst limits.

For high-volume integrations, spread requests across time windows rather than firing large batches simultaneously. Submit API feature requests or report documentation issues via the HighLevel GitHub repository.

How It Connects to the Rest of HighLevel

  • Workflow Builder and Automation Engine – the Custom Webhook action and Inbound Webhook trigger are both workflow components. The Custom Webhook fires as a workflow action when a contact reaches that step. The Inbound Webhook is a workflow trigger that enrolls contacts when an external system sends data to the unique URL. Both live entirely inside the Workflow Builder.
  • Advanced Workflow Builder – complex multi-trigger workflows that use both Inbound Webhooks and Custom Webhook actions benefit from the Advanced Builder’s freeform canvas, which makes the data flow between external systems and HighLevel action sequences easier to visualize and document.
  • Tag-Based Automation – a common pattern is to use an Inbound Webhook to receive external event data, apply a specific tag inside the workflow, and then let that tag trigger a separate purpose-built workflow. This keeps the integration logic and the business logic in separate, maintainable workflows.
  • Workflow Version History – workflows containing Custom Webhook or Inbound Webhook configurations are version-controlled the same as any other workflow. When a webhook URL or authentication configuration changes, restoring a previous version recovers the prior working configuration instantly.
  • Multi-Channel Campaigns – Custom Webhook actions can be added to multi-channel campaign workflows to fire external notifications – for example, sending a Slack alert to a sales rep when a contact reaches a high-intent step in the campaign sequence.

Common Questions

Quick Answer: The HighLevel API is REST V2 (V1 end-of-support). Auth options: OAuth 2.0 (Marketplace apps, 24-hour tokens) or Private Integration Token (internal tools, static, scoped). Rate limits: 100 requests/10 sec burst, 200,000/day. Docs: marketplace.gohighlevel.com/docs. Webhooks: Outbound (workflow action sends data to external URL), Inbound (external system POSTs to unique HighLevel URL to trigger a workflow), System (platform-level event webhooks in Settings → Webhooks). Custom Webhook and Inbound Webhook are Premium Features – enable at Agency level, 100 free executions per sub-account. Rotate tokens every 90 days. Validate HMAC SHA256 signatures on system webhook endpoints.

What is the HighLevel API?

A REST API (V2) providing programmatic access to contacts, conversations, calendars, pipelines, payments, workflows, and more. Docs at marketplace.gohighlevel.com/docs.

Basic access included on Starter and Unlimited plans. Advanced access (Agency API keys, additional OAuth endpoints) on Agency Pro.

API V1 is end-of-support – migrate to V2.

What is a Private Integration Token in HighLevel?

A static, scoped OAuth 2.0 access token generated in HighLevel Settings for internal tools and single-account integrations. Does not expire every 24 hours.

Select only required permissions at creation. Rotate every 90 days.

Available at both Agency and Sub-Account levels.

What is the difference between OAuth 2.0 and a Private Integration Token in HighLevel?

OAuth 2.0 is for Marketplace apps serving multiple HighLevel accounts – 24-hour tokens, three-legged flow, requires a Marketplace app. Private Integration Tokens are for internal tools – static, no daily expiry, no Marketplace app required.

Both use Bearer token authentication in the Authorization header.

What are the HighLevel API rate limits?

V2 OAuth: burst limit of 100 requests per 10 seconds per app per resource, daily limit of 200,000 requests per app per resource. Rate limit headers included in responses.

429 error means limit reached – implement exponential backoff retry logic.

What is a webhook in HighLevel?

An automated HTTP request for real-time data exchange. Outbound webhooks send data from HighLevel to external URLs.

Inbound webhooks receive data from external systems to trigger HighLevel workflows. System webhooks fire platform-level events to registered endpoints.

Custom Webhook and Inbound Webhook require Premium Features.

What is the Custom Webhook workflow action in HighLevel?

A Premium workflow action sending HTTP requests (GET, POST, PUT, DELETE) to a configured URL when a contact reaches that step. Supports Bearer, API key, Basic Auth, OAuth2, and custom header authentication.

Dynamic field mapping in payload, headers, and query parameters. Non-2xx responses trigger exponential backoff retries.

What is the Inbound Webhook trigger in HighLevel?

A Premium workflow trigger generating a unique URL per workflow. External systems POST data to that URL to enroll contacts and start the workflow.

POST body fields become available as custom values in workflow actions. Common for e-commerce orders, external signups, EHR events, and any external system that supports webhook delivery.

What API endpoints does HighLevel V2 include?

Contacts, Conversations and Messaging, Calendar and Appointments, Pipelines and Opportunities, Payments, Workflows, Locations, Users, Documents and Contracts, SaaS Configurator, Voice AI, and Webhooks. Full reference at marketplace.gohighlevel.com/docs.

Where is the official HighLevel API documentation?

marketplace.gohighlevel.com/docs for the full API reference. developers.gohighlevel.com for the developer hub including Dev Slack, documentation links, and the monthly Developer Council Call.

Submit API feature requests and documentation issues via the official HighLevel API docs GitHub repository.

Does HighLevel support Zapier and Make integrations?

Yes. Outbound Webhook actions send HighLevel data to Zapier or Make webhook URLs.

Inbound Webhook triggers receive data from Zapier or Make to enroll contacts and fire HighLevel workflows. This bridges HighLevel with thousands of apps through either platform without custom API development.

Use the HighLevel API and webhooks to connect your – start your free trial today

REST API included on every HighLevel plan. Premium webhook features available at Agency level.

Start your free trial today.

Try HighLevel Free

To Wrap It Up

The HighLevel API and webhooks are the layer that connects HighLevel to everything else in a business’s tech stack. For most users, the no-code webhook tools in the Workflow Builder – the standard outbound webhook action and the Inbound Webhook trigger – handle the majority of integration needs without any API knowledge required.

The full REST API is for developers building custom tools, automating sub-account management at scale, or creating products on top of the HighLevel platform.

The single most important decision when starting an integration is choosing the right authentication method. Private Integration Tokens for internal tools.

OAuth 2.0 for anything you plan to distribute to other HighLevel accounts. Getting this right at the start prevents significant rework later.

  1. Start with the Webhook.site testing approach before building any outbound webhook into production – seeing the exact payload HighLevel sends prevents hours of debugging field mapping issues after go-live
  2. Scope all Private Integration Tokens to the minimum permissions needed – a token scoped to contacts.write cannot accidentally delete pipeline opportunities even if it is compromised
  3. Implement exponential backoff retry logic on every API integration before launch – rate limit 429 errors are inevitable at volume and an integration without retry logic will simply fail silently
  4. Validate HMAC SHA256 signatures on every system webhook endpoint you build – it is a five-line check that prevents your systems from processing forged webhook payloads
  5. Rotate Private Integration Tokens before the 90-day mark using Rotate and Expire Later – the 7-day overlap window means zero downtime if you update connected systems promptly

A well-built HighLevel API integration runs quietly in the background and makes the entire business’s data ecosystem feel like one connected system rather than a collection of separate tools.