API v1

Documentação da API

Integre seus assistentes do EVA HUB em qualquer aplicação com uma API REST simples e segura.

Introdução

A API do EVA HUB permite conversar com os assistentes da sua conta e listá-los programaticamente. Toda chamada é autenticada por uma chave de API e fica restrita aos dados da sua organização.

URL base de todas as requisições:

text
https://evahub.com.br/api/v1

Para criar uma chave, entre no painelConsole de APIChaves de API.

Autenticação

Inclua o cabeçalho Authorization com sua chave (prefixo evh_live_) em toda requisição. A chave identifica sua conta — mantenha-a secreta e nunca a exponha no frontend.

http
Authorization: Bearer evh_live_xxxxxxxxxxxxxxxx

Chaves podem ser revogadas a qualquer momento no Console, com efeito imediato.

POST /chat

Envia uma conversa para um assistente e retorna a resposta. Corpo da requisição:

  • assistant_id (obrigatório) — id do assistente (veja GET /assistants).
  • messages (obrigatório) — lista de mensagens { role, content }, onde role é user ou assistant.
  • stream (opcional) — se true, responde via Server-Sent Events no formato OpenAI.

cURL

bash
curl -X POST https://evahub.com.br/api/v1/chat \
  -H "Authorization: Bearer $EVA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "assistant_id": "asst_xxxxxxxx",
    "messages": [
      { "role": "user", "content": "Olá, pode me ajudar?" }
    ]
  }'

Python

python
import requests

resp = requests.post(
    "https://evahub.com.br/api/v1/chat",
    headers={"Authorization": f"Bearer {EVA_API_KEY}"},
    json={
        "assistant_id": "asst_xxxxxxxx",
        "messages": [{"role": "user", "content": "Olá, pode me ajudar?"}],
    },
)
print(resp.json()["message"]["content"])

Node.js

javascript
const resp = await fetch("https://evahub.com.br/api/v1/chat", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.EVA_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    assistant_id: "asst_xxxxxxxx",
    messages: [{ role: "user", content: "Olá, pode me ajudar?" }],
  }),
});
const data = await resp.json();
console.log(data.message.content);

Resposta

json
{
  "id": "chat_lq3z8k",
  "assistant_id": "asst_xxxxxxxx",
  "model": "claude-haiku-4-5",
  "message": { "role": "assistant", "content": "Claro! Em que posso ajudar?" },
  "usage": { "input_tokens": 12, "output_tokens": 24 }
}

Com "stream": true, a resposta é um fluxo de linhas data: {...} com choices[0].delta.content, encerrado por data: [DONE] — compatível com clientes do padrão OpenAI.

GET /assistants

Lista os assistentes da sua conta (sem expor o prompt do sistema). Use o id retornado no campo assistant_id de /chat.

bash
curl https://evahub.com.br/api/v1/assistants -H "Authorization: Bearer $EVA_API_KEY"
json
{
  "assistants": [
    {
      "id": "asst_xxxxxxxx",
      "nome": "Assistente de Atendimento",
      "descricao": "Tira dúvidas dos clientes",
      "persona": "generica",
      "status": "ativo",
      "criado_em": "2026-06-01T12:00:00.000Z"
    }
  ]
}

Erros

Erros retornam um JSON no formato { "error": { "type", "message" } } com o status HTTP correspondente:

401authentication_error — chave ausente, inválida ou revogada
400invalid_request_error — corpo inválido (assistant_id ou messages faltando)
404not_found_error — assistente não pertence à sua conta
429rate_limit_error — limite de requisições do plano atingido
502engine_error — motor temporariamente indisponível

Rate limits

Limite por conta (todas as suas chaves compartilham o teto do plano), em janela de 1 minuto. Ao exceder, a resposta é 429 com o cabeçalho Retry-After.

Plano
Requisições/min
Starter
60 req/min
Professional
300 req/min
Business
1.000 req/min
Enterprise
6.000 req/min
Pronto para integrar?Criar conta e gerar chave