Files
2026-05-30 14:31:19 -06:00

31 KiB

GHL API — Complete Endpoint Index

Generated from 22 OpenAPI JSON specification files Total endpoints: 282


Table of Contents


Version Header Summary

Category Version Header
Associations 2021-07-28
Businesses 2021-07-28
Calendars 2021-04-15
Campaigns 2021-07-28
Companies 2021-07-28
Contacts 2021-07-28
Conversations 2021-04-15
Courses 2021-07-28
Custom Fields 2021-07-28
Emails 2021-07-28
Forms 2021-07-28
Funnels 2021-07-28
Invoices 2021-07-28
Links 2021-04-15, 2021-07-28
Locations 2021-07-28
Media 2021-07-28
OAuth 2021-07-28
Objects 2021-07-28
Opportunities 2021-07-28
Payments 2021-07-28
Users 2021-07-28
Workflows 2021-07-28

Common API Quirks & Patterns

User-Agent

All requests to GHL API require a User-Agent header. Without it, you may get 403 errors.

POST as GET

Some endpoints use POST with a search body instead of GET (e.g., /contacts/search, /opportunities/search). This is because search parameters can be complex JSON.

fieldValueString vs value

When updating custom fields, use fieldValueString for text-based fields and value for numeric fields. Check the field type first via schema discovery.

DELETE with body

Some DELETE endpoints accept a request body (non-standard but supported by GHL).

Pagination

Pagination varies by endpoint. Some use offset/limit, others use cursor-based pagination with startAfter.


Associations

Method Path Summary Version Deprecated
GET /associations/ Get all associations for a sub-account / location 2021-07-28
POST /associations/ Create Association 2021-07-28
GET /associations/key/{key_name} Get association key by key name 2021-07-28
GET /associations/objectKey/{objectKey} Get association by object keys 2021-07-28
POST /associations/relations Create Relation for you associated entities. 2021-07-28
GET /associations/relations/{recordId} Get all relations By record Id 2021-07-28
DELETE /associations/relations/{relationId} Delete Relation 2021-07-28
DELETE /associations/{associationId} Delete Association 2021-07-28
GET /associations/{associationId} Get association by ID 2021-07-28
PUT /associations/{associationId} Update Association By Id 2021-07-28

Businesses

Method Path Summary Version Deprecated
GET /businesses/ Get Businesses by Location 2021-07-28
POST /businesses/ Create Business 2021-07-28
DELETE /businesses/{businessId} Delete Business 2021-07-28
GET /businesses/{businessId} Get Business 2021-07-28
PUT /businesses/{businessId} Update Business 2021-07-28

Calendars

⚠️ Version Header: All Calendars endpoints use Version: 2021-04-15 (different from most other APIs which use 2021-07-28).

