Quick Start
Crie sua primeira análise de vendas em minutos seguindo este guia passo a passo.
Quick Start
Neste guia você vai criar sua primeira análise de ligação de vendas em 2 passos: buscar o ID do vendedor → enviar o áudio → receber a análise com score, transcrição e insights.
Você precisa de uma API Key válida antes de começar. Veja como obter uma em Autenticação.
Pré-requisitos
| Item | Valor |
|---|---|
| Base URL | https://api.evolu-ai.com/api |
| Header obrigatório | X-API-Key: evai_your_key_here |
| Content-Type | application/json |
Esta é a única Base URL que aceita autenticação por X-API-Key. Existe também uma rota /v1 usada internamente pelo painel web (sessão de navegador); não use /v1 com API Key, pois algumas operações lá exigem sessão e não funcionam só com a chave.
Passo 1: Buscar o ID do vendedor
A análise precisa do salespersonId para associar a ligação ao vendedor correto. Liste os vendedores da sua empresa; a API Key já identifica automaticamente a empresa correspondente:
curl -X GET 'https://api.evolu-ai.com/api/salespersons' \
-H 'X-API-Key: evai_your_key_here'Resposta:
[
{
"id": "user_abc123",
"name": "João Pereira",
"role": "salesperson",
"supervisorName": "Ana Costa"
},
{
"id": "user_def456",
"name": "Ana Costa",
"role": "supervisor",
"supervisorName": null
}
]Copie o id do vendedor desejado (no exemplo acima, user_abc123 para João Pereira).
Passo 2: Criar a análise
Agora envie a ligação para análise. Use o link de áudio público abaixo para testar sem precisar de upload próprio:
Áudio de exemplo para testes:
https://storage.evolu-ai.com/samples/demo-sales-call.mp3
Este arquivo é uma ligação de vendas fictícia de ~3 minutos, hospedada publicamente e aceita pela API para fins de demonstração.
O campo que recebe o áudio se chama audioKey. Apesar do nome, ele aceita uma URL HTTP/HTTPS direta (como no exemplo abaixo), uma Data URL em base64, ou uma chave de objeto do storage da Onvox AI. Veja todas as formas em Endpoints.
curl -X POST 'https://api.evolu-ai.com/api/analyses' \
-H 'Content-Type: application/json' \
-H 'X-API-Key: evai_your_key_here' \
-d '{
"salespersonId": "user_abc123",
"audioKey": "https://storage.evolu-ai.com/samples/demo-sales-call.mp3",
"clientName": "Empresa Teste Ltda"
}'Resposta (pode levar 30–90 segundos):
{
"id": "anal_xyz789",
"score": 74,
"summary": "O vendedor demonstrou boa escuta ativa e identificou necessidades claras do cliente. Houve dificuldade no fechamento, pois a proposta foi apresentada sem confirmação de BANT.",
"stage": "Qualify",
"salespersonName": "João Pereira",
"clientName": "Empresa Teste Ltda",
"audioDurationSeconds": 187,
"createdAt": "2025-01-15T14:32:00Z"
}Fluxo completo em código
JavaScript / Node.js
const API_KEY = 'evai_your_key_here';
const BASE_URL = 'https://api.evolu-ai.com/api';
async function primeiraAnalise() {
// Passo 1: Listar vendedores (a API Key já identifica sua empresa)
const usersRes = await fetch(`${BASE_URL}/salespersons`, {
headers: { 'X-API-Key': API_KEY }
});
const vendedores = await usersRes.json();
const vendedor = vendedores[0]; // pega o primeiro da lista
console.log('Vendedor selecionado:', vendedor.name, '| ID:', vendedor.id);
// Passo 2: Criar análise com áudio de exemplo
const analysisRes = await fetch(`${BASE_URL}/analyses`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-API-Key': API_KEY
},
body: JSON.stringify({
salespersonId: vendedor.id,
audioKey: 'https://storage.evolu-ai.com/samples/demo-sales-call.mp3',
clientName: 'Empresa Teste Ltda'
})
});
const analise = await analysisRes.json();
console.log('=== Análise Criada ===');
console.log('ID:', analise.id);
console.log('Score:', analise.score, '/ 100');
console.log('Etapa da venda:', analise.stage);
console.log('Duração do áudio:', analise.audioDurationSeconds, 'segundos');
console.log('Resumo:', analise.summary);
return analise;
}
primeiraAnalise().catch(console.error);Python
import requests
API_KEY = 'evai_your_key_here'
BASE_URL = 'https://api.evolu-ai.com/api'
headers = {'X-API-Key': API_KEY, 'Content-Type': 'application/json'}
# Passo 1: Listar vendedores (a API Key já identifica sua empresa)
vendedores = requests.get(f'{BASE_URL}/salespersons', headers=headers).json()
vendedor = vendedores[0]
print(f"Vendedor: {vendedor['name']} | ID: {vendedor['id']}")
# Passo 2: Criar análise
payload = {
'salespersonId': vendedor['id'],
'audioKey': 'https://storage.evolu-ai.com/samples/demo-sales-call.mp3',
'clientName': 'Empresa Teste Ltda'
}
res = requests.post(f'{BASE_URL}/analyses', json=payload, headers=headers)
analise = res.json()
print(f"\n=== Análise Criada ===")
print(f"ID: {analise['id']}")
print(f"Score: {analise['score']}/100")
print(f"Etapa: {analise['stage']}")
print(f"Resumo: {analise['summary'][:200]}...")Regras e limites importantes
Leia as regras abaixo antes de integrar em produção para evitar erros inesperados.
Sobre o áudio
| Regra | Valor |
|---|---|
| Tamanho máximo (Data URL base64) | 10 MB |
| Tamanho máximo (download por URL) | 40 MB |
| Duração máxima | Sem limite fixo: o custo em créditos escala com a duração |
| Formatos aceitos | mp3, mp4, wav, ogg, opus |
| URL deve ser pública | Sim, a API faz o download diretamente |
| URL deve usar HTTPS | Recomendado; http:// também é aceito |
| Extensão no caminho da URL | O caminho precisa terminar em .mp3, .mp4, .wav, .ogg ou .opus (a query string não conta). Sem isso, o valor não é baixado como URL: é tratado como chave de storage e o áudio não é encontrado |
Content-Type do servidor do áudio | Se o servidor enviar esse header, ele precisa ser de áudio (audio/mpeg, audio/mp3, audio/mp4, audio/wav, audio/wave, audio/ogg, audio/opus). Outro valor, como application/octet-stream, devolve 400 |
Os dois limites de tamanho são diferentes: um arquivo de 25MB funciona por URL, mas falha com 400 se enviado em base64 (limite de 10MB). Prefira audioKey como URL direta para arquivos grandes.
Sobre os inputs
Pelo menos um dos dois campos abaixo é obrigatório por requisição. Se vierem os dois, vale o transcript e o áudio não é transcrito:
| Campo | Quando usar |
|---|---|
audioKey | URL HTTP/HTTPS direta de um arquivo de áudio, Data URL em base64, ou chave de objeto no storage da Onvox AI |
transcript | Transcrição em texto puro, quando o áudio já foi transcrito externamente |
Rate limit
| Recurso | Limite |
|---|---|
Criar análise (POST /api/analyses) | 15 requisições/min por empresa |
| Análises simultâneas | Não há limite fixo, mas análises consomem créditos |
Créditos: Cada análise consome créditos baseados na duração do áudio e tokens de IA processados. O saldo de créditos hoje só é consultável pelo painel web (sessão de usuário); se sua chave ficar sem crédito, a requisição de análise devolve 403 Forbidden.
Tempo de processamento
O tempo de resposta varia conforme a duração do áudio:
| Duração do áudio | Tempo estimado |
|---|---|
| Até 5 minutos | 20–45 segundos |
| 5–30 minutos | 45–120 segundos |
| 30–120 minutos | 2–8 minutos |