Skip to main content
GoHighLevel

Overview

PropertyValue
Sluggohighlevel
AuthOAuth 2.0
API versionv1
SandboxNo
Rate limit60 req/min, 5 req/sec

Supported resources

ResourceListGetCreateUpdateDelete
Contact
Lead
Deal
Meeting
Owner
In GoHighLevel, leads and deals both map to Opportunities. Meetings map to Calendar Appointments.

Connect setup

GoHighLevel uses OAuth 2.0 (without PKCE). You need a Marketplace App from the GoHighLevel developer portal.
1

Create a GoHighLevel marketplace app

Go to GoHighLevel MarketplaceDeveloperAppsCreate App. Copy the Client ID and Client Secret.
2

Add the redirect URL

In your app’s Redirect URL field, add:
http://localhost:5001/api/v1/auth/callback
3

Configure required scopes

Enable the following scopes:
  • contacts.readonly
  • contacts.write
  • opportunities.readonly
  • opportunities.write
  • calendars.readonly
  • calendars.write
  • users.readonly
4

Connect via the widget

When your end user opens the Connect widget, they enter the Client ID and Client Secret, then authorize via the GoHighLevel OAuth flow which prompts them to select a location (sub-account).

Usage

# List contacts from GoHighLevel
curl "http://localhost:5001/api/v1/contact?provider=gohighlevel&endUserId=user-123" \
  -H "Authorization: Bearer sk_live_your_key"

# Create a contact
curl -X POST "http://localhost:5001/api/v1/contact?provider=gohighlevel&endUserId=user-123" \
  -H "Authorization: Bearer sk_live_your_key" \
  -H "Content-Type: application/json" \
  -d '{ "firstName": "Jane", "lastName": "Doe", "email": "jane@example.com" }'

Notes

  • GoHighLevel does not offer a sandbox environment. Test with a dedicated test location in your account.
  • The OAuth flow requires the end user to select a GHL location (sub-account) during authorization.
  • Contacts support additional fields: tags, doNotContact (DND flag), leadSource, and dateOfBirth.