Method Path Summary Version Deprecated
GET /calendars/ Get Calendars 2021-04-15
POST /calendars/ Create Calendar 2021-04-15
GET /calendars/appointments/{appointmentId}/notes Get Notes 2021-04-15
POST /calendars/appointments/{appointmentId}/notes Create Note 2021-04-15
DELETE /calendars/appointments/{appointmentId}/notes/{noteId} Delete Note 2021-04-15
PUT /calendars/appointments/{appointmentId}/notes/{noteId} Update Note 2021-04-15
GET /calendars/blocked-slots Get Blocked Slots 2021-04-15
GET /calendars/events Get Calendar Events 2021-04-15
POST /calendars/events/appointments Create appointment 2021-04-15
GET /calendars/events/appointments/{eventId} Get Appointment 2021-04-15
PUT /calendars/events/appointments/{eventId} Update Appointment 2021-04-15
POST /calendars/events/block-slots Create Block Slot 2021-04-15
PUT /calendars/events/block-slots/{eventId} Update Block Slot 2021-04-15
DELETE /calendars/events/{eventId} Delete Event 2021-04-15
GET /calendars/groups Get Groups 2021-04-15
POST /calendars/groups Create Calendar Group 2021-04-15
POST /calendars/groups/validate-slug Validate group slug 2021-04-15
DELETE /calendars/groups/{groupId} Delete Group 2021-04-15
PUT /calendars/groups/{groupId} Update Group 2021-04-15
PUT /calendars/groups/{groupId}/status Disable Group 2021-04-15
GET /calendars/resources/{resourceType} List Calendar Resources 2021-04-15
POST /calendars/resources/{resourceType} Create Calendar Resource 2021-04-15
DELETE /calendars/resources/{resourceType}/{id} Delete Calendar Resource 2021-04-15
GET /calendars/resources/{resourceType}/{id} Get Calendar Resource 2021-04-15
PUT /calendars/resources/{resourceType}/{id} Update Calendar Resource 2021-04-15
POST /calendars/schedules Create user availability schedule 2021-04-15
GET /calendars/schedules/search List user availability schedule 2021-04-15
DELETE /calendars/schedules/{id} Delete user availability schedule 2021-04-15
GET /calendars/schedules/{id} Get user availability schedule 2021-04-15
PUT /calendars/schedules/{id} Update user availability schedule 2021-04-15
DELETE /calendars/schedules/{id}/associations/{calendarId} Remove user availability schedule from a calendar 2021-04-15
PUT /calendars/schedules/{id}/associations/{calendarId} Apply user availability schedule to a calendar 2021-04-15
DELETE /calendars/{calendarId} Delete Calendar 2021-04-15
GET /calendars/{calendarId} Get Calendar 2021-04-15
PUT /calendars/{calendarId} Update Calendar 2021-04-15
GET /calendars/{calendarId}/free-slots Get Free Slots 2021-04-15
GET /calendars/{calendarId}/notifications Get notifications 2021-04-15
POST /calendars/{calendarId}/notifications Create notification 2021-04-15
DELETE /calendars/{calendarId}/notifications/{notificationId} Delete Notification 2021-04-15
GET /calendars/{calendarId}/notifications/{notificationId} Get notification 2021-04-15
PUT /calendars/{calendarId}/notifications/{notificationId} Update notification 2021-04-15

Campaigns

Method Path Summary Version Deprecated
GET /campaigns/ Get Campaigns 2021-07-28

Companies

Method Path Summary Version Deprecated
GET /companies/{companyId} Get Company 2021-07-28

Contacts

⚠️ Deprecation: GET /contacts/ is deprecated. Use POST /contacts/search instead.

Method Path Summary Version Deprecated
GET /contacts/ Get Contacts 2021-07-28 ⚠️ YES
POST /contacts/ Create Contact 2021-07-28
POST /contacts/bulk/business Add/Remove Contacts From Business 2021-07-28
POST /contacts/bulk/tags/update/{type} Update Contacts Tags 2021-07-28
GET /contacts/business/{businessId} Get Contacts By BusinessId 2021-07-28
POST /contacts/search Search Contacts 2021-07-28
GET /contacts/search/duplicate Get Duplicate Contact 2021-07-28
POST /contacts/upsert Upsert Contact 2021-07-28
DELETE /contacts/{contactId} Delete Contact 2021-07-28
GET /contacts/{contactId} Get Contact 2021-07-28
PUT /contacts/{contactId} Update Contact 2021-07-28
GET /contacts/{contactId}/appointments Get Appointments for Contact 2021-07-28
DELETE /contacts/{contactId}/campaigns/removeAll Remove Contact From Every Campaign 2021-07-28
DELETE /contacts/{contactId}/campaigns/{campaignId} Remove Contact From Campaign 2021-07-28
POST /contacts/{contactId}/campaigns/{campaignId} Add Contact to Campaign 2021-07-28
DELETE /contacts/{contactId}/followers Remove Followers 2021-07-28
POST /contacts/{contactId}/followers Add Followers 2021-07-28
GET /contacts/{contactId}/notes Get All Notes 2021-07-28
POST /contacts/{contactId}/notes Create Note 2021-07-28
DELETE /contacts/{contactId}/notes/{id} Delete Note 2021-07-28
GET /contacts/{contactId}/notes/{id} Get Note 2021-07-28
PUT /contacts/{contactId}/notes/{id} Update Note 2021-07-28
DELETE /contacts/{contactId}/tags Remove Tags 2021-07-28
POST /contacts/{contactId}/tags Add Tags 2021-07-28
GET /contacts/{contactId}/tasks Get all Tasks 2021-07-28
POST /contacts/{contactId}/tasks Create Task 2021-07-28
DELETE /contacts/{contactId}/tasks/{taskId} Delete Task 2021-07-28
GET /contacts/{contactId}/tasks/{taskId} Get Task 2021-07-28
PUT /contacts/{contactId}/tasks/{taskId} Update Task 2021-07-28
PUT /contacts/{contactId}/tasks/{taskId}/completed Update Task Completed 2021-07-28
DELETE /contacts/{contactId}/workflow/{workflowId} Delete Contact from Workflow 2021-07-28
POST /contacts/{contactId}/workflow/{workflowId} Add Contact to Workflow 2021-07-28

