Skip to content

Autenticacion

La API de Zelta CRM utiliza autenticacion basada en tokens Bearer (OAuth 2.0) para proteger el acceso a los recursos.

URL base

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

Obtener un token de acceso

Paso 1: Crear una aplicacion API

  1. Ve a Ajustes > API > Aplicaciones.
  2. Haz clic en + Nueva aplicacion.
  3. Completa los datos:
    • Nombre de la aplicacion
    • URL de redireccion (para flujo OAuth)
    • Scopes requeridos
  4. Guarda y copia tu client_id y client_secret.

Seguridad

El client_secret solo se muestra una vez al momento de crearlo. Guardalo en un lugar seguro. Si lo pierdes, deberas generar uno nuevo.

Paso 2: Solicitar un token

Realiza una peticion POST al endpoint de autenticacion:

bash
curl -X POST https://api.zelta.dev/oauth/token \
  -H "Content-Type: application/json" \
  -d '{
    "grant_type": "client_credentials",
    "client_id": "tu_client_id",
    "client_secret": "tu_client_secret",
    "scope": "crm:read crm:write"
  }'

Respuesta exitosa

json
{
  "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
  "token_type": "Bearer",
  "expires_in": 3600,
  "refresh_token": "rt_a1b2c3d4e5f6...",
  "scope": "crm:read crm:write"
}

Paso 3: Usar el token

Incluye el token en el header Authorization de cada peticion:

bash
curl -X GET https://api.zelta.dev/crm/v1/contacts \
  -H "Authorization: Bearer eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9..."

Scopes disponibles

Los scopes controlan que operaciones puede realizar tu aplicacion:

ScopeDescripcionPermisos
crm:readLectura de datos del CRMConsultar contactos, negocios, actividades y pipelines
crm:writeEscritura de datos del CRMCrear y actualizar contactos, negocios y actividades
crm:deleteEliminacion de registrosEliminar contactos, negocios y actividades
crm:automationsGestion de automatizacionesCrear, editar y ejecutar automatizaciones y secuencias
crm:reportsAcceso a reportesConsultar dashboards, pronosticos y metricas
crm:adminAdministracion completaTodos los permisos, gestion de usuarios y configuracion

Principio de minimo privilegio

Solicita unicamente los scopes que tu aplicacion necesita. Por ejemplo, si solo necesitas leer contactos, usa crm:read en lugar de crm:admin.

Renovacion de tokens

Los tokens tienen una vigencia de 1 hora (3600 segundos). Para renovar:

bash
curl -X POST https://api.zelta.dev/oauth/token \
  -H "Content-Type: application/json" \
  -d '{
    "grant_type": "refresh_token",
    "refresh_token": "rt_a1b2c3d4e5f6...",
    "client_id": "tu_client_id"
  }'

Respuesta de renovacion

json
{
  "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9...",
  "token_type": "Bearer",
  "expires_in": 3600,
  "refresh_token": "rt_nuevo_token...",
  "scope": "crm:read crm:write"
}

Renovacion proactiva

Implementa la renovacion del token antes de que expire (por ejemplo, a los 50 minutos) para evitar interrupciones en tus integraciones.

Errores de autenticacion

Codigo HTTPErrorDescripcion
401unauthorizedToken ausente, expirado o invalido
403forbiddenEl token no tiene los scopes necesarios para esta operacion
429rate_limitedSe excedio el limite de peticiones

Ejemplo de error

json
{
  "error": "unauthorized",
  "message": "El token de acceso ha expirado.",
  "hint": "Solicita un nuevo token usando tu refresh_token."
}

Limites de tasa (Rate Limiting)

PlanLimite por minuto
Free30 peticiones
Starter100 peticiones
Professional500 peticiones
Business2,000 peticiones

Los headers de respuesta incluyen informacion sobre tu limite actual:

X-RateLimit-Limit: 500
X-RateLimit-Remaining: 487
X-RateLimit-Reset: 1709145600
HeaderDescripcion
X-RateLimit-LimitMaximo de peticiones permitidas en la ventana actual
X-RateLimit-RemainingPeticiones restantes en la ventana actual
X-RateLimit-ResetTimestamp Unix de cuando se reinicia el contador

Manejo de errores 429

Implementa un mecanismo de reintento exponencial (exponential backoff) para manejar errores 429 de manera elegante. Ejemplo: esperar 1s, 2s, 4s, 8s entre reintentos.

Documentación oficial de Zelta