Documentação da API
Referência completa dos endpoints da plataforma Boxify OS: API por tenant (v1), APIs do painel e embed.
Base URL: https://boxify.com.br
API v1 (por tenant)
Use o header Authorization: Bearer <seu_token>. O token é gerado por organização em Configurações > API no painel. Cada token está vinculado a uma organização (tenant).
curl -X GET "https://boxify.com.br/api/v1/ping" \ -H "Authorization: Bearer bx_seu_token_aqui"
APIs do painel (ex.: CRM Kanban)
Requerem usuário logado no painel (sessão via cookie). Use as requisições a partir do mesmo domínio do painel (ou envie os cookies de sessão).
APIs Embed
Endpoints públicos para o widget de chat embed; não exigem autenticação.
API por organização. Todas as requisições usam o token da organização (Configurações > API).
| Método | Endpoint | Descrição |
|---|---|---|
| GET | /api/v1 | Informações da API e lista de endpoints disponíveis. |
| GET | /api/v1/ping | Valida o token e retorna org_id. Útil para verificar se o token está ativo. |
| POST | /api/v1/ingest | Envia um payload JSON para armazenamento no tenant. Query: ?source=opcional (default: api). Máximo 512 KB. |
| POST | /api/v1/leads | Cadastra ou atualiza lead no CRM. name obrigatório; pipeline_id, stage_id e custom_fields opcionais. |
| GET | /api/v1/leads | Lista leads do pipeline. Query: pipeline_id (opcional), limit (opcional, 1–500, default 100). Retorna custom_fields em cada lead. |
| GET | /api/v1/powercrm/status | Indica se a organização tem Power CRM conectado (estados, cidades, marcas, modelos). |
| GET | /api/v1/powercrm/states | Lista estados (Power CRM). Query: ?q= busca, ?limit= (máx. 1000). |
| GET | /api/v1/powercrm/cities | Lista cidades (Power CRM). Query: ?q=, ?uf=, ?state_id=, ?limit= (máx. 1000). |
| GET | /api/v1/powercrm/brands | Lista marcas de veículos (Power CRM). Query: ?q=, ?limit= (máx. 1000). |
| GET | /api/v1/powercrm/models | Lista modelos de veículos (Power CRM). Query: ?q=, ?brand_id=, ?year=, ?limit= (máx. 1000). |
POST /api/v1/leads — Body (JSON)
name(obrigatório)email,phone,document(opcionais)status— new | contacted | qualified | proposal | won | lost (default: new)score— 0–100 (opcional)value— número (opcional)pipeline_id,stage_id— UUIDs (opcionais; se omitidos, usa pipeline/etapa padrão)custom_fields— objeto opcional: chaves são os keys dos campos personalizados (CRM → Configurações → Campos). Valores podem ser string, número, boolean ou array de strings (multi_select). Datas no formato YYYY-MM-DD.
curl -X POST "https://boxify.com.br/api/v1/leads" \
-H "Authorization: Bearer bx_seu_token" \
-H "Content-Type: application/json" \
-d '{"name":"João Silva","email":"joao@email.com","phone":"11999999999"}'Exemplo com custom_fields
{
"name": "Nome de Teste",
"email": "email@exemplo.com",
"phone": "(31) 98902-1479",
"document": "18.384.262/0001-62",
"status": "new",
"score": 100,
"value": 10000,
"pipeline_id": "9abf49fa-1b05-4be7-8ec5-76646e4df53d",
"stage_id": "a27eca03-6cf7-47e6-91ba-f218b9da34d7",
"custom_fields": {
"datadaatualizacao": "2026-03-04",
"datadalista": "2026-03-01",
"datadeconclusao": "2026-03-30",
"datadenascimento": "1994-09-28",
"observacoes": "Observações",
"responsavel": "Responsável",
"statusboavista": true,
"statuscenprotsp": true,
"statusdoprocesso": "100% baixado",
"statusspc": true,
"tipodeprocesso": ["individual"]
}
}GET /api/v1/leads — Query e resposta
Lista leads do pipeline. Se pipeline_id não for enviado, usa o pipeline padrão da organização. Cada lead na resposta inclui custom_fields (objeto chave → valor).
pipeline_id(opcional) — UUID do pipelinelimit(opcional) — 1–500, default 100
curl -X GET "https://boxify.com.br/api/v1/leads?pipeline_id=9abf49fa-1b05-4be7-8ec5-76646e4df53d&limit=50" \ -H "Authorization: Bearer bx_seu_token"
Resposta (200):
{
"ok": true,
"pipeline_id": "9abf49fa-1b05-4be7-8ec5-76646e4df53d",
"leads": [
{
"id": "uuid",
"name": "Nome de Teste",
"email": "email@exemplo.com",
"phone": "(31) 98902-1479",
"document": "18.384.262/0001-62",
"status": "new",
"score": 100,
"value": 10000,
"pipeline_id": "...",
"stage_id": "...",
"created_at": "...",
"updated_at": "...",
"custom_fields": {
"datadaatualizacao": "2026-03-04",
"datadenascimento": "1994-09-28",
"observacoes": "Observações",
"tipodeprocesso": ["individual"]
}
}
],
"org_id": "uuid"
}POST /api/v1/ingest — Body e Query
Body: qualquer JSON (até 512 KB). Query: ?source= opcional (default: api).
curl -X POST "https://boxify.com.br/api/v1/ingest?source=meu_sistema" \
-H "Authorization: Bearer bx_seu_token" \
-H "Content-Type: application/json" \
-d '{"evento":"clique","pagina":"/produto"}'Power CRM — Query params
- states:
q(busca),limit(máx. 1000) - cities:
q,uf,state_id,limit - brands:
q,limit - models:
q,brand_id,year,limit
Power CRM precisa estar conectado na organização (integrações). Caso contrário, retorna 404.
Endpoints que exigem usuário autenticado no painel (acesso via navegador logado ou requisições com cookies de sessão).
| Método | Endpoint | Descrição |
|---|---|---|
| GET | /api/crm/kanban | Retorna todos os dados do Kanban: pipeline (padrão ou por pipelineId), etapas e leads. Requer login e acesso ao módulo CRM. |
GET /api/crm/kanban — Query params
pipelineId— UUID do pipeline (opcional; se omitido, usa o pipeline padrão)search— busca em nome, email e telefonestatus— new | contacted | qualified | proposal | won | lostsource— filtro por origem do lead
Resposta: { pipeline, stages, leads }. Sem pipeline: pipeline: null, stages: [], leads: [].
Endpoints públicos para o widget de chat embed. Não exigem autenticação.
| Método | Endpoint | Descrição |
|---|---|---|
| GET | /api/embed/agent-info | Público. Retorna o nome do agente para widget (agentId obrigatório). Apenas agentes com channel=webchat. |
| POST | /api/embed/chat | Público. Chat do widget embed. Body: agentId, messages[]. Apenas agentes webchat ativos. |
POST /api/embed/chat — Body (JSON)
agentId (obrigatório), messages (array de { role, content } obrigatório). Opcionais: sessionId, contactName, contactPhone, contactEmail (para criar/associar lead).
Endpoints recebidos por serviços externos (Stripe, Mercado Pago, WhatsApp, Twilio, Boxify Call, etc.). Configurados e utilizados internamente; não são chamados com token da API v1.
/api/webhooks/stripe/api/webhooks/mercadopago/api/webhooks/whatsapp,/api/webhooks/whatsapp/process/api/webhooks/twilio/api/webhooks/boxify-call,/api/webhooks/boxify-call/control
200 — Sucesso.
400 — Requisição inválida (body/query).
401 — Não autenticado (token ausente ou inválido).
403 — Sem permissão (ex.: sem acesso ao módulo CRM).
404 — Recurso não encontrado (ex.: Power CRM não conectado).
413 — Payload maior que o permitido (ex.: ingest > 512 KB).
500 — Erro interno; corpo pode incluir error e message.