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

Autenticação

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 v1 (Tenant)Bearer token

API por organização. Todas as requisições usam o token da organização (Configurações > API).

MétodoEndpointDescrição
GET/api/v1Informações da API e lista de endpoints disponíveis.
GET/api/v1/pingValida o token e retorna org_id. Útil para verificar se o token está ativo.
POST/api/v1/ingestEnvia um payload JSON para armazenamento no tenant. Query: ?source=opcional (default: api). Máximo 512 KB.
POST/api/v1/leadsCadastra ou atualiza lead no CRM. name obrigatório; pipeline_id, stage_id e custom_fields opcionais.
GET/api/v1/leadsLista leads do pipeline. Query: pipeline_id (opcional), limit (opcional, 1–500, default 100). Retorna custom_fields em cada lead.
GET/api/v1/powercrm/statusIndica se a organização tem Power CRM conectado (estados, cidades, marcas, modelos).
GET/api/v1/powercrm/statesLista estados (Power CRM). Query: ?q= busca, ?limit= (máx. 1000).
GET/api/v1/powercrm/citiesLista cidades (Power CRM). Query: ?q=, ?uf=, ?state_id=, ?limit= (máx. 1000).
GET/api/v1/powercrm/brandsLista marcas de veículos (Power CRM). Query: ?q=, ?limit= (máx. 1000).
GET/api/v1/powercrm/modelsLista 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 pipeline
  • limit (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.

API do painelSessão (login)

Endpoints que exigem usuário autenticado no painel (acesso via navegador logado ou requisições com cookies de sessão).

MétodoEndpointDescrição
GET/api/crm/kanbanRetorna 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 telefone
  • status — new | contacted | qualified | proposal | won | lost
  • source — filtro por origem do lead

Resposta: { pipeline, stages, leads }. Sem pipeline: pipeline: null, stages: [], leads: [].

API Embed (widget)Público

Endpoints públicos para o widget de chat embed. Não exigem autenticação.

MétodoEndpointDescrição
GET/api/embed/agent-infoPúblico. Retorna o nome do agente para widget (agentId obrigatório). Apenas agentes com channel=webchat.
POST/api/embed/chatPú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).

Webhooks

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
Códigos de resposta

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.