GoHighLevel counts its limits per sub-account. That cuts both ways.
GoHighLevel allows 100 requests per 10 seconds and 200,000 a day, counted per app per location rather than per app. Webhooks cover over 80 events with Ed25519 signatures and up to 12 retries. All data sits in the United States, with no Australian region offered.
What GoHighLevel publishes about its API
Documentation
Yes — marketplace.gohighlevel.com, though several pages render client-side and return nothing to a plain fetch. GoHighLevel marketplace docs, fetched 1 September 2026.
Authentication
OAuth 2.0 authorisation code for marketplace apps, with two token types — company or agency level for agency operations, and location level for sub-account operations. Private Integration Tokens cover internal single-account use. GoHighLevel OAuth, fetched 1 September 2026.
Token lifetimes
Access tokens last 86,399 seconds — about 24 hours. Refresh tokens are valid for a year or until used, whichever comes first, and rotate on every use. GoHighLevel OAuth, fetched 1 September 2026.
Rate limits
100 requests per 10 seconds burst, and 200,000 a day — counted per marketplace app per resource, where a resource is one location or one agency. GoHighLevel rate limits, fetched 1 September 2026.
When you exceed one
The vendor does not publish this.
Pagination
Per endpoint rather than platform-wide. Opportunity search takes limit, page and a searchAfter cursor; user search takes skip and limit with a default of 25. No global default or maximum is published. GoHighLevel API reference, fetched 1 September 2026.
Webhooks
Yes, and the broadest event catalogue here — over 80 events across contacts, conversations, appointments, invoices, opportunities, tasks, notes, products and orders, plus app install and uninstall. GoHighLevel webhooks, fetched 1 September 2026.
Event verification
Ed25519 signature in an X-GHL-Signature header, against a published public key. The legacy RSA-SHA256 X-WH-Signature is deprecated as of 1 September 2026. GoHighLevel webhook guide, fetched 1 September 2026.
Retry behaviour
Up to 12 retries beyond the original, with exponential backoff and jitter, on any non-2xx or no response at all. Endpoints below 90 percent success at high volume get paused. GoHighLevel webhook guide, fetched 1 September 2026.
Bulk operations
No batch endpoint or bulk limit is published.
Test environment
No sandbox terms are published.
Data location
United States only. GoHighLevel states its product infrastructure resides in the United States, hosted on Google Cloud. No Australian or Asia-Pacific region is offered. GoHighLevel security overview, fetched 1 September 2026.
Cost of API access
No separate charge for API access is published.
Every line above is GoHighLevel’s own documentation, fetched 1 September 2026, linked so you can check it yourself. 4 of the 13 fields are not published at all — those are marked, and they are the ones that cost you time. The full capability register puts this beside the other eight.
What the GoHighLevel API does and does not allow
Agency-oriented CRM, funnels and messaging, structured as one agency account holding many client sub-accounts.
Everything in the strip above is GoHighLevel’s own published documentation, fetched 1 September 2026 and linked to the page it came from. We have not paraphrased it into something friendlier, because the exact wording is what you need when a limit bites at four in the afternoon.
What follows is what those facts mean for a build — the constraints that change a design decision rather than the ones that are merely true. If you want the same treatment for the other eight systems side by side, that is the capability register. If you want to know whether we have built against both sides of a particular pairing, the integration checker answers that specific question.
Per-location limits, and what that means for an agency-shaped build
GoHighLevel is structured as one agency account holding many client sub-accounts, and its rate limits follow that structure: the daily 200,000 is counted per marketplace app per location, not per app. An integration serving forty sub-accounts has forty separate allowances.
For most builds that is more headroom than you will ever use. The consequence worth noticing is the other direction — a single very busy location cannot borrow from forty quiet ones. If one client runs a campaign that generates ten times the normal traffic, that client hits a ceiling while everyone else is idle, and the burst limit of 100 requests per 10 seconds is the one that arrives first.
The token model mirrors this. Agency-level tokens do agency things such as creating sub-accounts; location-level tokens do the actual work with contacts and conversations, and you exchange one for the other. Get the level wrong and the call fails in a way that reads like a permissions problem, because it is one.
Store tokens per locationNot per agency. And refresh tokens rotate on use — lose the rotated one and that location needs re-authorising by a human.
Back off per locationA global rate limiter wastes thirty-nine allowances to protect one. Bucket per location, because that is how the ceiling is counted.
Design for the burst, not the day100 requests per 10 seconds is what a campaign will hit. The daily 200,000 almost never is.
The endpoint health check, and the signature change
GoHighLevel does something none of the other eight do: it monitors whether your webhook endpoint is actually working, and switches it off if it is not. Health is assessed roughly every three days over the previous three days of deliveries, and a sustained success rate below 90 percent — on URLs receiving more than ten thousand webhooks in the window — triggers warnings and then pauses delivery on the second consecutive failure.
That is a defensible design and it changes your operational obligations. A slow endpoint is not merely slow; it is on a countdown. GoHighLevel’s own guidance is to return 200 even for processing errors and handle the failure internally, which feels wrong to anyone with HTTP instincts and is the correct answer here.
The other thing to check this week: the legacy RSA-SHA256 X-WH-Signature header is documented as deprecating on 1 September 2026 in favour of Ed25519 in X-GHL-Signature. If you have a GoHighLevel webhook handler in production that verifies the old scheme, that is the first thing to look at.
Rate limits and what breaks at scale
The published limits are 100 requests per 10 seconds burst and 200,000 a day, with response headers exposing both — X-RateLimit-Max, X-RateLimit-Remaining, X-RateLimit-Limit-Daily and X-RateLimit-Daily-Remaining. What is not published is the status code or error body returned when you exceed them, which is an odd gap on an otherwise well-documented rate-limit page.
Pagination is the more practical problem. There is no platform-wide scheme — it is per endpoint, with opportunity search taking limit, page and a searchAfter cursor while user search takes skip and limit with a default of 25. No global default or maximum is published anywhere, so every endpoint you touch needs its own reading of the reference.
The strategic constraint is not a limit at all. GoHighLevel states that its product infrastructure resides in the United States, on Google Cloud, with no Australian or Asia-Pacific region offered. For a Brisbane trade business that is usually a non-issue. For anyone handling health, disability or government-adjacent information it is a conversation to have before connecting it — and one we would rather have with you and your adviser than assume the answer to.
What GoHighLevel’s documentation supports — and the caveat on each. Source: GoHighLevel developer documentation, fetched 1 September 2026.
GoHighLevel
Read records on demand
●Yes100 per 10 seconds, 200,000 a day, per app per location. Pagination differs per endpoint.
Write records in
●YesStandard REST writes, but agency and location tokens do different things — get the level right.
Know the moment something changes
●YesOver 80 events across contacts, conversations, appointments, invoices, opportunities and orders.
Verify an event came from them
●YesEd25519 in X-GHL-Signature. The legacy RSA scheme is documented as deprecating 1 September 2026.
Recover after an outage
◐PartlyUp to 12 retries with backoff — but sustained delivery below 90 percent gets your endpoint paused.
Bulk load history
–Not assessedNo batch endpoint or bulk limit is published.
Keep data in Australia
○NoInfrastructure is stated to reside in the United States. No Australian or Asia-Pacific region is offered.
What GoHighLevel does not publish
4 of the thirteen fields we track are simply absent from GoHighLevel’s documentation: any bulk or batch limit, what the test environment gives you, what the API returns when you go over and whether API access itself costs anything.
This is the part of an integration page that competitors leave out, and it is the part that costs money. An undocumented rate limit is not an academic gap — it means the first time you find the ceiling is in production, on someone else’s business, usually on the busiest day of their month.
We are not going to fill these in with figures from a forum thread. Numbers circulate for most of them, and some are probably right, but we cannot show you where they came from and neither can the person who posted them. When we have measured GoHighLevel properly under load, those figures will appear here with the date we measured them and the conditions we measured them under. Not before.
What we have built, and what we have not measured
We have implemented against GoHighLevel in production. That is a real fact and it is also a limited one — it tells you we have solved this system's problems before, and it does not tell you how fast, how reliably, or at what volume.
The honest position is this. Everything on this page above the line is the vendor's published documentation, which we fetched, dated and linked rather than paraphrased. Nothing on this page is a Kindra measurement, because our measured register is not finished and publishing half of it dressed up as all of it would make this page less useful, not more.
What we would do on an engagement is measure the specific things that matter for your build — the endpoints you depend on, at your volume, with your data — and hand you those numbers whether or not they suit us. If they say the integration is harder than we quoted, you get told that too. Start with a Leak Check, or read how we work first if you would rather know the shape of it before talking to anyone.
Objections
Isn’t GoHighLevel enough on its own?
Very often, yes — and if it is, we will say so and there is no engagement. GoHighLevel is a mature product that solves the problem it was built for. Integration work is only worth paying for when the cost sits between systems: the same information being typed into GoHighLevel and then into something else, or a decision waiting because two systems disagree. If everything you need lives inside GoHighLevel, buy the plan that fits and spend the money elsewhere.
What happens when they change their API?
They will. Three of the nine systems in our register shipped a breaking or cost-changing update in the last twelve months. What matters is not preventing that — nobody can — but whether the integration was built so the change is a contained fix rather than a rebuild, and whether anyone is watching for the deprecation notice. You own the code either way, so you are never stuck with us to get it fixed.
Book a free Leak Check
20 minutes. We find where the money's going. No pitch.