Ir al contenido

API de ZeroChats — tus datos donde ya trabajas

La API de ZeroChats te deja trabajar con los datos de tu negocio desde fuera de la plataforma. Generas una clave, la pones en la herramienta que ya usas y esa herramienta habla directamente con ZeroChats. Hoy cubre dos cosas:

  • Estadísticas. Los mismos leads, las mismas conversiones y el mismo rendimiento por publicación que ves en la sección Estadísticas, listos para llevarlos a un panel o a una hoja de cálculo.
  • Leads. Buscar un lead por usuario, email o teléfono, leer su ficha y cambiarle la etapa, las etiquetas o los datos de contacto desde otra herramienta.

Es la respuesta a un problema concreto: tus datos de ZeroChats viven en ZeroChats y el resto —inversión en anuncios, reservas, pagos, facturación— viven en otro sitio. Con la API los juntas sin exportar un CSV cada lunes, y cuando pasa algo en otra herramienta puedes reflejarlo en el lead sin entrar en el dashboard.

Looker Studio o Power BI

Un panel que mezcla tus leads de ZeroChats con la inversión publicitaria y calcula el coste real por cliente.

Google Sheets

Una hoja que se actualiza sola con los leads del mes y las conversiones por enlace de venta.

n8n, Make o Zapier

Un flujo que cada lunes publica el resumen de la semana en Slack, y otro que, cuando alguien reserva o paga en otra herramienta, etiqueta al lead y lo mueve de etapa.

Tu propio backend

Cualquier servicio que sepa hacer una petición HTTP con una cabecera puede consumirla.

La API no crea leads ni manda mensajes. Sí puede cambiar la etapa, las etiquetas y los datos de contacto de un lead a través de los endpoints de leads; todo lo demás sigue siendo de solo lectura.

  1. Entra en Configuración del negocio y abre la pestaña Integraciones. Las herramientas están en la sección CRM, webhooks y tracking, una tarjeta por integración.

  2. Busca la tarjeta API de ZeroChats y pulsa Crear clave.

  3. Pulsa Generar clave. La clave aparece en pantalla, empieza por zcst_ y es única de tu negocio.

  4. Cópiala en ese momento. Es la única vez que se muestra completa. A partir de ahí solo verás una versión abreviada, tipo zcst_ab12…7yz9, suficiente para reconocerla pero no para usarla.

  5. Guárdala en tu herramienta y haz la primera llamada para comprobar que responde.

Una vez creada, la tarjeta te dice si la clave se ha usado alguna vez y cuándo fue la última llamada. Es la forma rápida de comprobar que la integración del otro lado está realmente funcionando: si dice sin llamadas todavía, tu herramienta no ha llegado a conectar.

Desde ese mismo diálogo puedes Regenerar la clave (crea una nueva y anula la anterior al instante) o Revocarla (la borra; a partir de ese momento toda llamada recibe un error de autorización).

Léete esta sección entera antes de pegar la clave en ningún sitio.

  • La clave solo alcanza tu negocio. El negocio no se indica en la petición: se deduce de la propia clave. Una clave no puede consultar los datos de otra cuenta ni aunque quien la tenga lo intente a propósito, sencillamente porque no hay ningún parámetro donde pedirlo. Cualquier lead que no sea tuyo responde 404, igual que uno que no existe.
  • La clave también edita leads. Quien la tenga puede cambiar la etapa, las etiquetas y los datos de contacto de tus leads, no solo leer métricas. Trátala como una contraseña con permisos de escritura.
  • Es de servidor a servidor. No la pongas en una página web, ni en una app móvil, ni en el JavaScript de tu landing. Cualquiera que abra esa página puede ver la clave en el código y, con ella, leer todas tus métricas y tocar tus leads.
  • Guárdala donde se guardan las contraseñas. El almacén de credenciales de n8n, las variables de entorno de tu servidor, los custom values de GoHighLevel. No en un documento compartido ni en un export de flujo que luego circula por correo.
  • Ante la duda, regenera. Si la clave ha acabado en un log, en una captura de pantalla o en un chat, regenérala. Es gratis e instantáneo; lo único que cuesta es actualizarla en tu herramienta.
  • Una clave por negocio. Al generar una nueva se sustituye la anterior, así que si tienes varias integraciones apuntando a la misma clave, todas dejan de funcionar a la vez cuando la regeneras. Actualízalas todas.

