Para desenvolvedores

Integração com APIs de terceiros

Conecte seu ERP, e-commerce ou sistema interno ao Venda no Chat. Você pode expor endpoints REST para carregamento inicial de dados (GET) e enviar atualizações em tempo real via webhook (push).

Configure credenciais em Integrações → APIs de terceiros no painel administrativo. Cada integração recebe um slug único usado como import_source e na URL do webhook.

Autenticação

Todas as requisições de saída (quando o Venda no Chat consulta suas APIs) e de entrada (webhook) usam o token configurado no painel.

Envie o header:

Texto
Authentication: bearer SEU_TOKEN

O formato é o mesmo da integração Nuvemshop. Também aceitamos Authorization: Bearer … no webhook.

Carregamento de dados

Para importar dados do seu sistema, informe no painel um endereço (URL) para cada tipo: produtos, clientes e vendas. O Venda no Chat consulta cada URL com uma requisição GET, usando o token de autenticação configurado na integração.

Cada endpoint deve responder com JSON. O corpo pode ser uma lista direta de registros ou um objeto com a lista em uma das chaves data, results ou items. Campos adicionais nos objetos são ignorados.

Formato aceito — lista direta:

JSON
[
  {
    "name": "Produto A",
    "sku": "SKU-001",
    "price": 99.9
  }
]

Formato aceito — objeto com chave de lista:

JSON
{
  "data": [
    {
      "name": "Produto A",
      "sku": "SKU-001",
      "price": 99.9
    }
  ]
}

Abaixo estão os contratos de cada tipo. Cada subseção descreve o payload aceito para o respectivo endereço configurado no painel.

Produtos

Configure a URL da API de produtos em Integrações → APIs de terceiros. Esse endereço deve retornar a lista de produtos no formato JSON descrito acima. Cada item da lista segue o contrato abaixo.

Campos reconhecidos em cada item:

CampoTipoObrigatórioDescrição
namestringSimNome do produto exibido no catálogo.
skustringNãoCódigo único usado para identificar e atualizar o produto.
pricenumberNãoPreço de venda.
promotional_pricenumberNãoPreço promocional. Se maior que zero, marca o produto em promoção.
stockstring | numberNãoQuantidade em estoque.
brandstringNãoMarca do produto.
categoriesstring | arrayNãoCategorias separadas por vírgula ou lista de objetos com name.
descriptionstringNãoDescrição completa.
linkstring (URL)NãoLink público do produto no seu sistema.
image_urlstring (URL)NãoImagem principal.
image_urlsarrayNãoLista de URLs de imagens adicionais.
visible_in_storebooleanNãoSe o produto aparece na loja. Padrão: true.
is_on_salebooleanNãoIndica promoção ativa. Padrão: promotional_price > 0.

Exemplo de item válido:

JSON
{
  "name": "Camiseta Premium",
  "sku": "CAM-PRE-001",
  "price": 129.9,
  "promotional_price": 99.9,
  "stock": "42",
  "brand": "Marca X",
  "categories": "Roupas, Camisetas",
  "description": "Camiseta 100% algodão.",
  "link": "https://loja.exemplo.com/produtos/camiseta-premium",
  "image_url": "https://cdn.exemplo.com/camiseta.jpg",
  "image_urls": [
    "https://cdn.exemplo.com/camiseta.jpg",
    "https://cdn.exemplo.com/camiseta-detalhe.jpg"
  ],
  "visible_in_store": true,
  "is_on_sale": true
}

Clientes

Configure a URL da API de clientes no painel. Esse endereço deve retornar a lista de clientes no formato JSON descrito no início desta seção. Cada item da lista segue o contrato abaixo.

Campos reconhecidos em cada item:

CampoTipoObrigatórioDescrição
full_namestringSimNome completo. Alternativa: first_name + last_name.
first_namestringNãoPrimeiro nome.
last_namestringNãoSobrenome.
emailstringNãoE-mail usado como chave principal de identificação.
phonestringNãoTelefone com DDD.
cpfstringNãoCPF ou CNPJ (apenas dígitos).
addressstringNãoLogradouro.
numberstringNãoNúmero.
complementstringNãoComplemento.
neighborhoodstringNãoBairro.
citystringNãoCidade.
statestringNãoEstado (UF).
zip_codestringNãoCEP.
total_spentnumberNãoTotal já gasto pelo cliente.
purchases_countnumberNãoQuantidade de compras.
last_purchasestringNãoData da última compra (ISO 8601 ou timestamp).

Exemplo de item válido:

JSON
{
  "full_name": "Maria Silva",
  "email": "maria@exemplo.com",
  "phone": "47999998888",
  "cpf": "12345678901",
  "address": "Rua das Flores",
  "number": "100",
  "complement": "Apto 12",
  "neighborhood": "Centro",
  "city": "Itajaí",
  "state": "SC",
  "zip_code": "88301-000",
  "total_spent": 1549.8,
  "purchases_count": 7,
  "last_purchase": "2026-06-15T14:30:00-03:00"
}

Vendas

Configure a URL da API de vendas no painel. Esse endereço deve retornar a lista de pedidos no formato JSON descrito no início desta seção. Cada item da lista segue o contrato abaixo.

Campos reconhecidos em cada item:

CampoTipoObrigatórioDescrição
order_numberstringSimNúmero ou ID único do pedido.
emailstringNãoE-mail do comprador.
buyerstringNãoNome do comprador.
phonestringNãoTelefone do comprador.
datestringNãoData do pedido (ISO 8601).
subtotalnumberNãoSubtotal antes de descontos e frete.
discountnumberNãoValor de desconto.
shippingnumberNãoValor do frete.
totalnumberNãoValor total do pedido.
order_statusstringNãoStatus do pedido (ex.: open, closed, cancelled).
payment_statusstringNãoStatus do pagamento (ex.: paid, pending).
shipping_statusstringNãoStatus de envio.
payment_methodstringNãoForma de pagamento.
shipping_methodstringNãoForma de envio.
citystringNãoCidade de entrega.
statestringNãoEstado de entrega.
delivery_addressstringNãoEndereço completo de entrega.
sales_channelstringNãoCanal de venda (site, whatsapp, instagram, etc.). Padrão: site.
line_itemsarrayNãoItens do pedido para vincular produtos do catálogo.

Itens do pedido (line_items):

CampoTipoObrigatórioDescrição
namestringSimNome do produto na linha do pedido.
skustringNãoSKU para vincular ao produto do catálogo.
quantitynumberNãoQuantidade comprada.
pricenumberNãoPreço unitário do item.

Exemplo de item válido:

JSON
{
  "order_number": "PED-2026-1042",
  "email": "maria@exemplo.com",
  "buyer": "Maria Silva",
  "phone": "47999998888",
  "date": "2026-06-28T10:15:00-03:00",
  "subtotal": 229.8,
  "discount": 10,
  "shipping": 15,
  "total": 234.8,
  "order_status": "open",
  "payment_status": "paid",
  "shipping_status": "shipped",
  "payment_method": "pix",
  "shipping_method": "express",
  "city": "Itajaí",
  "state": "SC",
  "delivery_address": "Rua das Flores, 100",
  "sales_channel": "site",
  "line_items": [
    {
      "name": "Camiseta Premium",
      "sku": "CAM-PRE-001",
      "quantity": 2,
      "price": 99.9
    }
  ]
}

O sistema tenta vincular cada item do pedido a um produto existente pelo SKU ou pelo nome.

Webhook (atualizações em tempo real)

Além do carregamento por GET, seu sistema pode enviar eventos para o Venda no Chat sempre que houver criação, alteração ou exclusão de registros.

URL do webhook

Substitua {workspace_slug} pelo slug do workspace e {integration_slug} pelo slug da integração:

Texto
POST https://vendanochat.com.br/api/integrations/{workspace_slug}/third-party/{integration_slug}

O slug e a URL completa aparecem em Integrações → APIs de terceiros no painel.

Headers

Texto
Content-Type: application/json
Authentication: bearer SEU_TOKEN

Corpo da requisição

Todas as requisições seguem o formato:

JSON
{
  "event": "product.upsert",
  "data": {}
}

Eventos suportados

CampoTipoObrigatórioDescrição
product.upserteventSimCria ou atualiza um produto (data = objeto).
product.created / product.updatedeventSimAlias de product.upsert.
product.deleteeventSimRemove produto por sku ou name.
customer.upserteventSimCria ou atualiza um cliente (data = objeto).
customer.created / customer.updatedeventSimAlias de customer.upsert.
customer.deleteeventSimRemove cliente por email ou full_name.
sale.upserteventSimCria ou atualiza uma venda (data = objeto).
sale.created / sale.updatedeventSimAlias de sale.upsert.
sale.delete / order.deleteeventSimRemove venda por order_number.
products.synceventSimLote de produtos (data = array).
customers.synceventSimLote de clientes (data = array).
sales.synceventSimLote de vendas (data = array).

Exemplos

Criar ou atualizar produto:

JSON
{
  "event": "product.upsert",
  "data": {
    "name": "Camiseta Premium",
    "sku": "CAM-PRE-001",
    "price": 129.9,
    "stock": "40"
  }
}

Atualizar cliente:

JSON
{
  "event": "customer.upsert",
  "data": {
    "full_name": "Maria Silva",
    "email": "maria@exemplo.com",
    "phone": "47999998888",
    "city": "Itajaí",
    "state": "SC"
  }
}

Nova venda:

JSON
{
  "event": "sale.upsert",
  "data": {
    "order_number": "PED-2026-1043",
    "email": "maria@exemplo.com",
    "buyer": "Maria Silva",
    "total": 199.8,
    "payment_status": "paid",
    "line_items": [
      {
        "sku": "CAM-PRE-001",
        "name": "Camiseta Premium",
        "quantity": 2,
        "price": 99.9
      }
    ]
  }
}

Lote de produtos:

JSON
{
  "event": "products.sync",
  "data": [
    {
      "name": "Produto A",
      "sku": "A-001",
      "price": 10
    },
    {
      "name": "Produto B",
      "sku": "B-002",
      "price": 20
    }
  ]
}

Excluir venda:

JSON
{
  "event": "sale.delete",
  "data": {
    "order_number": "PED-2026-0999"
  }
}

Respostas

Em caso de sucesso:

JSON
{
  "ok": true,
  "action": "created",
  "id": 123
}

Em caso de erro de validação:

JSON
{
  "ok": false,
  "message": "Produto inválido: informe ao menos o campo name."
}

Códigos HTTP: 200 sucesso, 400 payload inválido, 403 não autorizado ou integração desativada, 404 workspace não encontrado.

Precisa de ajuda?

Consulte a central de ajuda ou fale com o suporte em atendimento.