Conversations

⚠️ Version Header: All Conversations endpoints use Version: 2021-04-15 (different from most other APIs which use 2021-07-28).

Method Path Summary Version Deprecated
POST /conversations/ Create Conversation 2021-04-15
GET /conversations/locations/{locationId}/messages/{messageId}/transcription Get transcription by Message ID 2021-04-15
GET /conversations/locations/{locationId}/messages/{messageId}/transcription/download Download transcription by Message ID 2021-04-15
POST /conversations/messages Send a new message 2021-04-15
DELETE /conversations/messages/email/{emailMessageId}/schedule Cancel a scheduled email message.
GET /conversations/messages/email/{id} Get email by Id
GET /conversations/messages/export Export messages by location ID 2021-04-15
POST /conversations/messages/inbound Add an inbound message 2021-04-15
POST /conversations/messages/outbound Add an external outbound call 2021-04-15
POST /conversations/messages/review-reply Send a review reply to Google My Business 2021-04-15
POST /conversations/messages/upload Upload file attachments 2021-04-15
POST /conversations/messages/upload/complete Complete file upload 2021-04-15
POST /conversations/messages/upload/initiate Initiate file upload to GCS 2021-04-15
GET /conversations/messages/{id} Get message by message id 2021-04-15
PUT /conversations/messages/{messageId}/attachments Add message attachments 2021-04-15
GET /conversations/messages/{messageId}/locations/{locationId}/recording Get Recording by Message ID 2021-04-15
DELETE /conversations/messages/{messageId}/schedule Cancel a scheduled message. 2021-04-15
PUT /conversations/messages/{messageId}/status Update message status 2021-04-15
GET /conversations/preferences/custom-subtypes Get All Custom Subtypes 2021-04-15
POST /conversations/preferences/custom-subtypes Create Custom Subtype 2021-04-15
PUT /conversations/preferences/custom-subtypes/{id} Update Custom Subtype 2021-04-15
GET /conversations/preferences/unsubscriptions/status Get Contact Unsubscription Status 2021-04-15
POST /conversations/preferences/unsubscriptions/user-change User Subscription Change 2021-04-15
POST /conversations/providers/live-chat/typing Agent/Ai-Bot is typing a message indicator for live chat 2021-04-15
GET /conversations/search Search Conversations 2021-04-15
DELETE /conversations/{conversationId} Delete Conversation 2021-04-15
GET /conversations/{conversationId} Get Conversation 2021-04-15
PUT /conversations/{conversationId} Update Conversation 2021-04-15
GET /conversations/{conversationId}/messages Get messages by conversation id 2021-04-15

Courses

Method Path Summary Version Deprecated
POST /courses/courses-exporter/public/import Import Courses 2021-07-28

Custom Fields

Method Path Summary Version Deprecated
POST /custom-fields/ Create Custom Field 2021-07-28
POST /custom-fields/folder Create Custom Field Folder 2021-07-28
DELETE /custom-fields/folder/{id} Delete Custom Field Folder 2021-07-28
PUT /custom-fields/folder/{id} Update Custom Field Folder Name 2021-07-28
GET /custom-fields/object-key/{objectKey} Get Custom Fields By Object Key 2021-07-28
DELETE /custom-fields/{id} Delete Custom Field By Id 2021-07-28
GET /custom-fields/{id} Get Custom Field / Folder By Id 2021-07-28
PUT /custom-fields/{id} Update Custom Field By Id 2021-07-28

Emails

Method Path Summary Version Deprecated
GET /emails/builder Fetch email templates 2021-07-28
POST /emails/builder Create a new template 2021-07-28
POST /emails/builder/data Update a template 2021-07-28
DELETE /emails/builder/{locationId}/{templateId} Delete a template 2021-07-28
GET /emails/schedule Get Campaigns 2021-07-28

