VenddorDocumentação API
API atualAPI legada
Guia rápidoReferência completa
Carregando índice…
API atual/Referência completa/WhatsApp: atendimento

Enviar produtos e carrinho

Busca produtos do seller e envia ao cliente um cartão de produto, uma lista, o botão do catálogo ou o link do carrinho.

Um atendente vende melhor quando mostra o produto na própria conversa. Estas rotas encontram produtos do seller e os enviam como mensagens interativas do WhatsApp. Há dois caminhos: com um catálogo da Meta vinculado à loja, o cliente recebe os cartões nativos do WhatsApp; sem catálogo, ele recebe um botão que abre o produto ou a lista na mini-loja. O seller só consegue enviar produtos do próprio catálogo.

Buscar produtos

GET/api/v1/vendor/whatsapp-confluence/productsSeller

Busca produtos do seller para enviar

Cabeçalhos

Authorizationstringobrigatório
Bearer $TOKEN. Token de acesso de um usuário seller (lojista). Veja Tokens.

Parâmetros de consulta

qstring
Texto da busca. search é aceito como apelido.
per_pageintegerpadrão: 40
Itens por página, de 1 a 50. Fora disso vale 40.
pageintegerpadrão: 1
Página, a partir de 1.

Exemplo de requisição

bash
curl "$BASE_URL/api/v1/vendor/whatsapp-confluence/products?q=cimento&per_page=10" \
  -H "Authorization: Bearer $TOKEN"

Resposta

200Produtos
json
{
  "products": [
    {
      "id": "5f6a7b8c-9d0e-4f1a-8b2c-3d4e5f6a7b8c",
      "name": "Cimento CP II 50 kg",
      "short_description": "Saco de 50 kg",
      "image_url": "https://minhaloja.io.venddor.com.br/uploads/produtos/cimento.jpg",
      "slug": "cimento-cp-ii-50kg",
      "price_cents": 3290,
      "available": true
    }
  ]
}

Campos da resposta

productsarray

Produtos encontrados. Lista vazia quando não há seller identificável.

iduuid
Id do produto, o valor de product_id nos envios.
namestring
Nome.
short_descriptionstring
Descrição curta, quando existe.
descriptionstring
Descrição completa, quando existe.
image_urlstring
Imagem principal.
slugstring
Identificador de URL.
urlstring
Endereço do produto, quando existe.
price_centsinteger
Preço em centavos (3290 = R$ 32,90).
list_price_centsinteger
Preço de tabela em centavos, quando diferente.
price_redactedboolean
true quando o preço está oculto até o login do cliente.
availableboolean
Se há estoque para venda.
sale_unitstring
Unidade de venda, por exemplo kg, quando não é unidade.

Erros

StatusQuandoCorpo de exemplo
401Sem token ou token inválido.{"error":"missing authorization header"}
403O usuário não é um seller, ou o seller ainda está em análise de cadastro.{"error":"vendor_pending_review"}
502Falha ao consultar o catálogo.{"error":"..."}

Enviar um produto

POST/api/v1/vendor/whatsapp-confluence/threads/{id}/send-productSeller

Envia um cartão de produto

Cabeçalhos

Authorizationstringobrigatório
Bearer $TOKEN. Token de acesso de um usuário seller (lojista). Veja Tokens.
Content-Typestringobrigatório
application/json.

Parâmetros de caminho

iduuidobrigatório
Id da conversa (id de Listar conversas).

Corpo da requisição

product_iduuid
Id do produto (de Buscar produtos). Obrigatório se não enviar retailer_id.
retailer_idstring
Id do item no catálogo da Meta (wacoex- seguido do id do produto). Alternativa a product_id.

Exemplo de requisição

bash
curl -X POST "$BASE_URL/api/v1/vendor/whatsapp-confluence/threads/7f0c2b1e-5a43-4d8e-9a67-3c1d2e4f5a60/send-product" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "product_id": "5f6a7b8c-9d0e-4f1a-8b2c-3d4e5f6a7b8c"
}'

Resposta

200Produto enviado
json
{
  "id": 28,
  "thread_id": "7f0c2b1e-5a43-4d8e-9a67-3c1d2e4f5a60",
  "wamid": "wamid.HBgNNTUxMTk4NzY1NDMyMRUCABIYFjNFQjA",
  "direction": "O",
  "origin": "A",
  "msg_type": "interactive",
  "body": "Produto: wacoex-5f6a7b8c-9d0e-4f1a-8b2c-3d4e5f6a7b8c",
  "status": "S",
  "meta_timestamp": "2026-10-10T14:35:00Z",
  "created_at": "2026-10-10T14:35:00Z",
  "interactive": {
    "type": "product",
    "action": {
      "catalog_id": "catalog_demo_local",
      "product_retailer_id": "wacoex-5f6a7b8c-9d0e-4f1a-8b2c-3d4e5f6a7b8c"
    }
  }
}