La URL base es:

https://app.zerochats.com/api/v1

La clave viaja en la cabecera Authorization:

Ventana de terminal
curl -H "Authorization: Bearer zcst_tu_clave" \
https://app.zerochats.com/api/v1/me

Si tu herramienta no te deja tocar la cabecera Authorization, también aceptamos la clave en x-api-key con el mismo valor, sin el Bearer delante.

GET /me no devuelve métricas ni leads: solo te dice a qué negocio pertenece la clave y en qué zona horaria están expresados los días de las estadísticas. Es la llamada más barata para comprobar que la clave funciona antes de montar nada encima.

{
"success": true,
"data": { "id": "b7a2f1d9-5c34-4a61-8e2f-0d9c1b4a7e33", "name": "Mi negocio", "locale": "es" },
"meta": { "timezone": "Europe/Madrid" }
}

Todas las respuestas tienen la misma forma. Si la llamada va bien:

{
"success": true,
"data": {},
"meta": {}
}

data cambia según el endpoint. meta solo viaja en los endpoints que tienen algo que contarte: en los de estadísticas siempre, con el periodo y la zona horaria que han producido los números; en /me, con la zona horaria; en los de leads no viene.

Si algo falla:

{
"success": false,
"error": {
"code": "invalid_request",
"message": "provide exactly one of username, email or phone"
}
}

Toma tus decisiones mirando error.code, que es estable. El message está pensado para que lo leas tú mientras montas la integración y puede cambiar de redacción.

Puedes hacer 60 peticiones por minuto, contando todos los endpoints juntos. Es de sobra para un panel que se refresca cada hora, un informe diario o un flujo que actualiza leads según van llegando reservas; solo te lo encontrarás si montas un bucle que recorre muchos días o muchos leads de uno en uno.

Cada respuesta te dice cómo vas:

CabeceraQué es
X-RateLimit-LimitPeticiones permitidas por minuto.
X-RateLimit-RemainingLas que te quedan en este minuto.
X-RateLimit-ResetCuándo se renueva el cupo, en segundos Unix.
Retry-AfterSegundos que tienes que esperar. Solo cuando te pasas.

Cuando te pasas recibes un 429 con error.code a rate_limited. La forma correcta de tratarlo es esperar los segundos que dice Retry-After y reintentar: cuando vuelvas tendrás el cupo entero. Reintentar antes solo consume intentos.

Código HTTPerror.codeQué ha pasado
401unauthorizedFalta la cabecera, o la clave está mal escrita, revocada o ya no existe.
400invalid_requestUn parámetro o el cuerpo no es válido. El message te dice cuál.
404not_foundEl lead no existe o no es de tu negocio.
429rate_limitedHas superado las 60 peticiones en el minuto en curso.
500internal_errorAlgo ha fallado por nuestra parte. Reintenta con espera y, si sigue, abre un ticket.

Un 401 después de que todo funcionara suele significar una de dos cosas: alguien ha regenerado la clave desde la app, o la ha revocado. Entra en el diálogo y comprueba la fecha de creación.

  • Usa id como clave, no name. Los nombres de etiquetas, contenidos y enlaces de venta se pueden cambiar desde la app; los identificadores no. Con los leads pasa lo mismo: el id que te da el webhook o la búsqueda es estable, el usuario puede cambiar.
  • Guarda la respuesta cruda además de tu tabla procesada, al menos mientras montas la integración. Cuando un número no cuadre, tener el JSON original ahorra medio día.
  • Refresca con cabeza. Los paneles de negocio se leen una vez al día; refrescar cada minuto no te da información nueva y te acerca al límite de peticiones.
  • Deja que el webhook te avise y usa la API para actuar. Sondear la API cada pocos segundos para detectar cambios es la forma más rápida de gastar el cupo; el Webhook personalizado te lo cuenta gratis y al instante.