Forms

Method Path Summary Version Deprecated
GET /forms/ Get Forms 2021-07-28
GET /forms/submissions Get Forms Submissions 2021-07-28
POST /forms/upload-custom-files Upload files to custom fields 2021-07-28

Funnels

Method Path Summary Version Deprecated
GET /funnels/funnel/list Fetch List of Funnels
POST /funnels/lookup/redirect Create Redirect 2021-07-28
GET /funnels/lookup/redirect/list Fetch List of Redirects 2021-07-28
DELETE /funnels/lookup/redirect/{id} Delete Redirect By Id 2021-07-28
PATCH /funnels/lookup/redirect/{id} Update Redirect By Id 2021-07-28
GET /funnels/page Fetch list of funnel pages
GET /funnels/page/count Fetch count of funnel pages

Invoices

Method Path Summary Version Deprecated
GET /invoices/ List invoices 2021-07-28
POST /invoices/ Create Invoice 2021-07-28
POST /invoices/estimate Create New Estimate 2021-07-28
GET /invoices/estimate/list List Estimates 2021-07-28
GET /invoices/estimate/number/generate Generate Estimate Number 2021-07-28
PATCH /invoices/estimate/stats/last-visited-at Update estimate last visited at 2021-07-28
GET /invoices/estimate/template List Estimate Templates 2021-07-28
POST /invoices/estimate/template Create Estimate Template 2021-07-28
GET /invoices/estimate/template/preview Preview Estimate Template 2021-07-28
DELETE /invoices/estimate/template/{templateId} Delete Estimate Template 2021-07-28
PUT /invoices/estimate/template/{templateId} Update Estimate Template 2021-07-28
DELETE /invoices/estimate/{estimateId} Delete Estimate 2021-07-28
PUT /invoices/estimate/{estimateId} Update Estimate 2021-07-28
POST /invoices/estimate/{estimateId}/invoice Create Invoice from Estimate 2021-07-28
POST /invoices/estimate/{estimateId}/send Send Estimate 2021-07-28
GET /invoices/generate-invoice-number Generate Invoice Number 2021-07-28
GET /invoices/schedule List schedules 2021-07-28
POST /invoices/schedule Create Invoice Schedule 2021-07-28
DELETE /invoices/schedule/{scheduleId} Delete schedule 2021-07-28
GET /invoices/schedule/{scheduleId} Get an schedule 2021-07-28
PUT /invoices/schedule/{scheduleId} Update schedule 2021-07-28
POST /invoices/schedule/{scheduleId}/auto-payment Manage Auto payment for an schedule invoice 2021-07-28
POST /invoices/schedule/{scheduleId}/cancel Cancel an scheduled invoice 2021-07-28
POST /invoices/schedule/{scheduleId}/schedule Schedule an schedule invoice 2021-07-28
POST /invoices/schedule/{scheduleId}/updateAndSchedule Update scheduled recurring invoice 2021-07-28
GET /invoices/settings Get Invoice Settings 2021-07-28
PATCH /invoices/stats/last-visited-at Update invoice last visited at 2021-07-28
GET /invoices/template List templates 2021-07-28
POST /invoices/template Create template 2021-07-28
DELETE /invoices/template/{templateId} Delete template 2021-07-28
GET /invoices/template/{templateId} Get an template 2021-07-28
PUT /invoices/template/{templateId} Update template 2021-07-28
PATCH /invoices/template/{templateId}/late-fees-configuration Update template late fees configuration 2021-07-28
PATCH /invoices/template/{templateId}/payment-methods-configuration Update template late fees configuration 2021-07-28
POST /invoices/text2pay Create & Send 2021-07-28
DELETE /invoices/{invoiceId} Delete invoice 2021-07-28
GET /invoices/{invoiceId} Get invoice 2021-07-28
PUT /invoices/{invoiceId} Update invoice 2021-07-28
PATCH /invoices/{invoiceId}/late-fees-configuration Update invoice late fees configuration 2021-07-28
POST /invoices/{invoiceId}/record-payment Record a manual payment for an invoice 2021-07-28
POST /invoices/{invoiceId}/send Send invoice 2021-07-28
POST /invoices/{invoiceId}/void Void invoice 2021-07-28

