Skip to content

Começando

Este guia explica como se integrar com a API Voki para construir aplicações que utilizam a plataforma de videochamadas.

Pré-requisitos

  • Uma conta de tenant ativa na plataforma Voki
  • Credenciais de um usuário com papel adequado (ver Autenticação)
  • Cliente HTTP (curl, Postman, ou biblioteca na sua linguagem)

Base URL

Todos os endpoints da API utilizam a seguinte base URL:

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

Passo 1: Autenticação

O primeiro passo é obter um token JWT via login.

bash
curl -X POST https://voki.avanter.com.br/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{
    "email": "seu-email@empresa.com",
    "password": "sua-senha",
    "tenant": "slug-do-tenant"
  }'

A resposta conterá os tokens de acesso:

json
{
  "data": {
    "access_token": "eyJhbGciOiJIUzI1NiIs...",
    "refresh_token": "eyJhbGciOiJIUzI1NiIs...",
    "user": {
      "id": "uuid",
      "name": "Seu Nome",
      "email": "seu-email@empresa.com",
      "role": "manager"
    }
  }
}

Passo 2: Fazendo Requisições Autenticadas

Inclua o token e o tenant em todas as requisições:

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

Passo 3: Explorando os Recursos

Com o token em mãos, você pode acessar todos os endpoints da API conforme o papel do seu usuário:

PapelAcesso
attendantChamadas, clientes, tags, agendamentos
supervisorTudo de attendant + departamentos, setores, links, exportação
managerAcesso total: usuários, empresa, billing, analytics

Exemplo: Listar Departamentos

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

Exemplo: Listar Chamadas Recentes

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"

Passo 4: Tempo Real com WebSocket

Para funcionalidades em tempo real (fila, presença, notificações), conecte via WebSocket:

javascript
import { Socket } from "phoenix"

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

// Monitorar fila de um departamento
const queueChannel = socket.channel("queue:department_uuid")
queueChannel.join()

queueChannel.on("customer_joined", (payload) => {
  console.log("Novo cliente na fila:", payload)
})

// Rastrear presença dos atendentes
const presenceChannel = socket.channel("presence:department_uuid")
presenceChannel.join()

Veja mais detalhes em WebSockets.

Formato de Respostas

Sucesso (objeto único)

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

Sucesso (lista paginada)

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

Erro de Validação (422)

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

Erro Genérico (401/403/404)

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

Paginação

Endpoints de listagem suportam paginação via query parameters:

ParâmetroTipoPadrãoDescrição
pageinteger1Número da página (1-based)
page_sizeinteger20Itens por página (máx. 100)
sort_bystringvariaCampo para ordenação
sort_orderstringascasc ou desc

Rate Limiting

TipoLimite
Endpoints de autenticação (/api/auth/*)5 req/min
Endpoints públicos (widget, signup)30 req/min
Endpoints autenticadosSem limite explícito

Quando o rate limit é excedido, a API retorna 429 Too Many Requests.

SDKs e Bibliotecas

Atualmente não há SDKs oficiais. A API REST pode ser consumida diretamente com qualquer cliente HTTP. Para WebSocket, recomendamos a biblioteca oficial phoenix (JavaScript/TypeScript).

bash
npm install phoenix

Próximos Passos

Documentação da API Voki v4.0