API Admin › Referência

Relatórios

Endereço base: https://api.denaryx.com/admin/2026-10. Exemplos e regras no guia Relatórios. Os erros seguem o formato comum. A especificação inteira: baixar o OpenAPI.

GET /reports/sales

As vendas do período

Escopo read_reports

As vendas somadas no período, e por dia, produto ou coleção, sem nenhum dado de quem comprou. Venda é o pedido pago e não cancelado, pela data do pagamento em Brasília (America/Sao_Paulo), como nos relatórios do painel. revenue é o valor dos produtos com os descontos e sem o frete, o mesmo da compra que a loja manda à Meta, ao TikTok e ao GA4; por produto e por coleção, é o dos itens, antes do cupom e do desconto no Pix. A coleção soma os produtos dela e das coleções de baixo. Por dia, o período vai até 92 dias; por produto ou coleção, até 366.

Parâmetros

NomeOndeTipoDescrição
fromconsultastringO primeiro dia (AAAA-MM-DD), em Brasília. Junto com to; sem os dois, os últimos 30 dias, até hoje.
toconsultastringO último dia (AAAA-MM-DD), inclusive.
group_byconsultastringday: uma linha por dia, com os dias sem venda; product ou collection: as que mais venderam em receita.Um de: day, product, collection.
limitconsultaintegerPor produto ou coleção, quantas linhas, de 1 a 100 (50 sem ele). truncated diz se há mais.

Resposta

200 Sucesso. (SalesReport)

Os campos da resposta (14)
CampoTipoDescrição
fromstring
tostring
group_bystringUm de: day, product, collection.
timezone"America/Sao_Paulo"
currency"BRL"
totalsobjeto
totals.ordersintegerOs pedidos pagos.A partir de 0.
totals.itemsintegerAs unidades vendidas.A partir de 0.
totals.revenueintegerA receita, em centavos: o valor dos produtos com os descontos e sem o frete, o mesmo valor da compra mandado à Meta, ao TikTok e ao GA4.A partir de 0.
totals.average_order_valueinteger ou nullO ticket médio, em centavos: revenue dividido por orders, arredondado. Null sem pedidos: não há ticket médio, e o 0 entraria numa média como se fosse um valor.A partir de 0.
totals.discountintegerOs descontos do pedido, em centavos: o do cupom e o do Pix somados.A partir de 0.
totals.shippingintegerO frete cobrado, em centavos.A partir de 0.
rowslista de objeto
truncatedbooleanHá mais produtos ou coleções do que o limit.

Erros

  • 400 A chamada veio com campos inválidos; os campos recusados vão em fields (invalid_request).
  • 401 O token falta, não existe, foi revogado ou venceu (authentication_error).
  • 403 O token não tem o escopo da rota, ou, com write_content, mandou campos que pedem write_products, listados em fields (permission_error).
  • 429 Chamadas demais: espere o Retry-After (rate_limited).
  • 500 Erro do nosso lado (api_error).
  • 503 A API está ocupada com outras chamadas: espere o Retry-After (api_error).

GET /reports/searches

As buscas da vitrine no período

Escopo read_products ou read_content

Os termos que os compradores buscaram na vitrine, somados no período: os que mais voltaram sem nenhum produto (no_results), os mais buscados (top) e os que acharam produtos sem clique (no_clicks). Serve para criar páginas, categorias ou sinônimos para o que ninguém acha. Só termos e contagens: nada de quem buscou, e o termo que parecia dado pessoal (e-mail, CPF, telefone, cartão) não é guardado. Conta uma busca por página de resultados (a primeira, sem filtro e na ordem padrão); as sugestões enquanto o comprador digita, os robôs e a prévia do tema não contam. Os dias são os de Brasília (America/Sao_Paulo); o período vai até 366 dias, e as buscas ficam 13 meses.

Parâmetros