⚠️ Mixed Versions: Most Links endpoints use 2021-07-28, but GET /links/search uses Version: 2021-04-15.

Method Path Summary Version Deprecated
GET /links/ Get Links 2021-07-28
POST /links/ Create Link 2021-07-28
GET /links/id/{linkId} Get Link by ID 2021-07-28
GET /links/search Search Trigger Links 2021-04-15
DELETE /links/{linkId} Delete Link 2021-07-28
PUT /links/{linkId} Update Link 2021-07-28

Locations

Method Path Summary Version Deprecated
POST /locations/ Create Sub-Account (Formerly Location) 2021-07-28
GET /locations/search Search 2021-07-28
DELETE /locations/{locationId} Delete Sub-Account (Formerly Location) 2021-07-28
GET /locations/{locationId} Get Sub-Account (Formerly Location) 2021-07-28
PUT /locations/{locationId} Put Sub-Account (Formerly Location) 2021-07-28
GET /locations/{locationId}/customFields Get Custom Fields 2021-07-28
POST /locations/{locationId}/customFields Create Custom Field 2021-07-28
POST /locations/{locationId}/customFields/upload Uploads File to customFields 2021-07-28
DELETE /locations/{locationId}/customFields/{id} Delete Custom Field 2021-07-28
GET /locations/{locationId}/customFields/{id} Get Custom Field 2021-07-28
PUT /locations/{locationId}/customFields/{id} Update Custom Field 2021-07-28
GET /locations/{locationId}/customValues Get Custom Values 2021-07-28
POST /locations/{locationId}/customValues Create Custom Value 2021-07-28
DELETE /locations/{locationId}/customValues/{id} Delete Custom Value 2021-07-28
GET /locations/{locationId}/customValues/{id} Get Custom Value 2021-07-28
PUT /locations/{locationId}/customValues/{id} Update Custom Value 2021-07-28
POST /locations/{locationId}/recurring-tasks Create Recurring Task 2021-07-28
DELETE /locations/{locationId}/recurring-tasks/{id} Delete Recurring Task 2021-07-28
GET /locations/{locationId}/recurring-tasks/{id} Get Recurring Task By Id 2021-07-28
PUT /locations/{locationId}/recurring-tasks/{id} Update Recurring Task 2021-07-28
GET /locations/{locationId}/tags Get Tags 2021-07-28
POST /locations/{locationId}/tags Create Tag 2021-07-28
DELETE /locations/{locationId}/tags/{tagId} Delete tag 2021-07-28
GET /locations/{locationId}/tags/{tagId} Get tag by id 2021-07-28
PUT /locations/{locationId}/tags/{tagId} Update tag 2021-07-28
POST /locations/{locationId}/tasks/search Task Search Filter 2021-07-28
GET /locations/{locationId}/templates GET all or email/sms templates 2021-07-28
DELETE /locations/{locationId}/templates/{id} DELETE an email/sms template 2021-07-28
GET /locations/{locationId}/timezones Fetch Timezones 2021-07-28

Media

Method Path Summary Version Deprecated
PUT /medias/delete-files Bulk Delete / Trash Files or Folders 2021-07-28
GET /medias/files Get List of Files/ Folders 2021-07-28
POST /medias/folder Create Folder 2021-07-28
PUT /medias/update-files Bulk Update Files/ Folders 2021-07-28
POST /medias/upload-file Upload File into Media Storage 2021-07-28
DELETE /medias/{id} Delete File or Folder 2021-07-28
POST /medias/{id} Update File/ Folder 2021-07-28

OAuth

Method Path Summary Version Deprecated
GET /oauth/installedLocations Get Location where app is installed 2021-07-28
POST /oauth/locationToken Get Location Access Token from Agency Token 2021-07-28
POST /oauth/token Get Access Token

Objects

⚠️ Schema Discovery: Use GET /objects/{key}?locationId=LOC_ID with Version: 2021-07-28 for schema discovery. Object key for custom objects must include custom_objects. prefix.

