Skip to content

Primeros Pasos

Esta guía explica cómo integrarse con la API Voki para construir aplicaciones que utilicen la plataforma de videollamadas.

Requisitos Previos

  • Una cuenta de tenant activa en la plataforma Voki
  • Credenciales de un usuario con el rol adecuado (ver Autenticación)
  • Cliente HTTP (curl, Postman o biblioteca en su lenguaje)

Base URL

Todos los endpoints de la API utilizan la siguiente base URL:

https://voki.avanter.com.br/api/

Paso 1: Autenticación

El primer paso es obtener un token JWT mediante login.

bash
curl -X POST https://voki.avanter.com.br/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{
    "email": "su-email@empresa.com",
    "password": "su-contraseña",
    "tenant": "slug-del-tenant"
  }'

La respuesta contendrá los tokens de acceso:

json
{
  "data": {
    "access_token": "eyJhbGciOiJIUzI1NiIs...",
    "refresh_token": "eyJhbGciOiJIUzI1NiIs...",
    "user": {
      "id": "uuid",
      "name": "Su Nombre",
      "email": "su-email@empresa.com",
      "role": "manager"
    }
  }
}

Paso 2: Realizando Solicitudes Autenticadas

Incluya el token y el tenant en todas las solicitudes:

bash
curl -X GET https://voki.avanter.com.br/api/v1/users/me \
  -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIs..." \
  -H "X-Tenant: slug-del-tenant"

Paso 3: Explorando los Recursos

Con el token en mano, puede acceder a todos los endpoints de la API según el rol de su usuario:

RolAcceso
attendantLlamadas, clientes, tags, citas
supervisorTodo de attendant + departamentos, sectores, enlaces, exportación
managerAcceso total: usuarios, empresa, facturación, analytics

Ejemplo: Listar Departamentos

bash
curl -X GET https://voki.avanter.com.br/api/v1/departments \
  -H "Authorization: Bearer eyJhbGci..." \
  -H "X-Tenant: avanter"

Ejemplo: Listar Llamadas Recientes

bash
curl -X GET "https://voki.avanter.com.br/api/v1/calls?page=1&page_size=5&sort_order=desc" \
  -H "Authorization: Bearer eyJhbGci..." \
  -H "X-Tenant: avanter"

Paso 4: Tiempo Real con WebSocket

Para funcionalidades en tiempo real (cola, presencia, notificaciones), conéctese vía WebSocket:

javascript
import { Socket } from "phoenix"

const socket = new Socket("wss://voki.avanter.com.br/socket/websocket", {
  params: { token: accessToken }
})
socket.connect()

// Monitorear cola de un departamento
const queueChannel = socket.channel("queue:department_uuid")
queueChannel.join()

queueChannel.on("customer_joined", (payload) => {
  console.log("Nuevo cliente en la cola:", payload)
})

// Rastrear presencia de los agentes
const presenceChannel = socket.channel("presence:department_uuid")
presenceChannel.join()

Vea más detalles en WebSockets.

Formato de Respuestas

Éxito (objeto único)

json
{
  "data": {
    "id": "uuid",
    "campo": "valor"
  }
}

Éxito (lista paginada)

json
{
  "data": [...],
  "meta": {
    "current_page": 1,
    "page_size": 20,
    "total_pages": 5,
    "total_count": 100
  }
}

Error de Validación (422)

json
{
  "errors": {
    "email": ["não pode ficar em branco"],
    "password": ["deve ter pelo menos 8 caracteres"]
  }
}

Error Genérico (401/403/404)

json
{
  "errors": {
    "detail": "Não autorizado"
  }
}

Paginación

Los endpoints de listado soportan paginación mediante query parameters:

ParámetroTipoPredeterminadoDescripción
pageinteger1Número de página (basado en 1)
page_sizeinteger20Elementos por página (máx. 100)
sort_bystringvaríaCampo para ordenamiento
sort_orderstringascasc o desc

Rate Limiting

TipoLímite
Endpoints de autenticación (/api/auth/*)5 sol/min
Endpoints públicos (widget, signup)30 sol/min
Endpoints autenticadosSin límite explícito

Cuando se excede el rate limit, la API retorna 429 Too Many Requests.

SDKs y Bibliotecas

Actualmente no existen SDKs oficiales. La API REST puede consumirse directamente con cualquier cliente HTTP. Para WebSocket, recomendamos la biblioteca oficial phoenix (JavaScript/TypeScript).

bash
npm install phoenix

Próximos Pasos

Documentação da API Voki v4.0