← MasterVendas

API de consulta de produtos

Consulte o catálogo público de uma loja para integrar um bot de WhatsApp ou outro serviço. API somente de leitura, versão 1, com respostas JSON.

1. Consulte o catálogo

Substitua minha-loja pelo identificador da sua loja e SUA_CHAVE pela chave gerada em seu painel → API de produtos. Você pode habilitar a API, gerar ou substituir sua chave e desativar o acesso nessa tela.

curl --request GET \
  'https://mastervendaspro.com.br/api/v1/lojas/minha-loja/produtos' \
  --header 'Authorization: Bearer SUA_CHAVE' \
  --header 'Accept: application/json'

A chave de uma loja não permite consultar outra. Não é necessário login ou cookie. Só GET é permitido; a API não cadastra produtos nem envia mensagens de WhatsApp.

Guarde a chave no servidor da integração, em variável de ambiente. Envie-a somente no cabeçalho Authorization; nunca na URL, em mensagens para clientes ou código do navegador.

Exemplo de resposta

{
  "data": [{
    "id": 123,
    "name": "Sofá de 3 lugares",
    "slug": "sofa-de-3-lugares",
    "short_description": "Sofá em tecido cinza",
    "description": "Sofá confortável para sala de estar.",
    "price": "1599.90",
    "compare_price": "1799.90",
    "currency": "BRL",
    "available": true,
    "image_url": "https://mastervendaspro.com.br/storage/produtos/sofa.jpg",
    "url": "https://minha-loja.mastervendaspro.com.br/produtos/sofa-de-3-lugares",
    "category": {"name": "Sofás", "slug": "sofas"},
    "dimensions_cm": {"length": "200.00", "width": "90.00", "height": "85.00"},
    "weight_kg": "45.000"
  }],
  "meta": {
    "per_page": 50,
    "next_cursor": null,
    "generated_at": "2026-10-09T12:00:00+00:00",
    "cache_seconds": 300
  }
}

Preços são strings decimais em reais. Preço anterior, categoria e medidas podem ser nulos. available informa se o produto pode ser comprado conforme as regras de estoque da loja. A imagem é a principal; não são incluídas variantes ou galeria. Descrições são texto sem HTML, limitadas a 1.000 e 10.000 caracteres.

Custos, quantidade em estoque, dados pessoais, credenciais, pedidos e informações internas não são retornados. Produtos inativos ou excluídos não entram em novas respostas.

2. Percorra as páginas

Cada página contém até 50 produtos, ordenados por ID. Quando meta.next_cursor for diferente de null, envie exatamente esse valor na próxima consulta:

GET https://mastervendaspro.com.br/api/v1/lojas/minha-loja/produtos?cursor=VALOR_DE_NEXT_CURSOR
Authorization: Bearer SUA_CHAVE

Codifique o cursor como parâmetro de URL. Repita até receber next_cursor: null. O cursor é assinado e específico da loja e chave; não deve ser alterado. Ao substituir a chave, reinicie sem cursor. Parâmetros de busca, página ou tamanho não são aceitos. Faça a busca pelo nome no catálogo salvo pela integração.

3. Evite consultas excessivas no bot

Baixe as páginas sequencialmente, salve o catálogo no servidor do bot e responda às mensagens usando essa cópia. Uma sincronização a cada 15 minutos é um ponto de partida; ajuste conforme o número de páginas para respeitar a cota diária. Não consulte a API a cada mensagem e não dispare páginas em paralelo.

O servidor mantém cada página em cache por 5 minutos. Alterações de preço, disponibilidade ou remoções podem levar esse tempo para aparecer. Substitua a cópia local somente após concluir todas as páginas e confira preço e disponibilidade na loja antes de fechar a compra.

ProteçãoLimite
Por loja (todas as chamadas)30/minuto e 1000/24 horas
Por IP, incluindo chaves inválidas60/minuto
Total da API na plataforma300/minuto

As janelas começam na primeira consulta. Mesmo respostas em cache contam para os limites. Se receber 429 ou 503, aguarde os segundos do cabeçalho Retry-After e aplique espera crescente entre novas tentativas. Enquanto isso, o bot pode usar sua última cópia, informando que valores precisam de confirmação.

Respostas e erros

HTTPSignificadoAção
200Consulta concluída; data pode estar vazioLeia data e meta.next_cursor
401Chave ausente, inválida, revogada ou loja indisponível para compartilhamentoConfira o link e solicite uma chave válida
403Loja inativa, suspensa, trial encerrado, em manutenção ou API bloqueada por segurançaFale com o responsável pela loja
422Cursor inválido ou parâmetro desconhecidoUse o cursor recebido ou reinicie a consulta
429Cota atingidaRespeite Retry-After
503Atualização simultânea do cacheRespeite Retry-After

Erros retornam JSON com message. Uma consulta válida a uma loja sem produtos retorna {"data": [], "meta": { ... }}.