Method Path Summary Version Deprecated
GET /objects/ Get all objects for a location 2021-07-28
POST /objects/ Create Custom Object 2021-07-28
GET /objects/{key} Get Object Schema by key / id 2021-07-28
PUT /objects/{key} Update Object Schema By Key / Id 2021-07-28
POST /objects/{schemaKey}/records Create Record 2021-07-28
POST /objects/{schemaKey}/records/search Search Object Records 2021-07-28
DELETE /objects/{schemaKey}/records/{id} Delete Record 2021-07-28
GET /objects/{schemaKey}/records/{id} Get Record By Id 2021-07-28
PUT /objects/{schemaKey}/records/{id} Update Record 2021-07-28

Opportunities

⚠️ Search Quirk: The POST /opportunities/search endpoint sometimes has issues filtering by contactId directly. Use the newer search endpoint or work around with custom filters.

Method Path Summary Version Deprecated
POST /opportunities/ Create Opportunity 2021-07-28
GET /opportunities/lost-reason Get lost reason 2021-07-28
GET /opportunities/pipelines Get Pipelines 2021-07-28
GET /opportunities/search Search Opportunity 2021-07-28
POST /opportunities/search Search Opportunities 2021-07-28
POST /opportunities/upsert Upsert Opportunity 2021-07-28
DELETE /opportunities/{id} Delete Opportunity 2021-07-28
GET /opportunities/{id} Get Opportunity 2021-07-28
PUT /opportunities/{id} Update Opportunity 2021-07-28
DELETE /opportunities/{id}/followers Remove Followers 2021-07-28
POST /opportunities/{id}/followers Add Followers 2021-07-28
PUT /opportunities/{id}/status Update Opportunity Status 2021-07-28

Payments

Method Path Summary Version Deprecated
DELETE /payments/coupon Delete Coupon 2021-07-28
GET /payments/coupon Fetch Coupon 2021-07-28
POST /payments/coupon Create Coupon 2021-07-28
PUT /payments/coupon Update Coupon 2021-07-28
GET /payments/coupon/list List Coupons 2021-07-28
PUT /payments/custom-provider/capabilities Custom-provider marketplace app update capabilities 2021-07-28
GET /payments/custom-provider/connect Fetch given provider config 2021-07-28
POST /payments/custom-provider/connect Create new provider config 2021-07-28
POST /payments/custom-provider/disconnect Disconnect existing provider config 2021-07-28
DELETE /payments/custom-provider/provider Deleting an existing integration 2021-07-28
POST /payments/custom-provider/provider Create new integration 2021-07-28
GET /payments/integrations/provider/whitelabel List White-label Integration Providers 2021-07-28
POST /payments/integrations/provider/whitelabel Create White-label Integration Provider 2021-07-28
GET /payments/orders List Orders 2021-07-28
GET /payments/orders/{orderId} Get Order by ID 2021-07-28
GET /payments/orders/{orderId}/fulfillments List fulfillment 2021-07-28
POST /payments/orders/{orderId}/fulfillments Create order fulfillment 2021-07-28
GET /payments/orders/{orderId}/notes List Order Notes 2021-07-28
POST /payments/orders/{orderId}/record-payment Record Order Payment 2021-07-28
GET /payments/subscriptions List Subscriptions 2021-07-28
GET /payments/subscriptions/{subscriptionId} Get Subscription by ID 2021-07-28
GET /payments/transactions List Transactions 2021-07-28
GET /payments/transactions/{transactionId} Get Transaction by ID 2021-07-28

Users

⚠️ Deprecations: Email update is deprecated. User deletion is asynchronous (returns 202 Accepted). GET /users/ is deprecated — use GET /users/search instead.

Method Path Summary Version Deprecated
GET /users/ Get User by Location 2021-07-28 ⚠️ YES
POST /users/ Create User 2021-07-28
GET /users/search Search Users 2021-07-28
POST /users/search/filter-by-email Filter Users by Email 2021-07-28
DELETE /users/{userId} Delete User 2021-07-28
GET /users/{userId} Get User 2021-07-28
PUT /users/{userId} Update User 2021-07-28

Workflows

Method Path Summary Version Deprecated
GET /workflows/ Get Workflow 2021-07-28

Documentation generated from GHL OpenAPI specifications. Always verify against the official GHL API documentation for the latest changes.