Campos da resposta

idinteger
Id numérico da mensagem. Cresce com o tempo. Use como cursor.
thread_iduuid
Conversa.
wamidstring
Id da mensagem na Meta. Omitido se ainda não houve envio.
directionstring
IO
I recebida do cliente, O enviada pela loja.
originstring
CABEH
C cliente, A API ou atendente, B assistente, E eco do aplicativo WhatsApp Business, H histórico.
msg_typestring
Tipo: text, image, audio, voice, video, document, sticker, interactive, template, order e outros que a Meta enviar.
bodystring
Texto da mensagem, ou a descrição quando não é texto.
media_idstring
Id da mídia na Meta. Omitido sem mídia.
media_mimestring
Tipo MIME da mídia. Omitido sem mídia.
media_captionstring
Legenda da mídia.
filenamestring
Nome do arquivo, para documentos.
media_urlstring
Link assinado e temporário (12 horas) para exibir a mídia sem cabeçalho Authorization. Aparece em mensagens com mídia que a conversa já listou.
transcriptionstring
Texto transcrito de um áudio, quando existe.
interactiveobject
Conteúdo de botões, listas e links enviados ou recebidos, como a Meta define.
order_payloadobject
Carrinho enviado pelo cliente pelo catálogo do WhatsApp.
statusstring
QSDRF
Entrega: Q na fila, S enviada, D entregue, R lida, F falhou.
errorstring
Motivo da falha quando status é F.
meta_timestampstring
Horário na Meta (RFC 3339).
created_atstring
Quando a plataforma gravou (RFC 3339).

Erros

StatusQuandoCorpo de exemplo
401Sem token ou token inválido.{"error":"missing authorization header"}
403O usuário não é um seller, ou o seller ainda está em análise de cadastro.{"error":"vendor_pending_review"}
400Nem product_id nem retailer_id.{"error":"retailer_id or product_id required"}
404Conversa de outro seller. Um id desconhecido também dá 404 em algumas rotas, mas 200 ou 502 em outras quando não há escopo de seller (veja a visão geral da seção).{"error":"thread not found"}
502Produto fora do catálogo do seller (whatsappcoex: product not found), conta sem condições de envio, ou recusa da Meta. Também um id de conversa desconhecido quando não há escopo de seller (whatsappcoex: thread not found).{"error":"whatsappcoex: product not found"}
Sem catálogo, vira um botão

Se a loja não vinculou um catálogo da Meta, a rota não devolve erro: ela envia um botão "Ver produto" que abre o item na mini-loja. Se vinculou, envia o cartão nativo.

Enviar uma lista

POST/api/v1/vendor/whatsapp-confluence/threads/{id}/send-product-listSeller

Envia uma lista de produtos

Cabeçalhos

Authorizationstringobrigatório
Bearer $TOKEN. Token de acesso de um usuário seller (lojista). Veja Tokens.
Content-Typestringobrigatório
application/json.

Parâmetros de caminho

iduuidobrigatório
Id da conversa (id de Listar conversas).

Corpo da requisição

titlestring
Título da lista. Omitido vale Produtos.
product_idsarrayobrigatório
Ids de produtos do seller. Obrigatório, com ao menos 1. A Meta limita a lista a 30; o excedente é cortado.

Exemplo de requisição

bash
curl -X POST "$BASE_URL/api/v1/vendor/whatsapp-confluence/threads/7f0c2b1e-5a43-4d8e-9a67-3c1d2e4f5a60/send-product-list" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "title": "Para a sua obra",
  "product_ids": [
    "5f6a7b8c-9d0e-4f1a-8b2c-3d4e5f6a7b8c",
    "6a7b8c9d-0e1f-4a2b-9c3d-4e5f6a7b8c9d"
  ]
}'

Resposta

200Lista enviada
json
{
  "id": 28,
  "thread_id": "7f0c2b1e-5a43-4d8e-9a67-3c1d2e4f5a60",
  "wamid": "wamid.HBgNNTUxMTk4NzY1NDMyMRUCABIYFjNFQjA",
  "direction": "O",
  "origin": "A",
  "msg_type": "interactive",
  "body": "Para a sua obra (2 produtos)",
  "status": "S",
  "meta_timestamp": "2026-10-10T14:35:00Z",
  "created_at": "2026-10-10T14:35:00Z"
}

