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.