Skip to content

Autenticación

La API de Zelta Chat utiliza autenticación basada en tokens de acceso. Cada petición debe incluir un token válido en el header HTTP api_access_token.

URL base

https://chat.zelta.dev/api/v1

Todas las URLs de la API en esta documentación son relativas a esta URL base. Las rutas incluyen el account_id de tu cuenta:

https://chat.zelta.dev/api/v1/accounts/{account_id}/...

Obtener tu Account ID

El account_id es un identificador numérico que forma parte de todas las rutas de la API. Puedes encontrarlo de dos formas:

  1. En la URL: Inicia sesión en y observa la URL del navegador. El número que aparece después de /app/accounts/ es tu account_id.
  2. En Ajustes: Ve a Ajustes > Cuenta y busca el identificador de cuenta.

Obtener un token de acceso

Paso 1: Iniciar sesión

Inicia sesión en con tus credenciales.

Paso 2: Ir a tu perfil

Haz clic en tu avatar (esquina inferior izquierda) y selecciona Perfil, o navega a Ajustes > Perfil.

Paso 3: Copiar el token

En la sección Token de acceso, encontrarás tu token. Cópialo con el botón correspondiente.

Seguridad

Tu token de acceso otorga los mismos permisos que tu cuenta de usuario. Trátalo como una contraseña: no lo compartas ni lo expongas en código del lado del cliente.

Regenerar el token

Si necesitas invalidar tu token actual, haz clic en Restablecer en la misma sección. Se generará un nuevo token y el anterior dejará de funcionar de inmediato.

Usar el token en peticiones

Incluye el token en el header api_access_token de cada petición:

bash
curl -X GET "https://chat.zelta.dev/api/v1/accounts/{account_id}/conversations" \
  -H "api_access_token: {tu_token}" \
  -H "Content-Type: application/json"

Nota

El header se llama api_access_token (no Authorization ni Bearer). Asegúrate de usar exactamente este nombre.

Ejemplo: obtener el perfil del usuario autenticado

bash
curl -X GET "https://chat.zelta.dev/api/v1/profile" \
  -H "api_access_token: {tu_token}"

Ejemplo: listar conversaciones

bash
curl -X GET "https://chat.zelta.dev/api/v1/accounts/{account_id}/conversations" \
  -H "api_access_token: {tu_token}" \
  -H "Content-Type: application/json"

Ejemplo: enviar un mensaje

bash
curl -X POST "https://chat.zelta.dev/api/v1/accounts/{account_id}/conversations/{conversation_id}/messages" \
  -H "api_access_token: {tu_token}" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "Hola, ¿en qué puedo ayudarte?",
    "message_type": "outgoing"
  }'

Tipos de token

Existen dos tipos de tokens de acceso, cada uno con diferentes niveles de permisos:

Tokens de usuario

Son los tokens que se generan desde el perfil del usuario. Los permisos dependen del rol asignado:

RolAcceso
AdministradorAcceso completo a todos los endpoints de la API: conversaciones, contactos, canales, agentes, equipos, reportes, configuración y más.
AgenteAcceso limitado a las conversaciones asignadas, sus contactos asociados y las acciones propias de su rol (responder mensajes, cambiar estado, etc.).

Tokens de Agent Bot

Los Agent Bots son integraciones automatizadas que pueden interactuar con las conversaciones. Sus tokens se generan al crear un Agent Bot desde la API o la interfaz de administración, y tienen permisos limitados a:

  • Consultar y gestionar conversaciones
  • Enviar y recibir mensajes
  • Actualizar el estado de conversaciones
  • Asignar conversaciones a agentes o equipos

Roles y permisos

En lugar de scopes estilo OAuth, la API respeta los permisos del rol asignado al usuario propietario del token:

CapacidadAdministradorAgente
Listar todas las conversacionesSolo las asignadas
Gestionar contactosSolo los propios
Crear y configurar canalesNo
Administrar agentes y equiposNo
Acceder a reportesNo
Enviar mensajes en conversaciones asignadas
Cambiar estado de conversacionesSí (las asignadas)
Configuración de la cuentaNo

Principio de mínimo privilegio

Si tu integración solo necesita enviar y recibir mensajes, considera usar un token de Agent Bot o un usuario con rol de agente, en lugar de un token de administrador.

Límites de tasa (Rate Limiting)

La API implementa límites de tasa para garantizar la estabilidad del servicio.

Límites generales

Tipo de límiteValor
Peticiones generales3,000 por minuto por IP
Búsqueda de contactos100 por minuto por IP
Reportes100 por minuto por usuario

Respuesta al exceder el límite

Cuando se excede el límite, la API retorna un código HTTP 429 (Too Many Requests).

HTTP/1.1 429 Too Many Requests
Retry-After: 60

Límite excedido

Si recibes un error 429, espera el tiempo indicado antes de reintentar. Implementa un mecanismo de reintento con retroceso exponencial (exponential backoff) para manejar estos errores de manera elegante.

Errores de autenticación

Código HTTPSignificadoCausa habitual
401No autorizadoEl token es inválido, fue regenerado o no se incluyó en la petición.
403ProhibidoEl usuario no tiene permisos suficientes para la operación solicitada (por ejemplo, un agente intentando acceder a endpoints de administrador).
429Demasiadas peticionesSe excedió el límite de tasa. Espera antes de reintentar.

Ejemplo de error 401

json
{
  "errors": [
    "Token inválido o no proporcionado. Verifica tu header api_access_token."
  ]
}

Ejemplo de error 403

json
{
  "error": "Acceso denegado. Tu rol no tiene permisos para esta operación."
}

Buenas prácticas de seguridad

  • Nunca expongas tu token de acceso en código del lado del cliente (frontend, apps móviles, repositorios públicos).
  • Almacena los tokens en variables de entorno o un gestor de secretos.
  • Regenera tus tokens periódicamente, especialmente si sospechas que pudieron haber sido comprometidos.
  • Usa HTTPS exclusivamente; todas las peticiones a la API deben realizarse sobre conexiones seguras.
  • Asigna el rol mínimo necesario al usuario cuyo token utilizarás en tu integración.
  • Para integraciones automatizadas, prefiere tokens de Agent Bot sobre tokens de administrador.

Documentación oficial de Zelta