Campos da resposta

idinteger
Id numérico da mensagem. Cresce com o tempo. Use como cursor.
thread_iduuid
Conversa.
wamidstring
Id da mensagem na Meta. Omitido se ainda não houve envio.
directionstring
IO
I recebida do cliente, O enviada pela loja.
originstring
CABEH
C cliente, A API ou atendente, B assistente, E eco do aplicativo WhatsApp Business, H histórico.
msg_typestring
Tipo: text, image, audio, voice, video, document, sticker, interactive, template, order e outros que a Meta enviar.
bodystring
Texto da mensagem, ou a descrição quando não é texto.
media_idstring
Id da mídia na Meta. Omitido sem mídia.
media_mimestring
Tipo MIME da mídia. Omitido sem mídia.
media_captionstring
Legenda da mídia.
filenamestring
Nome do arquivo, para documentos.
media_urlstring
Link assinado e temporário (12 horas) para exibir a mídia sem cabeçalho Authorization. Aparece em mensagens com mídia que a conversa já listou.
transcriptionstring
Texto transcrito de um áudio, quando existe.
interactiveobject
Conteúdo de botões, listas e links enviados ou recebidos, como a Meta define.
order_payloadobject
Carrinho enviado pelo cliente pelo catálogo do WhatsApp.
statusstring
QSDRF
Entrega: Q na fila, S enviada, D entregue, R lida, F falhou.
errorstring
Motivo da falha quando status é F.
meta_timestampstring
Horário na Meta (RFC 3339).
created_atstring
Quando a plataforma gravou (RFC 3339).

Erros

StatusQuandoCorpo de exemplo
401Sem token ou token inválido.{"error":"missing authorization header"}
403O usuário não é um seller, ou o seller ainda está em análise de cadastro.{"error":"vendor_pending_review"}
400product_ids ausente ou vazio.{"error":"product_ids required"}
404Conversa de outro seller. Um id desconhecido também dá 404 em algumas rotas, mas 200 ou 502 em outras quando não há escopo de seller (veja a visão geral da seção).{"error":"thread not found"}
502Algum produto não é do catálogo do seller, ou a Meta recusou. Também um id de conversa desconhecido quando não há escopo de seller (whatsappcoex: thread not found).{"error":"whatsappcoex: product not found"}

Enviar o catálogo

POST/api/v1/vendor/whatsapp-confluence/threads/{id}/send-catalogSeller

Envia o botão de ver o catálogo

Cabeçalhos

Authorizationstringobrigatório
Bearer $TOKEN. Token de acesso de um usuário seller (lojista). Veja Tokens.
Content-Typestringobrigatório
application/json.

Parâmetros de caminho

iduuidobrigatório
Id da conversa (id de Listar conversas).

Corpo da requisição

bodystring
Texto acima do botão. Omitido vale Confira nosso catálogo.

Exemplo de requisição

bash
curl -X POST "$BASE_URL/api/v1/vendor/whatsapp-confluence/threads/7f0c2b1e-5a43-4d8e-9a67-3c1d2e4f5a60/send-catalog" \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "body": "Veja tudo o que temos para a sua obra"
}'

Resposta

200Botão enviado
json
{
  "id": 28,
  "thread_id": "7f0c2b1e-5a43-4d8e-9a67-3c1d2e4f5a60",
  "wamid": "wamid.HBgNNTUxMTk4NzY1NDMyMRUCABIYFjNFQjA",
  "direction": "O",
  "origin": "A",
  "msg_type": "interactive",
  "body": "Veja tudo o que temos para a sua obra",
  "status": "S",
  "meta_timestamp": "2026-10-10T14:35:00Z",
  "created_at": "2026-10-10T14:35:00Z"
}

Campos da resposta

