GoHighLevel API Explained: Auth, Limits and Endpoints
The GoHighLevel API is a REST interface that lets a developer pull contact records, move a deal through a pipeline, book a calendar slot or trigger a text message without ever opening the GoHighLevel interface by hand.
Two paths lead to it. A Marketplace app authenticates with OAuth 2.0 and suits software meant to install across many sub-accounts.
Scoped to a single location instead, a Private Integration Token suits an internal tool that never needs to leave your own agency. Both paths land on the same v2 endpoints underneath.
What the GoHighLevel API actually gives you access to
Five resource groups cover most of what agencies build against: contacts, conversations, calendar and events, opportunities, and payments. Contacts come with full create, read, update and delete access, plus tagging and custom fields.
Conversations cover SMS, email and call handling, the layer behind the GoHighLevel Twilio integration that most text-based automations run through. Payments handle transactions and subscriptions, the same surface that powers the Stripe integration agencies use to bill clients.
Webhooks sit alongside all of this rather than inside it. Register a URL and GoHighLevel can push real-time notifications for more than 50 event types, so a build doesn't have to keep polling the API just to notice that a contact moved stage or a payment cleared.
How the GoHighLevel API handles authentication and versioning
Once you're authenticated, GoHighLevel's OAuth documentation states that access tokens last a single day. After that you exchange the refresh token for a new one, and the refresh token itself is good for a year, as long as it gets used.
Use it, and the replacement is valid for another year, which keeps it active as long as your integration keeps calling it. Let a year pass without a request and it expires, forcing the sub-account to reauthorize from scratch.
Versioning runs through a request header rather than the URL, so GoHighLevel can ship a new release without breaking whichever version your code already targets.
The API v2 reference GoHighLevel maintains on GitHub keeps several versions live side by side, from 2021-04-15 through to the current one. That's why an integration built two years ago on an older header still runs without a rewrite.
That stability matters most for agencies running white-label software across dozens of client accounts. A version bump that silently changed a response shape would break every installation at once, not just one.
GoHighLevel API rate limits, and what they mean for your build
Every call counts against two ceilings described in GoHighLevel's rate limit documentation: a burst limit and a daily limit, both scoped per Marketplace app per resource.
| Limit | Value | What it covers |
|---|---|---|
| Burst limit | 100 requests / 10 seconds | Short bursts of calls from one app against one location or company |
| Daily limit | 200,000 requests / day | Total calls per Marketplace app, per resource, per day |
| Access token lifespan | 1 day | How long a token works before it needs refreshing |
| Refresh token lifespan | 1 year, if used | Resets to another year each time it's exchanged for a new access token |
Both ceilings are scoped per Marketplace app per resource, where a resource means one Location or one Company. Install the same app on fifty sub-accounts and you get fifty independent budgets, not one pool split fifty ways.
GoHighLevel's own guidance is blunt about where to find the real numbers: read the "X-RateLimit-Remaining" and "X-RateLimit-Daily-Remaining" headers on every response rather than counting requests yourself. The headers are authoritative, and your own count can drift.
For a build that syncs a few hundred contacts a day, the ceiling is academic. A workflow firing a call on every inbound lead across dozens of sub-accounts treats it differently.
That kind of workflow has to design around the limit: batch what can be batched, and check the remaining-requests header before retrying, not after you've already been throttled.
Cover photo by Marek Prášil on Pexels
Sources (4)
Need help implementing this in GoHighLevel?
Our team builds, automates, and scales GoHighLevel systems for agencies every day. Book a free call and we'll map out exactly what to ship next.
Book a free call


