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ção | Limite |
|---|---|
| Por loja (todas as chamadas) | 30/minuto e 1000/24 horas |
| Por IP, incluindo chaves inválidas | 60/minuto |
| Total da API na plataforma | 300/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
| HTTP | Significado | Ação |
|---|---|---|
| 200 | Consulta concluída; data pode estar vazio | Leia data e meta.next_cursor |
| 401 | Chave ausente, inválida, revogada ou loja indisponível para compartilhamento | Confira o link e solicite uma chave válida |
| 403 | Loja inativa, suspensa, trial encerrado, em manutenção ou API bloqueada por segurança | Fale com o responsável pela loja |
| 422 | Cursor inválido ou parâmetro desconhecido | Use o cursor recebido ou reinicie a consulta |
| 429 | Cota atingida | Respeite Retry-After |
| 503 | Atualização simultânea do cache | Respeite Retry-After |
Erros retornam JSON com message. Uma consulta válida a uma loja sem produtos retorna {"data": [], "meta": { ... }}.