Recursos de GoHighLevel
Cómo conectar la API de GoHighLevel
La documentación oficial es completa y está toda en inglés. Esta página traduce el camino de entrada: qué necesitas, en qué orden, y cómo hacer tu primera llamada sin perder una tarde.
En resumen
La API de GoHighLevel es el conjunto de endpoints que permite que otro programa lea y escriba en tu cuenta sin pasar por la interfaz. Muchas tareas comunes, como meter los leads de un formulario, se resuelven sin ella: empieza por la sección de abajo para saber si es tu caso. Si sí necesitas la API, hacen falta 3 cosas: un token de integración privada, el Location ID de la subcuenta, y la versión de la API en el encabezado. La documentación oficial vive en marketplace.gohighlevel.com/docs.
Actualizado
Antes de empezar: ¿de verdad necesitas la API?
Mucha gente llega aquí a resolver algo que no requiere la API, consigue un token y se queda atascada. Encuentra tu caso primero:
Camino A1
No programas y tu cliente acepta usar un formulario de GoHighLevel
Este es el camino corto y no necesita API, ni token, ni programador. GoHighLevel te da un código para insertar su formulario en cualquier web (Squarespace, Wix, Shopify, WordPress, Duda) y los contactos entran solos.
En GoHighLevel: Sites, luego Forms arriba a la derecha. Elige tu formulario o crea uno con "+ Add Form". Después entra a la pestaña Integrate, arriba a la derecha, y oprime Copy Embed Code. Ese código se pega en la web.
Guía oficial de insertar formularios en webs que no son de GoHighLevelCamino A2
No programas y el formulario que ya existe se queda como está
Este es el caso más común y también se resuelve sin API. En vez de llamar tú a GoHighLevel, haces que GoHighLevel te escuche: creas un webhook entrante, que es una dirección propia a la que el formulario le manda los datos. Ojo con la trampa: el disparador solo ARRANCA el workflow, no crea el contacto. Hay que agregarle la acción.
Los 5 pasos están abajo, en su propia sección.
Guía oficial del disparador Inbound WebhookCamino B
No programas, y ninguno de los dos caminos de arriba te alcanza
Entonces tu trabajo aquí es conseguir las credenciales y entregar el encargo bien armado. Haz los pasos 1 al 6 (son todos dentro de GoHighLevel, sin código) y quédate con dos datos: el token y el Location ID.
Pásale a tu programador el enlace de esta página, esos dos datos, y dile en una frase qué tiene que pasar. Con eso tiene todo lo que necesita para empezar.
Camino C
Programas, o vas a usar un asistente de IA para escribir el código
Sigue toda la página de corrido. Y usa el atajo que casi nadie ve: en la documentación oficial, cada endpoint tiene botones de Copy for LLM, Open in Claude y Open in ChatGPT, que le entregan al asistente la especificación exacta de ese endpoint.
Empieza por UN endpoint, no por entenderlo todo.
El camino sin código, completo: conectar un formulario que ya existe
Si escogiste el Camino A2, esto es todo lo que hay que hacer. No lleva token, ni API, ni programador. El paso 4 es el que casi todo el mundo se salta, y sin él el workflow parece configurado y no hace nada:
- 1
Crea el workflow con el disparador
En GoHighLevel: Automation, Workflows, y crea uno nuevo. Como disparador elige "Inbound Webhook". Se genera una URL única para ese workflow: cópiala.
- 2
Manda los datos del formulario a esa URL
Este paso pasa en la web, no en GoHighLevel. Busca en tu plugin de formularios una opción llamada Webhook, Webhooks o Send to URL, y pega ahí la URL que copiaste. Elementor Forms, WPForms, Gravity Forms y Fluent Forms la tienen (en varios casos solo en su versión de pago). Contact Form 7 no la trae de fábrica: ahí necesitas Zapier o Make de puente.
- 3
Llena el formulario una vez, de prueba
Con datos reales tuyos. Esto es obligatorio y no es opcional: GoHighLevel necesita recibir un envío para aprender cómo se llaman los campos que le manda tu formulario. Sin esa prueba no tienes nada que emparejar en el paso siguiente.
- 4
Agrega la acción que crea el contacto
Aquí es donde casi todo el mundo se queda a medias. El disparador solo arranca el workflow: hay que agregarle una acción que cree o actualice el contacto, y emparejar los campos que llegaron (nombre, correo, teléfono) con los campos del contacto en GoHighLevel.
- 5
Guarda, publica y comprueba con tus ojos
Guarda el disparador, publica el workflow, y llena el formulario otra vez. Después busca ese contacto en la subcuenta. Si aparece, funciona. Si no aparece, el problema está en el paso 2 (la URL) o en el 4 (el emparejamiento), en ese orden.
Si tu plugin de formularios no puede mandar datos a una URL, el puente se hace con Zapier o Make y sigue siendo sin código: Guía oficial de webhooks de HighLevel con Zapier.
Todo lo que viene después de aquí es para quien SÍ va a usar la API. Si lo de arriba te resolvió el caso, ya terminaste.
Lo que hace falta además del token
Esto es lo que más confunde y casi nunca se dice: la API no se llama sola. Un formulario en una página web no puede hablarle a GoHighLevel por su cuenta. Hace falta algo en medio, un programa corriendo en algún servidor, que reciba el dato del formulario y haga la llamada. Cuando contratas a alguien para "conectar la API", eso de en medio es lo que estás pagando.
Seis palabras que vas a ver
- Endpoint
- Una dirección web de GoHighLevel a la que tu programa le habla.
- Encabezado (header)
- Datos que van junto a la llamada, aparte de la dirección: quién eres y qué versión usas.
- Token
- Una contraseña larga que identifica a tu integración. Quien la tenga, entra.
- JSON
- El formato de texto en que viajan los datos. Se ve como una lista de campo y valor entre llaves.
- Terminal
- El programa de texto que ya viene en tu computadora para escribir comandos. En Mac se llama Terminal, en Windows PowerShell. Si nunca la has abierto, usa la documentación interactiva en su lugar.
- Error 401
- La respuesta que da la API cuando no le gustó tu token: o está mal copiado, o no tiene el permiso que pediste.
- Variable de entorno
- Un lugar fuera del código donde el programa guarda datos secretos como tu token. Si no programas, guárdalo en tu gestor de contraseñas y ya.
- Scopes (permisos)
- La lista de cosas que tu token puede hacer. Tú los marcas al crear la integración.
- Labs
- La sección de GoHighLevel donde se activan funciones que todavía no salen por defecto. Ahí se prende Private Integrations si no te aparece.
Qué es un endpoint, en una frase
Un endpoint es una dirección web que conecta con GoHighLevel. Lo que cambia es el método, o sea la intención con la que llamas a esa dirección:
| Método | Qué hace | Ejemplo |
|---|---|---|
GET | Trae información. No cambia nada. | Leer un contacto |
POST | Crea algo o dispara una acción. | Crear una oportunidad |
PUT | Actualiza algo que ya existe. | Cambiar el teléfono de un contacto |
DELETE | Borra. | Eliminar una cita |
La URL sola no alcanza. GoHighLevel necesita saber quién llama y en qué subcuenta, y eso viaja en los encabezados:
Qué puedes hacer con ella
Hay cientos de endpoints. Estas son las 6 familias donde casi todo el mundo empieza:
Contactos y CRM
Crear, leer, actualizar y borrar contactos, con etiquetas y campos personalizados.
Para qué sirve: Meter un lead desde tu propio formulario, sincronizar una lista, etiquetar por comportamiento.
Conversaciones
SMS, correo y llamadas: enviar mensajes, manejar hilos y leer el historial.
Para qué sirve: Responder un SMS desde tu app, leer la conversación antes de una llamada.
Calendario y citas
Agendar, mover y cancelar citas, y leer la disponibilidad real.
Para qué sirve: Un bot que confirma citas, o que ofrece el turno que se acaba de liberar.
Oportunidades
El pipeline: crear y mover oportunidades entre etapas.
Para qué sirve: Mover el deal cuando se firma, crear la oportunidad al recibir un lead calificado.
Pagos
Cobros, suscripciones y datos de transacciones.
Para qué sirve: Marcar un contacto como cliente cuando paga, leer suscripciones activas.
Webhooks
Avisos en tiempo real de más de 50 eventos, sin que tengas que preguntar cada rato.
Para qué sirve: Reaccionar en el momento en que entra un lead, en vez de revisar cada 5 minutos.
Cuál de los 3 métodos de autenticación te toca
Esta es la decisión que define todo lo demás, y equivocarse aquí significa rehacer el trabajo. Para automatizar tu cuenta o la de un cliente, la respuesta es la integración privada:
| Método | Permisos | Versión | Caducidad | Cuándo usarlo |
|---|---|---|---|---|
| Integración privada (PIT) | Permisos que tú eliges, por integración | API v2.0 | No caduca; se rota a mano cuando tú decidas | Automatizar tu cuenta o la de un cliente. Es la recomendada hoy. |
| Llave de API (legado) | Acceso sin restricción a toda la cuenta | API v1.0, sin mantenimiento | No caduca | Nada nuevo. Solo existe para integraciones viejas que aún no migran. |
| OAuth 2.0 | Permisos que aprueba cada cuenta al instalar | API v2.0 | El token caduca a diario y hay que refrescarlo | Distribuir o vender la integración a cuentas de terceros. |
Paso a paso para conectarla
- 1
Decide qué tipo de integración necesitas
Hay tres formas de autenticarte y elegir mal cuesta rehacer el trabajo. Para automatizar tu cuenta o la de un cliente, la respuesta correcta hoy es una integración privada.
- Integración privada (recomendada): token que generas desde la interfaz, con permisos que tú eliges. Usa la API v2.0.
- Llave de API (legado): da acceso sin restricción a toda la cuenta y corre sobre la v1.0, que ya no se mantiene. No la uses para algo nuevo.
- App de Marketplace con OAuth 2.0: para distribuir la integración a cuentas de otros. Sus tokens caducan a diario y hay que refrescarlos.
- 2
Abre Private Integrations en los ajustes de la agencia
El menú vive en los ajustes a nivel de agencia, no dentro de la subcuenta. Si no lo ves ahí, no está roto: la función se activa primero en Labs.
- Ruta: Settings (ajustes de la agencia) y busca Private Integrations en la lista.
- Si no aparece: Settings, Labs, y activa la función. Después vuelve a Settings.
- Por defecto todos los admin de agencia pueden crearlas. Para restringirlo: Settings, Team, edita el usuario, Roles & Permissions. Ahí se controla por separado el acceso a las integraciones de la agencia y a las de las subcuentas.
- 3
Crea la integración y ponle nombre
Haz clic en "Create new Integration" y dale un nombre y una descripción que digan para qué es. En seis meses, con cuatro tokens creados, el nombre es lo único que te va a decir cuál puedes revocar sin romper nada.
- Un token por integración, no uno para todo.
- Nombra por función y no por herramienta: "confirmación de citas dentales" sirve más que "token 2".
- 4
Elige solo los permisos que vas a usar
En el paso de scopes se marca a qué puede acceder el token. Marca lo mínimo. Aquí está la ventaja real sobre las llaves de API viejas: una llave da acceso a todo, este token da acceso solo a lo que tú marcaste.
- Si tu integración solo lee contactos, no le des permiso de borrar.
- Los permisos se pueden editar después sin generar un token nuevo, así que empieza corto y amplía cuando haga falta.
- 5
Copia el token AHORA
El token se muestra una sola vez y no se puede volver a ver. Si cierras esa pantalla sin copiarlo, no hay recuperación: toca rotarlo y empezar de nuevo. Guárdalo en un gestor de contraseñas o en una variable de entorno, nunca dentro del código.
- Si vas a pasárselo a un desarrollador, mándalo por un canal privado, nunca por un chat de grupo ni por correo.
- Un token que acabó en un repositorio se revoca, no se esconde: el historial de git lo conserva.
- 6
Saca el Location ID de la barra de direcciones
Casi todo endpoint necesita saber en qué subcuenta trabajar. Entra a la subcuenta y mira la URL de tu navegador: el Location ID es la cadena de letras y números que va después de /location/.
- app.gohighlevel.com/v2/location/ABC123xyz/dashboard, donde ABC123xyz es tu Location ID.
- Algunos endpoints de nivel agencia piden el Company ID en vez del Location ID.
- 7
Prueba la llamada sin escribir una sola línea de código
No necesitas instalar nada ni abrir la terminal para probar si tu token sirve. La documentación oficial ejecuta la llamada desde el navegador, y es la forma más rápida de saber si el problema es el token, el permiso o el dato. Los pasos exactos están abajo.
- 8
Ponle fecha a la rotación
HighLevel recomienda rotar el token cada 90 días. La rotación no corta el servicio: al rotar tienes una ventana de 7 días en la que el token viejo y el nuevo funcionan a la vez, para que actualices sin apuro.
- Ruta: Settings, Private Integrations, haz clic en tu integración, y usa "Rotate and expire this token later".
- Dentro de esos 7 días puedes "Cancel rotation" si necesitas más tiempo, o "Expire Now" si ya actualizaste todo.
- Si crees que el token se filtró, no esperes: usa "Rotate and expire this token now", que corta el viejo de inmediato.
Probarla desde el navegador, paso por paso
Esta es la ruta sin código. Los nombres de los campos y del botón son literales, tal como aparecen en la documentación oficial:
- 1.Abre la documentación oficial y busca en la barra lateral izquierda la familia de tu endpoint (por ejemplo Contacts) y luego el endpoint (por ejemplo Create Contact).
- 2.En el panel de la derecha, en la sección Auth, verás un campo que dice "Bearer Token". Pega tu token ahí.
- 3.Justo debajo, en Parameters, el desplegable "Version" ya viene con el valor correcto para ese endpoint. No lo cambies si no sabes por qué.
- 4.En la sección Body hay un JSON de ejemplo, editable. Cambia el "locationId" por el tuyo y pon datos reales en los otros campos.
- 5.Oprime el botón azul "Send API Request".
- 6.La respuesta aparece abajo, en la sección RESPONSE. Si el contacto se creó, ábrelo en GoHighLevel para comprobarlo con tus propios ojos.
Si programas: la misma llamada en código
Estos dos bloques se pegan en una terminal (el programa de comandos de tu computadora), o se los pasas a quien vaya a construir la integración. No van en el navegador ni dentro de GoHighLevel.
curl -X GET \
'https://services.leadconnectorhq.com/contacts/?locationId=TU_LOCATION_ID' \
-H 'Authorization: Bearer TU_TOKEN' \
-H 'Version: 2021-07-28' \
-H 'Accept: application/json'curl -X POST \
'https://services.leadconnectorhq.com/contacts/' \
-H 'Authorization: Bearer TU_TOKEN' \
-H 'Version: 2021-07-28' \
-H 'Content-Type: application/json' \
-d '{
"locationId": "TU_LOCATION_ID",
"firstName": "María",
"lastName": "Rivera",
"email": "maria@ejemplo.com",
"phone": "+13055550123",
"tags": ["lead-web"]
}'Si te da 401 y el token está bien
Ojo con el encabezado Authorization: la documentación del marketplace muestra el token con el prefijo Bearer, y el artículo de ayuda lo muestra sin prefijo. Empieza con Bearer, que es lo que trae la doc más nueva, y si recibes un 401 con el token correcto, prueba mandándolo sin el prefijo antes de seguir buscando.
Cambia TU_TOKEN y TU_LOCATION_ID por los tuyos. La URL base siempre es https://services.leadconnectorhq.com. Versiones disponibles hoy en el selector de la doc oficial: v32023-02-212021-07-282021-04-15.
Qué cambia según tu plan
No todos los planes abren los mismos endpoints, y esto es lo que más sorprende a mitad de un proyecto. Usamos los nombres de plan tal como los escribe HighLevel, no el precio, porque los precios cambian:
| Acceso | Planes | Qué incluye |
|---|---|---|
| API básica | Starter y Unlimited | La mayoría de los endpoints: contactos, oportunidades, calendarios, citas, formularios, conversaciones. Llaves de API a nivel de subcuenta (Location API Keys). |
| API avanzada | Agency Pro | Todo lo anterior más las llaves a nivel de agencia (Agency API Keys) y los endpoints de OAuth 2.0. Es lo que necesitas para crear subcuentas, cargar snapshots o crear usuarios por código. |
Límites de uso
Límite de ráfaga
100 solicitudes por cada 10 segundos
por app de Marketplace, recurso o compañía
Límite de diario
200,000 solicitudes por día
por app de Marketplace, recurso o compañía
Cada respuesta trae encabezados que te dicen cuánto te queda. Un programa bien hecho los lee y frena solo, en vez de esperar a que la API le devuelva un error:
X-RateLimit-Max | El techo de solicitudes de la ventana actual. |
X-RateLimit-Remaining | Cuántas te quedan en esta ventana. |
X-RateLimit-Interval-Milliseconds | De cuántos milisegundos es la ventana. |
X-RateLimit-Limit-Daily | Tu techo del día. |
X-RateLimit-Daily-Remaining | Cuántas te quedan hoy. |
Los 4 errores que cuestan más tiempo
- Olvidar el encabezado Version. El token está bien y la URL está bien, pero la llamada falla. Es el primer sitio donde mirar.
- Confundir Location ID con Company ID. El primero es la subcuenta, el segundo la agencia. Los endpoints de nivel agencia piden el segundo.
- Pedir un endpoint que tu plan no abre. Crear subcuentas o cargar snapshots requiere la API avanzada. No es un bug tuyo.
- Dejar el token en el código. Va en una variable de entorno. Un token subido a un repositorio hay que revocarlo, no esconderlo.
Preguntas frecuentes
¿Qué es la API de GoHighLevel?
Es el conjunto de direcciones web (endpoints) que le permiten a otro programa leer y escribir dentro de tu cuenta de GoHighLevel sin pasar por la interfaz. Con ella un contacto se crea desde tu propio formulario, una cita se agenda desde tu app, o un agente de IA mueve una oportunidad de etapa. La documentación oficial vive en marketplace.gohighlevel.com/docs.
¿Necesito saber programar para usarla?
Para usarla directamente, sí, aunque sea poco. Pero hay un camino intermedio real: darle la URL de la documentación oficial a un asistente de IA, explicarle tu negocio y pedirle que te arme y te explique la llamada. Es la recomendación que da HighLevel mismo, y funciona mejor si empiezas por UN endpoint en vez de intentar entenderlo todo.
¿Qué es un endpoint y qué significan GET, POST, PUT y DELETE?
Un endpoint es una URL que conecta con GoHighLevel. El método dice qué hace: GET trae información, POST crea algo o dispara una acción, PUT actualiza algo que ya existe, y DELETE lo borra. Es la misma dirección con distinta intención.
¿Qué necesito para autenticarme?
Un token en el encabezado Authorization con el formato Bearer, la versión de la API en el encabezado Version, y el Location ID de la subcuenta donde vas a trabajar. Algunos endpoints de nivel agencia piden Company ID en vez de Location ID.
¿Cuál es la diferencia entre integración privada y app de Marketplace?
La integración privada usa un token y sirve para automatizar tu propia cuenta o la de un cliente tuyo. La app de Marketplace usa OAuth 2.0, la instala cada cuenta que la quiera, y es el camino si vas a distribuir o vender la integración a terceros.
¿Todos los planes tienen el mismo acceso?
No. Los planes Starter y Unlimited traen la API básica con llaves a nivel de subcuenta. El plan Agency Pro añade la API avanzada: llaves a nivel de agencia y los endpoints de OAuth 2.0, que son los que permiten crear subcuentas, cargar snapshots y crear usuarios por código.
¿Cuáles son los límites de uso?
Cien solicitudes por cada diez segundos y 200,000 por día, contadas por app de Marketplace, recurso o compañía. Cada respuesta trae encabezados que te dicen cuántas te quedan, así que un programa bien hecho se frena solo antes de chocar con el límite.
¿Qué versión de la API debo usar?
Para algo nuevo, la más reciente disponible en el selector de versión de la documentación. Si mantienes una integración que ya funciona, quédate en su versión y cambia a propósito, no por accidente: cambiar de versión puede alterar la forma de la respuesta.
Fuentes oficiales
Esta página es una guía de entrada en español, no un reemplazo de la documentación. Cuando necesites el detalle exacto de un endpoint, la fuente manda:
- Documentación oficial de la API
Todos los endpoints, con selector de versión y ejecución interactiva.
- Artículo de ayuda sobre la API
Diferencias por plan, límites de uso y cómo reportar un bug.
- Portal de desarrolladores
Marketplace, comunidad de Slack y llamada mensual de desarrolladores.
Datos verificados contra esas fuentes el 2026-08-24. GoHighLevel cambia su API y sus planes: si algo no cuadra, la documentación oficial es la que vale. Explicación del recorrido de la documentación tomada del video «The GHL API is the most powerful feature» de Andrew George.
Sigue con los cambios diarios de GoHighLevel, los recursos de GHL del catálogo o el glosario de términos de IA.