NomeOndeTipoDescrição
fromconsultastringO primeiro dia (AAAA-MM-DD), em Brasília. Junto com to; sem os dois, os últimos 30 dias, até hoje.
toconsultastringO último dia (AAAA-MM-DD), inclusive.
limitconsultaintegerQuantos termos em cada lista, de 1 a 100 (50 sem ele).

Resposta

200 Sucesso. (SearchReport)

Os campos da resposta (34)
CampoTipoDescrição
fromstring
tostring
timezone"America/Sao_Paulo"
totalsobjeto
totals.searchesintegerA partir de 0.
totals.no_resultsintegerA partir de 0.
totals.no_results_ratenumber ou nullno_results dividido por searches, de 0 a 1. Null sem buscas.
totals.searches_with_clickintegerA partir de 0.
totals.clicksintegerA partir de 0.
totals.discardedintegerAs buscas cujo termo parecia dado pessoal: contadas aqui, sem o texto, e fora das outras contagens.A partir de 0.
no_resultslista de objetoOs termos que mais voltaram sem nenhum produto.
no_results[].termstringO termo normalizado: minúsculas, sem acento, só letras e números. "Camisetas Azúis" vira "camisetas azuis".
no_results[].searchesintegerAs buscas pelo termo no período.A partir de 0.
no_results[].no_resultsintegerDas buscas, quantas não acharam nenhum produto.A partir de 0.
no_results[].resultsintegerQuantos produtos a última busca pelo termo achou.A partir de 0.
no_results[].searches_with_clickintegerDas buscas, quantas tiveram um clique num produto do resultado.A partir de 0.
no_results[].clicksintegerOs cliques em produtos do resultado (o mesmo produto na mesma busca conta uma vez).A partir de 0.
no_results[].average_click_positionnumber ou nullA posição média dos produtos clicados, a partir de 1. Null sem clique.
toplista de objetoOs termos mais buscados.
top[].termstringO termo normalizado: minúsculas, sem acento, só letras e números. "Camisetas Azúis" vira "camisetas azuis".
top[].searchesintegerAs buscas pelo termo no período.A partir de 0.
top[].no_resultsintegerDas buscas, quantas não acharam nenhum produto.A partir de 0.
top[].resultsintegerQuantos produtos a última busca pelo termo achou.A partir de 0.
top[].searches_with_clickintegerDas buscas, quantas tiveram um clique num produto do resultado.A partir de 0.
top[].clicksintegerOs cliques em produtos do resultado (o mesmo produto na mesma busca conta uma vez).A partir de 0.
top[].average_click_positionnumber ou nullA posição média dos produtos clicados, a partir de 1. Null sem clique.
no_clickslista de objetoOs termos mais buscados que acharam produtos e não tiveram clique: o resultado não convenceu.
no_clicks[].termstringO termo normalizado: minúsculas, sem acento, só letras e números. "Camisetas Azúis" vira "camisetas azuis".
no_clicks[].searchesintegerAs buscas pelo termo no período.A partir de 0.
no_clicks[].no_resultsintegerDas buscas, quantas não acharam nenhum produto.A partir de 0.
no_clicks[].resultsintegerQuantos produtos a última busca pelo termo achou.A partir de 0.
no_clicks[].searches_with_clickintegerDas buscas, quantas tiveram um clique num produto do resultado.A partir de 0.
no_clicks[].clicksintegerOs cliques em produtos do resultado (o mesmo produto na mesma busca conta uma vez).A partir de 0.
no_clicks[].average_click_positionnumber ou nullA posição média dos produtos clicados, a partir de 1. Null sem clique.

Erros

  • 400 A chamada veio com campos inválidos; os campos recusados vão em fields (invalid_request).
  • 401 O token falta, não existe, foi revogado ou venceu (authentication_error).
  • 403 O token não tem o escopo da rota, ou, com write_content, mandou campos que pedem write_products, listados em fields (permission_error).
  • 429 Chamadas demais: espere o Retry-After (rate_limited).
  • 500 Erro do nosso lado (api_error).
  • 503 A API está ocupada com outras chamadas: espere o Retry-After (api_error).