Appearance
Origen — GoHighLevel API
Conexión
| Item | Valor |
|---|---|
| Base URL | https://services.leadconnectorhq.com |
| Auth | Authorization: Bearer pit-... (Private Integration Token) |
| Header obligatorio | Version: 2021-07-28 |
| Content-Type | application/json (en POST) |
| Scope | Token Location-scoped (sub-cuenta única) |
Endpoints utilizados
Sub-account / Location
GET /locations/{id}— info general (nombre, timezone, currency, dirección)GET /locations/{id}/customFields— definiciones de custom fields (227 docs)GET /locations/{id}/customValues— valores constantes a nivel locationGET /locations/{id}/tags— tags maestros
Users
GET /users/?locationId={id}— usuarios de la location
Contactos
POST /contacts/search— listado paginado consearchAfterGET /contacts/{id}— detalle completo de un contactoGET /contacts/{id}/notes— notas de un contactoGET /contacts/{id}/tasks— tasks de un contactoGET /contacts/{id}/appointments— appointments del contacto
Oportunidades
GET /opportunities/pipelines?locationId={id}— todos los pipelines y stagesGET /opportunities/search?location_id={id}— búsqueda paginada cursorGET /opportunities/{id}— detalle
Conversaciones / mensajes
GET /conversations/search?locationId={id}— listado paginadoGET /conversations/{id}— detalleGET /conversations/{id}/messages— mensajes conlastMessageIdcomo cursor
Calendarios
GET /calendars/?locationId={id}— lista de calendariosGET /calendars/events?calendarId={id}&startTime={ms}&endTime={ms}— eventos por calendar (rango epoch ms)
Formularios
GET /forms/?locationId={id}— formulariosGET /forms/submissions?locationId={id}&formId={id}— respuestas
Paginación
GHL usa cursor pagination en casi todos los endpoints:
http
POST /contacts/search
{
"locationId": "SW4v78LtTjzKHd3cnJ48",
"pageLimit": 100,
"page": 1
}Respuesta incluye searchAfter: [timestamp, id] en el último hit. Para la siguiente página:
json
{
"locationId": "SW4v78LtTjzKHd3cnJ48",
"pageLimit": 100,
"searchAfter": [1777138051687, "kkzYOo4eCGQOvJYNQYXo"]
}El parámetro
pagees legacy; preferirsearchAfterpara datasets > 10k.
Rate limits
GHL no documenta los límites públicamente. Empíricamente:
- ~10 req/s estables sin problema
- Bursts de 30+ req/s disparan 429
- El script aplica throttle de 100ms entre requests (10 RPS) y backoff exponencial en 429.
Forma de los recursos clave
Contact
json
{
"id": "8McTOURh47cMDDqn3QkN",
"dateAdded": "2025-10-25T19:27:11.308Z",
"dateUpdated": "2026-03-10T15:25:53.160Z",
"type": "lead",
"locationId": "SW4v78LtTjzKHd3cnJ48",
"firstName": "Yordan",
"lastName": "Fuentes Reyna",
"email": "yordanfr24@gmail.com",
"phone": "+18326574289",
"country": "US",
"address1": "701 Ridgewood Dr",
"city": "Nacogdoches",
"state": "Texas",
"postalCode": "75964",
"dateOfBirth": "2001-01-24",
"companyName": "Geico",
"assignedTo": "fRhUw2lnNJAGRH6IJQVT",
"tags": ["[device] - dunia", "commercial auto"],
"dndSettings": { "SMS": {...}, "Email": {...} },
"customFields": [
{ "id": "T0W74DhZbxPxAcUgtqwE", "value": ["Male"] }
],
"additionalEmails": [],
"additionalPhones": []
}Opportunity
json
{
"id": "tHSI4my59X1us9K9EqgJ",
"name": "Alberto Ramirez",
"monetaryValue": 0,
"pipelineId": "o41xJFtUsz8oECejn33f",
"pipelineStageId": "58fff988-b47b-411e-9650-afb6c5c42f55",
"assignedTo": "2B4Azd9QGTeWYOEwrWxc",
"status": "open",
"source": "InsureX",
"lastStatusChangeAt": "2026-04-28T14:55:03.528Z",
"createdAt": "2026-04-28T14:55:03.528Z",
"contactId": "ZQnDlJv0fEdER2T3uJTH",
"contact": { "id": "...", "name": "...", "email": "...", "phone": "..." },
"customFields": []
}Note
json
{
"id": "yCFzMvXtro812ftGqRKC",
"body": "Card on File\nName: Reyna Y Fuentes\n6011 4101 8496 3010\n...",
"userId": "pwmwXD84OcNyFl05j2D7",
"dateAdded": "2025-10-27T16:27:11.106Z",
"contactId": "8McTOURh47cMDDqn3QkN",
"pinned": false
}Message
json
{
"id": "6V72KyTd7nS5j7ZB1MrR",
"direction": "inbound",
"status": "delivered",
"type": 20,
"messageType": "TYPE_CUSTOM_SMS",
"body": "Si esta automatico",
"contactId": "8McTOURh47cMDDqn3QkN",
"conversationId": "Druswwum0N8udEPIemFt",
"dateAdded": "2026-04-28T01:15:24.161Z",
"from": "+18326574289",
"to": "Trebol Insurance"
}