Documentação

API de leitura da Utmetrica

Somente leitura, versão 1. Cada token vale para um projeto e só enxerga os dados dele.

Autenticação

Crie um token no painel, em Acesso à API do projeto (quem administra o projeto). O texto completo aparece uma única vez e guardamos apenas uma impressão digital dele. Envie no cabeçalho:

curl -H "Authorization: Bearer utm_sk_..." \
  "https://utmetrica.com.br/api/public/v1/overview?from=2026-10-01&to=2026-10-28"

Tokens podem ser revogados a qualquer momento e mostram o último uso. Um token com read:revenue só pode ser criado por quem pode ver receita.

Escopos

  • read:analytics: visitas, páginas, fontes e eventos.
  • read:revenue: pedidos e receita confirmada.

Chamar um endpoint fora do escopo do token devolve 403 insufficient_scope.

Endpoints

Base: /api/public/v1. Todos são GET.

  • /overview · read:analytics. Sessões, visitantes, páginas vistas, sessões de uma página só, duração média e série diária.
  • /pages · read:analytics. Páginas por visualizações, visitantes e sessões. Paginado.
  • /sources · read:analytics. Sessões por origem. Paginado. dimension: channel (padrão), referrer, source, medium ou campaign.
  • /events · read:analytics. Eventos personalizados com contagem, visitantes, sessões e total do período anterior. Paginado.
  • /revenue/daily · read:revenue. Receita por dia e por moeda: bruta, reembolsos e líquida, em centavos. Paginado.
  • /orders · read:revenue. Pedidos confirmados, mais novos primeiro, com valores em centavos. Sem dados da pessoa. Paginado por cursor.

Período

from e to no formato AAAA-MM-DD, no fuso do projeto, com até 366 dias. Sem eles, valem os últimos 30 dias. A resposta traz o fuso e o período usado em meta.

Paginação

limit de 1 a 100 (padrão 50). Quando há mais resultados, meta.next_cursor traz um cursor opaco; envie-o em cursor na próxima chamada. Sem mais páginas, ele é null.

Dinheiro

Valores em unidade menor da moeda (centavos), junto da moeda ISO. Nunca somamos moedas diferentes. Receita líquida é pagamentos menos reembolsos. Pedidos que o rastreador não ligou a um visitante aparecem em /orders e /revenue/daily, mas não são atribuídos a ninguém.

Erros e limites

Erros vêm como {"error":{"code","message"}}: invalid_token (401), insufficient_scope (403), not_found (404), invalid_parameter (400) e rate_limited (429, com Retry-After).

O limite é de 120 requisições por minuto por token, e 30 tentativas com token inválido por minuto por origem. Respostas não são guardadas em cache.

Planos · Integrações