The GoHighLevel API lets your own code, or another app, read and change the data in your HighLevel account: contacts, conversations, calendars, opportunities, payments and more. New connections use a Private Integration token or OAuth 2.0. The old API keys are past end of support. This guide covers which plans get access, how to get a token, the rate limits and your first call. Every fact below was checked on GoHighLevel's own pages on 18 October 2026.
The short answer
GoHighLevel's help center says Starter and Unlimited get basic API access, and Agency Pro gets advanced access. For a one-account tool, make a Private Integration token in Settings and send it as a Bearer token with a Version header. For an app many accounts install, use OAuth 2.0. Limits: 100 requests per 10 seconds and 200,000 a day.
What can you do with the GoHighLevel API?
You can do most of what you do in the app, but from code. GoHighLevel's developer docs (HighLevel API documentation) group the endpoints by part of the app. The main ones are:
- Contacts: create, update, search and tag people.
- Conversations: read and send messages.
- Calendars: read free slots and book appointments.
- Opportunities: move deals through your pipeline.
- Payments: work with orders, invoices and products.
- Webhooks: get told the moment something happens, like a new contact.
The docs page also offers a version switcher with v3, 2023-02-21, 2021-07-28 and 2021-04-15. GoHighLevel's help article says v3 is live for some endpoints, including Courses.
One thing confuses people early. The API lives at services.leadconnectorhq.com, not at a gohighlevel.com address. LeadConnector is the white label name HighLevel uses for its apps and connections. It is the same name you see on Zapier, which we explain in our GoHighLevel Zapier guide.
Which GoHighLevel plans include API access?
All three plans have some API access, but only Agency Pro has the advanced kind. Here is what GoHighLevel's pricing page and its help article said on 18 October 2026:
| Plan | Price | Pricing page says | Help article says |
|---|---|---|---|
| Starter | $97 a month or $970 a year | No API line in the plan card | Basic API access |
| Unlimited | $297 a month or $2,970 a year | "Basic API Access" | Basic API access |
| Agency Pro | $497 a month or $4,970 a year | "Advanced API Access" | Advanced API access |
| Enterprise | No price listed | "Increase API Limit by request" | Not covered |
Sources: GoHighLevel's pricing page and the help article "HighLevel API Documentation" (last updated 14 October 2026), both checked 18 October 2026.
What is the difference? The help article says advanced access adds agency-level keys and "the upcoming OAuth 2.0 endpoints". Lower plans get location-level keys only, which means one sub-account at a time. It also says some endpoints may need a higher plan.
Notice the Starter row. The help article says Starter gets basic access. The pricing page only prints the API line on Unlimited and up. If your whole reason for buying is the API, ask GoHighLevel support which endpoints Starter can reach before you pick it. We cover what else each plan gets in our GoHighLevel pricing breakdown.
Not on GoHighLevel yet? Our special link gets you a 30-day free trial of GoHighLevel (we may earn a commission from this link) plus a free live bootcamp. Sign up on GoHighLevel's own site and you get the standard 14 days, with no bootcamp. A month is enough time to build and test a real integration before you pay.
Is the GoHighLevel API v1 still working?
Old v1 connections still run, but v1 gets no fixes and no support. GoHighLevel's help article puts it plainly: "V1 APIs has reached end-of-support as on 31-December-2025."
Here is what that means for you:
- A tool built on a v1 API key may keep working for now.
- If it breaks, GoHighLevel will not fix it.
- You can no longer create new legacy v1 keys.
- A legacy key that has not been used for more than 90 days may be marked Expired.
So if an old Zap, script or plugin still uses a v1 key, move it to v2 now, while it still works. That is far less stress than fixing it on the day it stops. The help article points to Private Integrations as the way to do that.
If a tool still runs on a v1 API key, move it to a Private Integration token now, while it still works.
Where do you find your GoHighLevel API key?
You do not, any more. The API key has been replaced by a Private Integration token. GoHighLevel's guide (Private Integrations: Everything you need to know, last updated 16 October 2026) calls these tokens more secure than API keys. You choose exactly what each token can touch. An old API key could reach everything in the account.
To make one:
- Open Settings and find Private Integrations. Agencies and sub-accounts both have it.
- Click Create new Integration.
- Give it a name and a short description, so your team knows what it is for.
- Pick the scopes. A scope is one permission, like reading contacts. Pick only what the job needs.
- Copy the token and keep it somewhere safe. You cannot see it again later.
A few rules from the same guide:
- You can have up to 20 tokens at the agency level and 20 at the location level.
- You can change the name, description and scopes later. The token keeps working.
- By default, every agency admin can make them. You can limit that per person under Settings, Team, then that admin's Roles and Permissions.
Can't see Private Integrations in Settings?
Turn it on in Labs. The developer docs say: if you do not see Private Integrations, enable the feature on Labs. Then go back to Settings.
Private Integration token or OAuth 2.0: which do you need?
Use a Private Integration token for your own account. Use OAuth 2.0 when other people's accounts will connect your app. GoHighLevel's help article says the same thing: private tokens suit internal or single-location tools, and OAuth suits Marketplace apps, many accounts and user-approved access.
| Private Integration token | OAuth 2.0 | |
|---|---|---|
| Best for | Your own tools, scripts and AI agents | Apps that many agencies or sub-accounts install |
| How you get it | Made by hand in Settings | Made by code, through the Get Access Token API |
| How long it lasts | Stays the same until you rotate it | Expires daily and must be refreshed |
| Who approves it | You, when you create it | Each account owner, when they install your app |
Most owners and small agencies only ever need a private token. Our own setup for Claude Code works this way, as our GoHighLevel MCP and Claude Code guide shows: make a Private Integration, copy the token and the location ID, and connect.
How often should you rotate a token?
Every 90 days, GoHighLevel recommends. Open the integration and click Rotate and expire this token later. You get a new token, and the old and new ones both work for 7 days. That gives you a week to update your app. If a token leaks, use Rotate and expire this token now instead.
How do you make your first GoHighLevel API call?
Send a request with two headers: your token and a Version. Here is the first call most people make, creating a contact. The developer docs use this endpoint as their example, and the Private Integrations guide shows the same call.
| Part | What to send |
|---|---|
| Method and path | POST /contacts/ on services.leadconnectorhq.com |
| Authorization header | The word Bearer, a space, then your Private Integration token |
| Version header | 2021-07-28 (the version GoHighLevel's examples use) |
| Body | Your locationId, plus fields such as firstName and email |
The locationId is the ID of the sub-account the contact goes into. Our Claude Code guide, linked above, shows where to copy it.
If it works, open the sub-account and you will see the new person in Contacts. Contact created. From there, the same pattern works for every other endpoint: same headers, a different path.
Three mistakes trip up most first calls:
- No Version header. Every example in GoHighLevel's guides sends one.
- The wrong scope. If the token cannot write contacts, the call fails. Edit the scopes. You do not need a new token.
- The wrong locationId. A location-level token only reaches its own sub-account.
What are the GoHighLevel API rate limits?
100 requests every 10 seconds, and 200,000 requests a day. GoHighLevel's help article gives these limits for the v2 API, counted per Marketplace app and per resource. A resource is one location or one company.
| Limit | Amount |
|---|---|
| Burst | 100 requests per 10 seconds |
| Daily | 200,000 requests per day |
| More | Enterprise: "Increase API Limit by request" |
Each response tells you where you stand. Watch these headers: X-RateLimit-Limit-Daily, X-RateLimit-Daily-Remaining, X-RateLimit-Interval-Milliseconds, X-RateLimit-Max and X-RateLimit-Remaining.
For one business, these limits are hard to hit. Where people do hit them is a big import, or a loop that checks for changes every few seconds. Two fixes: slow the loop down, and use webhooks so GoHighLevel tells you about changes instead of you asking over and over.
How do GoHighLevel API webhooks work?
A webhook is a message GoHighLevel sends to your app the moment something happens. You do not have to keep asking. The developer docs promise real-time notifications for "50+ events". The event list includes ContactCreate, InboundMessage, OpportunityStageUpdate, AppointmentCreate, InvoicePaid and VoiceAiCallEnd.
Setting these up is a developer job, done through the developer docs. If you only want to push data out of one account, there is a simpler route: a workflow with a Webhook action. That needs no app and no code on GoHighLevel's side. We walk through it, and what it costs, in the Zapier guide.
Do you need the API, or will Zapier and workflows do?
Most owners do not need the API. Workflows, Zapier and the built-in integrations cover the usual jobs: new lead in, text out, deal moved, task made. Only reach for the API when one of these is true:
- You need data in or out in bulk, more than Zapier handles well.
- You are building a tool for your team, like a custom dashboard.
- You want an AI agent to work inside the account, as with the GoHighLevel MCP.
- You are building an app to sell to other agencies.
When we set up GoHighLevel for a business, we try the no-code route first. It is easier to hand over, and a non-developer can fix it. Code is the last step, not the first.
This will not suit you if you have no developer and no time to learn. The API docs are written for developers. GoHighLevel support does not review your code or help you write it.
GoHighLevel is the tool. Someone still has to do the work: plan the integration, set the scopes, test it and keep it running. If you would rather hand that part over, see how Havstock Unlimited works. This kind of setup is what our CRM and automations work covers.
Where do you get help with the GoHighLevel API?
From the developer community, not the normal support line. GoHighLevel's help article lists these:
- Bug reports: the developer support form on developers.gohighlevel.com.
- Questions: the developer Slack community.
- Live calls: a monthly Developer Council Call, on the second-to-last Friday of the month.
- Feature requests and doc errors: GitHub Issues on GoHighLevel's API docs repo.
The article is clear that HighLevel Support does not audit setup code or give developer consulting. If you need someone to build it, read our guide to hiring a GoHighLevel expert first. It covers what to ask and the red flags.
FAQ
Is the GoHighLevel API free?
There is no separate API fee on GoHighLevel's pricing page. Access comes with your plan. The help article says Starter and Unlimited get basic access and Agency Pro, at $497 a month, gets advanced access. Usage-based fees are separate from the plan, and GoHighLevel's trial page says they can still apply.
Does GoHighLevel Starter have API access?
GoHighLevel's help article says yes, basic access. But the pricing page only lists "Basic API Access" on the Unlimited plan, checked 18 October 2026. If the API is your main reason for buying, ask support which endpoints Starter can use before you choose it. Only Agency Pro has advanced access.
What is the GoHighLevel API base URL?
The developer docs send requests to services.leadconnectorhq.com, for example the /contacts/ path. LeadConnector is HighLevel's white label name. You also send a Version header with each request. GoHighLevel's own examples use 2021-07-28. Check the version switcher in the docs for newer versions on each endpoint.
How long does a Private Integration token last?
It does not expire on its own. It stays the same until you rotate or delete it. GoHighLevel recommends rotating every 90 days. When you rotate, the old and new tokens both work for 7 days, so you can update your app. OAuth tokens are different: they expire daily and must be refreshed.
Can I still use my old GoHighLevel API key?
For now, an old v1 key may still work, but v1 reached end of support on 31 December 2025. You cannot create new legacy keys. A key unused for more than 90 days may be marked Expired. Move anything on a v1 key to a Private Integration token before it breaks.
Does GoHighLevel have an API for courses or Voice AI?
Yes, in parts. The help article says API v3 covers some endpoints, including Courses. The webhook list includes a VoiceAiCallEnd event when a Voice AI call ends. Agent Studio has its own public API article. Check the developer docs for the endpoint you need before you plan around it.
That is the GoHighLevel API in short: a Private Integration token for your own tools, OAuth for apps others install, a Version header on every call, and 100 requests per 10 seconds. Try the no-code route first, then use the API for what it cannot do. If you want to build on it, our special link gets you a 30-day free trial of GoHighLevel and a free live bootcamp, instead of the standard 14 days.