idinteger
Id numérico da mensagem. Cresce com o tempo. Use como cursor.
thread_iduuid
Conversa.
wamidstring
Id da mensagem na Meta. Omitido se ainda não houve envio.
directionstring
IO
I recebida do cliente, O enviada pela loja.
originstring
CABEH
C cliente, A API ou atendente, B assistente, E eco do aplicativo WhatsApp Business, H histórico.
msg_typestring
Tipo: text, image, audio, voice, video, document, sticker, interactive, template, order e outros que a Meta enviar.
bodystring
Texto da mensagem, ou a descrição quando não é texto.
media_idstring
Id da mídia na Meta. Omitido sem mídia.
media_mimestring
Tipo MIME da mídia. Omitido sem mídia.
media_captionstring
Legenda da mídia.
filenamestring
Nome do arquivo, para documentos.
media_urlstring
Link assinado e temporário (12 horas) para exibir a mídia sem cabeçalho Authorization. Aparece em mensagens com mídia que a conversa já listou.
transcriptionstring
Texto transcrito de um áudio, quando existe.
interactiveobject
Conteúdo de botões, listas e links enviados ou recebidos, como a Meta define.
order_payloadobject
Carrinho enviado pelo cliente pelo catálogo do WhatsApp.
statusstring
QSDRF
Entrega: Q na fila, S enviada, D entregue, R lida, F falhou.
errorstring
Motivo da falha quando status é F.
meta_timestampstring
Horário na Meta (RFC 3339).
created_atstring
Quando a plataforma gravou (RFC 3339).

Erros

StatusQuandoCorpo de exemplo
401Sem token ou token inválido.{"error":"missing authorization header"}
403O usuário não é um seller, ou o seller ainda está em análise de cadastro.{"error":"vendor_pending_review"}
404Conversa de outro seller. Um id desconhecido também dá 404 em algumas rotas, mas 200 ou 502 em outras quando não há escopo de seller (veja a visão geral da seção).{"error":"thread not found"}
502A Meta recusou (por exemplo, a conta não tem catálogo vinculado) ou a conta não pode enviar. Também um id de conversa desconhecido quando não há escopo de seller (whatsappcoex: thread not found).{"error":"..."}
Exige catálogo da Meta

Diferente de produto e lista, o botão de catálogo não tem alternativa pela mini-loja: sem catálogo vinculado a Meta recusa. Para a mini-loja use Enviar o link do carrinho.

Enviar o link do carrinho

Envia um botão que abre a mini-loja já com o carrinho daquele telefone. É a forma de levar o cliente ao checkout sem digitar nada.

POST/api/v1/vendor/whatsapp-confluence/threads/{id}/send-cart-linkSeller

Envia o botão de abrir o carrinho

Cabeçalhos

Authorizationstringobrigatório
Bearer $TOKEN. Token de acesso de um usuário seller (lojista). Veja Tokens.

Parâmetros de caminho

iduuidobrigatório
Id da conversa (id de Listar conversas).

Exemplo de requisição

bash
curl -X POST "$BASE_URL/api/v1/vendor/whatsapp-confluence/threads/7f0c2b1e-5a43-4d8e-9a67-3c1d2e4f5a60/send-cart-link" \
  -H "Authorization: Bearer $TOKEN"

Resposta

200Botão enviado
json
{
  "message": {
    "id": 28,
    "thread_id": "7f0c2b1e-5a43-4d8e-9a67-3c1d2e4f5a60",
    "wamid": "wamid.HBgNNTUxMTk4NzY1NDMyMRUCABIYFjNFQjA",
    "direction": "O",
    "origin": "A",
    "msg_type": "interactive",
    "body": "Montei um carrinho pra você, é só abrir e finalizar!",
    "status": "S",
    "meta_timestamp": "2026-10-10T14:35:00Z",
    "created_at": "2026-10-10T14:35:00Z"
  }
}

Campos da resposta

messageobject
A mensagem criada, no formato de mensagem desta seção.

Erros

StatusQuandoCorpo de exemplo
401Sem token ou token inválido.{"error":"missing authorization header"}
403O usuário não é um seller, ou o seller ainda está em análise de cadastro.{"error":"vendor_pending_review"}
404Conversa de outro seller. Um id desconhecido também dá 404 em algumas rotas, mas 200 ou 502 em outras quando não há escopo de seller (veja a visão geral da seção).{"error":"thread not found"}
502Não foi possível gerar o link, ou a Meta recusou. Pode trazer message com status: F.{"error":"whatsappcoex: cart link unavailable"}
Resposta embrulhada

Só esta rota devolve a mensagem dentro de message; as outras de envio devolvem a mensagem direto.

Veja também

  • Cobrança por PIX
  • Mini-loja
  • Catálogo da Meta
Anterior
Controle do assistente
Próxima
Cobrança por PIX e painel do cliente
Nesta página
  • Buscar produtos
  • Exemplo de requisição
  • Resposta
  • Erros
  • Enviar um produto
  • Exemplo de requisição
  • Resposta
  • Erros
  • Enviar uma lista
  • Exemplo de requisição
  • Resposta
  • Erros
  • Enviar o catálogo
  • Exemplo de requisição
  • Resposta
  • Erros
  • Enviar o link do carrinho
  • Exemplo de requisição
  • Resposta
  • Erros
  • Veja também