Analytics REST API
The Privatus Analytics REST API: add .json to any app URL and send a token. Conventions and a reference of every operation, generated from the code.
Every page and action in Privatus Analytics is also an API endpoint (only
form pages such as new and edit have no JSON form). There's no
separate /api/v1: add .json to a URL and send an API token.
curl https://privatusanalytics.com/sites/pa_7Q2K9XH3AB/stats/aggregate.json?period=7d \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
{
"data": {
"period": { "from": "2026-09-23T00:00:00Z", "to": "2026-09-30T00:00:00Z" },
"metrics": {
"visitors": 1840, "visits": 2310, "pageviews": 5122,
"views_per_visit": 2.22, "bounce_rate": 41.3,
"visit_duration": 48000, "revenue": 129900
}
}
}
The reference below lists every operation with its method, path, permission, input schema and response schema. It's generated from the running code, as is the OpenAPI 3.1 document, so neither can drift from what the server does. The same operations are MCP tools.
Conventions#
| Base URL | https://privatusanalytics.com |
| Format | JSON. Add .json to the path (or send Accept: application/json) |
| Auth | Authorization: Bearer pat_… (Authentication) |
| Ids | Public ids with a prefix: ws_… workspaces, pa_… sites, goal_… goals, seg_… segments, wh_… webhooks |
| Reads | GET with query parameters |
| Writes | POST, PATCH, DELETE with a JSON body of flat fields |
| Success | { "data": … }, plus "meta" for lists |
| Errors | { "error": { "code", "message", "details" } } (Errors) |
| Lists | page and per_page (max 100) (Pagination) |
| Times | ISO 8601 in UTC. Date parameters (from, to) are days in the site's timezone |
| Money | Minor units (cents) in the site currency, e.g. revenue: 129900 = 1,299.00 |
| Durations | Milliseconds |
Common tasks#
| Task | Operation |
|---|---|
| List workspaces | GET /workspaces.json |
| List sites | GET /workspaces/{workspace_id}/sites.json |
| Headline metrics | GET /sites/{site_id}/stats/aggregate.json |
| Chart data | GET /sites/{site_id}/stats/timeseries.json |
| Top pages, sources, countries… | GET /sites/{site_id}/breakdown/{dimension}.json |
| Everything on the Overview | GET /sites/{site_id}/overview.json |
| Live visitors | GET /sites/{site_id}/live.json |
| Add a note (e.g. a deploy) | POST /sites/{site_id}/notes.json |
See Stats endpoints and Examples.
In this section#
Authentication · Errors · Pagination · Rate limits · Filters · Stats endpoints · Examples · Webhooks · Changelog and deprecation
Todas as operações
Envie Authorization: Bearer pat_…. Crie tokens em Configurações do espaço de trabalho, Tokens de API. Guia de autenticação.
Adicione .json a qualquer caminho. As respostas são { "data": … } e os erros são { "error": { "code", "message" } }. Erros.
Envie um POST JSON-RPC para https://privatusanalytics.com/mcp com o mesmo token. Cada operação abaixo é uma ferramenta. Guia do MCP.
Baixar openapi.json · 527 operações
Ajuda e feedback
POST
/help.json
Enviar uma pergunta ou feedback para a equipe do Privatus Analytics
support_message_send
A mensagem é enviada por e-mail à equipe com os dados da sua conta, do espaço de trabalho e do plano anexados. A resposta e um recibo vão para o e-mail da sua conta. Até 10 mensagens por dia.
Permissão: member
curl -X POST https://privatusanalytics.com/help.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Alertas
POST
/alerts/:id/acknowledge.json
Reconhecer o incidente mais recente
alerts_acknowledge
Marca o último incidente não reconhecido de um alerta como visto pelo usuário que faz a chamada. Isso não resolve o incidente nem silencia o alerta: o alerta se resolve sozinho quando a condição some. Se o alerta não tiver nenhum incidente não reconhecido, a chamada falha com um erro de validação. Retorna o alerta. Use alerts_history para ver os incidentes com acknowledged_at e acknowledged_by. Exige apenas acesso de leitura às análises, então leitores (viewers) podem reconhecer.
Permissão: analytics.read
curl -X POST https://privatusanalytics.com/alerts/:id/acknowledge.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/workspaces/:workspace_id/alerts.json
Criar um alerta
alerts_create
Cria uma regra de alerta que monitora um site (ou o espaço de trabalho inteiro para o kind usage) e notifica os canais escolhidos quando ela dispara. O caminho recebe workspace_id. name e kind são obrigatórios. kind define o que mais é necessário. threshold exige site_id, metric (visitors, visits, pageviews, bounce_rate ou conversion), operator (gt, gte, lt ou lte) e threshold, e conversion também exige goal_id. anomaly exige site_id e metric (visitors, visits ou pageviews), compara a última janela com a mesma janela em cada uma das 4 semanas anteriores e usa sensitivity (low, medium ou high). operator lt alerta apenas em quedas, gt apenas em picos e vazio em ambos. goal exige site_id, goal_id e threshold (conclusões na janela). no_data exige site_id e threshold em horas sem eventos (padrão 24). usage não exige site e usa threshold como porcentagem da cota mensal de eventos (padrão 80). uptime exige site_id e, opcionalmente, uptime_check_id (padrão todas as verificações do site). ssl exige site_id e threshold em dias antes de um certificado ou domínio expirar (padrão 14). vitals exige site_id, metric (lcp, inp, cls, fcp ou ttfb) e threshold em milissegundos (uma pontuação para cls). subscriptions exige site_id, metric (mrr_drop: o MRR caiu mais que threshold por cento nos últimos 30 dias, churn_rate ou mrr_churn_rate: o churn dos últimos 30 dias está acima de threshold por cento) e threshold (padrão 10), e é ignorado enquanto o site não tem provedor de pagamento conectado ou nada a medir. window_minutes (padrão 60, de 5 a 10080) é o quanto cada avaliação olha para trás. channel_ids vêm de notification_channels_list e sensitivity assume por padrão medium. Os alertas são avaliados automaticamente a cada 5 minutos. Os limites de bounce_rate e conversion são porcentagens de 0 a 100. testimonials exige site_id e metric, que diz o que ele monitora: new (chega um novo depoimento), low_rating (chega uma nota 3 ou menor), approved (um depoimento é aprovado), allowance (a cota mensal de novos depoimentos está 80% usada, esgotada, ou retendo um depoimento como em espera), sync_found (uma sincronização encontra novas avaliações), import_failed (uma importação falha, ou uma fonte falha em três sincronizações seguidas), removal_requested (alguém pede a remoção do seu depoimento) ou request_bounced (um e-mail de solicitação é devolvido). Um alerta de testimonials não é avaliado a cada 5 minutos: ele dispara na hora, cada vez que o fato acontece, registra um incidente que já está resolvido, e seu estado continua ok. Com metric allowance ele monitora o espaço de trabalho inteiro e não guarda site. Retorna o alerta criado com state ok.
Permissão: content.write
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/alerts.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/alerts/:id.json
Excluir um alerta
alerts_delete
Exclui permanentemente uma regra de alerta e todo o seu histórico de incidentes. Isso não pode ser desfeito e as notificações param imediatamente. Para pausar um alerta sem perder o histórico, use alerts_update com enabled false ou alerts_mute. O id (alr_...) vem de alerts_list. Retorna o alerta excluído como ele era. Exige permissão de escrita de conteúdo.
Permissão: content.write
curl -X DELETE https://privatusanalytics.com/alerts/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/alerts/:id/history.json
Histórico de incidentes de um alerta
alerts_history
Lista os incidentes de um alerta, do mais recente ao mais antigo e paginados. Cada incidente tem triggered_at, resolved_at (null enquanto ainda estiver aberto), value (o número medido quando disparou, na mesma unidade do limite do alerta), message (uma descrição legível), acknowledged_at e acknowledged_by (nome de exibição do membro, ou null). Defina open como true para ver apenas os incidentes não resolvidos. Use alerts_acknowledge para marcar o mais recente como visto e alerts_get para o estado atual da regra.
Permissão: analytics.read
curl https://privatusanalytics.com/alerts/:id/history.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/workspaces/:workspace_id/alerts.json
Listar alertas
alerts_list
Lista as regras de alerta de um espaço de trabalho (o caminho recebe workspace_id), ordenadas por nome e paginadas. Retorna um array data de alertas com a paginação em meta. Cada alerta tem id (alr_...), site_id (pa_..., null para alertas usage, que monitoram o espaço de trabalho inteiro), name, kind, metric, operator, threshold, window_minutes, sensitivity, goal_id, channel_ids (ids nch_...), state (ok ou triggered), enabled, muted_until, last_triggered_at, last_evaluated_at e created_at. Restrinja com site_id, state (ok ou triggered) ou kind. Use site_alerts_list para listar os alertas de um site a partir do caminho do site, alerts_get para um único alerta e alerts_history para seus incidentes. Quem tem acesso limitado a alguns sites nunca vê alertas usage.
Permissão: analytics.read
curl https://privatusanalytics.com/workspaces/:workspace_id/alerts.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/alerts/:id/mute.json
Silenciar (ou reativar) as notificações de um alerta
alerts_mute
Silencia as notificações de um alerta por um número de minutos, enquanto ele continua avaliando e registrando incidentes no histórico. minutes assume por padrão 60, o máximo é 43200 (30 dias) e 0 remove o silêncio na hora. A resposta é o alerta com muted_until definido para o fim do silêncio (null quando não está silenciado). Use alerts_update com enabled false para parar de avaliar por completo e alerts_acknowledge para marcar um incidente como visto sem silenciar.
Permissão: content.write
curl -X POST https://privatusanalytics.com/alerts/:id/mute.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/alerts/:id.json
Obter um alerta
alerts_get
Retorna uma regra de alerta pelo id (alr_..., de alerts_list ou site_alerts_list). A resposta é o objeto do alerta com id, site_id (null para alertas usage), name, kind, metric, operator, threshold, window_minutes, sensitivity, goal_id, channel_ids, state (ok ou triggered), enabled, muted_until, last_triggered_at, last_evaluated_at e created_at. Ela não inclui incidentes: use alerts_history para eles. threshold é um número cuja unidade depende do kind (veja alerts_create). Exige acesso de leitura às análises.
Permissão: analytics.read
curl https://privatusanalytics.com/alerts/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/alerts/:id.json
Atualizar um alerta
alerts_update
Altera uma regra de alerta existente (id de alerts_list). Apenas as entradas enviadas mudam, todo o resto mantém o valor. As mesmas regras por kind de alerts_create se aplicam ao resultado, então alterar kind ou metric pode exigir o site_id, goal_id, operator ou threshold correspondente. Envie channel_ids para substituir a lista inteira de canais de notificação e enabled false para parar de avaliar sem excluir. Para silenciar as notificações por um tempo mas continuar registrando incidentes, use alerts_mute. Retorna o alerta atualizado.
Permissão: content.write
curl -X PATCH https://privatusanalytics.com/alerts/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/alerts.json
Listar alertas de um site
site_alerts_list
Lista as regras de alerta de um site (o caminho recebe site_id), ordenadas por nome e paginadas. Retorna os mesmos objetos de alerta e aceita os mesmos filtros state e kind de alerts_list, mas apenas para este site, então os alertas usage (que não têm site) não são incluídos. Escolha esta quando você já tiver um id de site e alerts_list quando quiser todos os alertas do espaço de trabalho. Cada alerta tem id (alr_...), site_id, name, kind, metric, operator, threshold, window_minutes, sensitivity, goal_id, channel_ids, state (ok ou triggered), enabled, muted_until, last_triggered_at, last_evaluated_at e created_at.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/alerts.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
Análises
GET
/sites/:site_id/clicks.json
Mapa de cliques: os elementos mais clicados do site, ou de uma página, com a parte das visitas dela que clicou em cada um
clicks_list
Cliques por elemento, vindos do módulo de cliques do rastreador. Um elemento é um seletor CSS curto (tag, id e até duas classes, no máximo quatro níveis), ou [data-privatus-click="name"] quando o site deu um nome a ele. Envie path (começando com uma barra, como foi armazenado) para uma página: então os elementos são {selector, clicks, visits, visit_share}, page_visits é o número de visitas que viram a página e visit_share é a porcentagem delas (de 0 a 100) que clicou no elemento. Sem path, os elementos são {path, selector, clicks, visits} em todo o site. visits conta as visitas que clicaram pelo menos uma vez. Retorna period, path, page_visits e elements, do mais clicado para o menos clicado. Nunca coletamos o texto dos elementos, as coordenadas nem o movimento do mouse. Use pages_detail para ver o resto de uma página.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/clicks.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/overview.json
Visão geral do site: métricas, séries do gráfico, painéis principais, visitantes ao vivo e notas
stats_overview
Uma chamada que retorna tudo o que a página de visão geral do site mostra: use-a para responder a uma pergunta ampla, como "como está o site", em vez de chamar várias ferramentas. Retorna period, metrics (visitors, visits, pageviews, views_per_visit, bounce_rate, visit_duration, revenue), interval, series (uma entrada por intervalo de tempo), panels, notes e live_visitors. Com compare, acrescenta comparison_period, comparison, change e comparison_series, como em stats_aggregate e stats_timeseries. As unidades são as mesmas dessas ferramentas: bounce_rate é uma porcentagem de 0 a 100, visit_duration é a mediana de milissegundos engajados, revenue é um inteiro em unidades menores (centavos). panels é um objeto indexado pelo nome da dimensão, cada um com as 10 principais linhas e sua participação, no mesmo formato de linha de stats_breakdown para aquela dimensão. Por padrão retorna channel, referrer, page, entry_page, country, device, browser, os, utm_campaign, event e goal. Envie panels para escolher outras dimensões (qualquer nome de dimensão, exceto chaves prop). notes lista as anotações no intervalo como {id, date, end_date, title, url, color}. live_visitors conta os visitantes dos últimos 5 minutos. Para mais de 10 linhas de uma dimensão use stats_breakdown, e para um único número use stats_aggregate. Aceita as entradas compartilhadas period, compare, filters e segment.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/overview.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/experiments/external.json
Relatório de experimento: taxa de conversão por variante, ganho em relação ao controle e significância (teste z de duas proporções)
experiments_report
Relata um teste A/B usando dados de eventos. As visitas são atribuídas à variante encontrada em uma propriedade de evento (o primeiro valor visto na visita, por exemplo a propriedade variant com os valores control e b), e uma conversão é uma visita que concluiu uma meta. As entradas obrigatórias são property (chave em minúsculas, até 64 caracteres) e goal_id (uma meta ativa, de goals_list). Retorna period, property, goal {id, name}, control, confidence (0.95) e variants. Cada variante tem visits, conversions, conversion_rate (porcentagem, de 0 a 100), control (true para a linha de base), uplift (variação percentual da taxa de conversão em relação ao controle, null para o controle ou quando a taxa do controle é 0), z, p_value e significant (true quando p_value é menor que 0.05, usando um teste z de duas proporções). O controle é a variante que você passar em control, senão uma chamada control, senão a variante com mais visitas. No máximo 20 variantes, das mais movimentadas para as menos. Certifique-se antes de que o site envia a variante como propriedade de evento. Aceita as entradas compartilhadas period e filters. Para uma taxa de conversão simples de uma meta, use goals_get. Exige o plano Business ou Enterprise (caso contrário, 402 plan_limit).
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/experiments/external.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/insights.json
Mudanças notáveis em relação ao período anterior, em linguagem natural (maiores variações, mudanças de conversão de metas)
insights_get
Mudanças notáveis em linguagem simples para um site, comparadas com o período anterior de mesma duração. Retorna period, comparison_period e insights. O período cobre dias completos até ontem, escolhido com period (7d, 14d, 28d ou 30d, padrão 7d). Cada insight tem dimension (total, channel, page, country ou goal), metric, value, previous, current, change e sentence. change é uma porcentagem para contagens e pontos percentuais para a taxa de conversão de metas, e sentence é uma frase em inglês pronta para ler. Inclui o total de visitantes e de visualizações de página, as duas maiores variações por dimensão (mudanças de 20 por cento ou mais com pelo menos 10 visitas ou visualizações) e as metas cuja taxa de conversão variou meio ponto ou mais. Os mais importantes primeiro, limitados por limit (padrão 8, máximo 20). Os resultados ficam guardados durante o dia. Para números exatos use stats_aggregate e stats_breakdown, e use esta para descobrir o que mudou.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/insights.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/journeys.json
Jornadas: os 3 principais caminhos de 3 etapas depois de uma página (ou qualquer entrada), ou antes de uma página ou meta
journeys_explore
Explora os caminhos de páginas de três etapas mais comuns dentro das visitas. No modo forward (padrão), mostra os caminhos depois de uma página inicial informada em path, ou depois de qualquer entrada quando path está em branco. No modo reverse, mostra os caminhos que levam a uma página final (path) ou a uma meta (goal_id, que muda para reverse automaticamente). reverse exige path ou goal_id. path deve começar com uma barra. Retorna period, mode, path, goal, sampled, sample_rate (porcentagem), total_visits e o grafo de caminhos com nodes e links por etapa, limitado a limit páginas por etapa (de 2 a 12, padrão 6). Acima de 100.000 visitas, os dados são amostrados. Filtros de página são ignorados porque encurtariam os caminhos. Os caminhos são montados por visita, já que nenhum id de visitante é armazenado. Aceita as entradas compartilhadas period, filters e segment. Para as páginas vizinhas de uma página use pages_detail, e para a conversão por etapa use funnels_get.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/journeys.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/pages/detail.json
Detalhes da página: métricas, páginas anteriores e seguintes, origens, Web Vitals, eventos e mapa de cliques de um caminho
pages_detail
Uma página em profundidade. Informe path (deve começar com uma barra, por exemplo /pricing), exatamente como foi armazenado (sem query string nem host). Retorna period, path, url, metrics, previous_pages, next_pages, sources, vitals, events, clicks, goals e notes. metrics tem visitors, visits, pageviews, entrances, exits, entry_rate, exit_rate e bounce_rate (porcentagens, de 0 a 100), time_on_page (mediana em milissegundos) e scroll_depth (mediana em porcentagem), sendo as duas últimas null quando não há dados de engajamento. previous_pages e next_pages são as páginas vistas antes e depois na mesma visita, como {value, count, share}, com (entrance) e (exit) como valores especiais. sources tem os principais canais e origens de referência das visitas que entraram por esta página. vitals tem os valores p75 por Web Vital com classificações. events são eventos personalizados disparados na página, clicks são os seletores de elementos mais clicados, goals são as metas concluídas nela e notes são as anotações que a mencionam. Use stats_breakdown com dimension page para classificar páginas e referrers_detail para um site de referência.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/pages/detail.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/referrers.json
Referenciadores: os sites que apontam para este site, com visitantes, engajamento, tipo de tráfego e número de páginas com links
referrers_list
Classifica os sites externos que enviaram visitantes, com o que cada um enviou. Visitas diretas (sem referenciador) ficam de fora. Retorna period, summary, channels, page, limit, has_more e rows. summary tem visitors, visits, pageviews, bounce_rate (porcentagem), visit_duration (mediana de milissegundos engajados), revenue (unidades menores, centavos), sites (número de sites de referência) e share (porcentagem de todas as visitas que vieram de referenciadores). channels mostra os tipos de tráfego como {value, visitors, visits}. Cada linha tem value (o host do referenciador), visitors, visits, pageviews, bounce_rate, visit_duration, revenue, channel (seu canal habitual), linking_pages (quantas páginas diferentes desse site apontam para cá) e share (porcentagem dos visitantes referenciados). Ordene com sort (visitors, visits, pageviews ou revenue, padrão visitors), restrinja com search (texto contido no host) e percorra as páginas com page e limit (máximo 100) enquanto has_more for true. Use referrers_detail para um site. Aceita as entradas compartilhadas period, compare, filters e segment.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/referrers.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/referrers/detail.json
Detalhe do referenciador: métricas e tendência de um site de origem, suas páginas com links, páginas de entrada, países, dispositivos, campanhas e conversões
referrers_detail
Um site de referência em profundidade. Informe referrer como o host sem www e sem caminho (por exemplo news.ycombinator.com), o mesmo valor de referrers_list. Retorna period, referrer, url, channel (seu canal mais comum), metrics, share (porcentagem de todas as visitas), interval, series (o tráfego ao longo do tempo), linking_pages, landing_pages, channels, countries, devices, campaigns, goals e, com compare, comparison, change e comparison_series. metrics e series usam os mesmos campos e unidades de stats_aggregate e stats_timeseries. linking_pages são as páginas do referenciador que enviaram visitantes, como linhas com path, url, visitors e share (query strings nunca são armazenadas). landing_pages são os lugares onde esses visitantes entraram. channels, countries, devices e campaigns são os principais valores com métricas, e goals lista as metas que eles concluíram com conversions e conversion_rate. Use referrers_list para classificar os sites de referência e stats_breakdown com dimension referrer para uma lista simples.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/referrers/detail.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/stats/aggregate.json
Métricas principais de um período (com comparação)
stats_aggregate
Números principais de um período, como um único objeto. Retorna period {from, to} e metrics {visitors, visits, pageviews, views_per_visit, bounce_rate, visit_duration, revenue}. Com compare, retorna também comparison_period, comparison (as mesmas métricas para o outro intervalo) e change (variação percentual por métrica, null quando o valor anterior era 0). Unidades: bounce_rate é uma porcentagem de 0 a 100 (10.9 significa 10,9%). visit_duration é a mediana do tempo engajado de uma visita em milissegundos. revenue é um inteiro em unidades menores (centavos) da moeda do site. views_per_visit é um decimal. Os visitantes são contados por dia porque nenhum id de visitante persistente é armazenado, então quem volta em outro dia conta de novo. Use-a para totais e variação entre períodos. Use stats_timeseries para um gráfico ao longo do tempo, stats_breakdown para os principais valores de uma dimensão e stats_overview para tudo isso em uma chamada. Restrinja qualquer uma delas com filters (veja filters para os nomes de dimensões e os operadores).
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/stats/aggregate.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/breakdown/:dimension.json
Principais valores de uma dimensão (páginas, origens, países…)
stats_breakdown
Principais valores de uma dimensão com suas métricas, os mais importantes primeiro, paginados. A dimensão é a última parte do caminho e deve ser um nome exato da sua descrição (por exemplo country, page, channel, utm_campaign, prop:plan). Retorna period, dimension, label, page, limit, has_more e rows. Peça a próxima página enquanto has_more for true. Toda linha tem value e share (porcentagem do total do período). Os demais campos de uma linha dependem da dimensão. As dimensões de visita (channel, referrer, referrer_url, utm_*, ref, hostname, country, language, device, browser, browser_version, os, os_version, screen, entry_page, exit_page, interaction, bot_score) dão visitors, visits, pageviews, views_per_visit, bounce_rate, visit_duration e revenue. page dá pageviews, visits, time_on_page (milissegundos) e scroll_depth (porcentagem), sem visitors. event e prop:<key> dão completions, visits, revenue e conversion_rate. goal dá goal_id, completions, conversions, conversion_rate e revenue. Unidades: bounce_rate e conversion_rate são porcentagens (de 0 a 100), as durações são em milissegundos, revenue é em unidades menores (centavos). Uma dimensão errada retorna um 422 que lista os nomes válidos. Use search para procurar um valor em todas as linhas e filters para restringir os dados antes (por exemplo, as páginas visitadas por um país). Para uma página ou um referenciador em profundidade use pages_detail ou referrers_detail. As dimensões interaction e bot_score exigem o plano Business ou Enterprise: como breakdown elas respondem com 402 plan_limit nos outros planos, e um filtro sobre uma delas é deixado de fora.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/breakdown/:dimension.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/stats/timeseries.json
Métricas por intervalo de tempo para gráficos
stats_timeseries
Métricas por intervalo de tempo, para gráficos e tendências. Retorna period, interval (o intervalo realmente usado) e series, uma lista de {date, visitors, visits, pageviews, views_per_visit, bounce_rate, visit_duration, revenue}, uma entrada por intervalo, com date como o início do intervalo em ISO 8601. Com compare, retorna também comparison_series para o outro intervalo, intervalo a intervalo. As unidades são as mesmas de stats_aggregate: bounce_rate é uma porcentagem (de 0 a 100), visit_duration é a mediana de milissegundos engajados, revenue é em unidades menores (centavos). interval assume por padrão auto, que escolhe minuto, hora, dia, semana ou mês conforme o intervalo. Defina-o para forçar um tamanho de intervalo. Use stats_aggregate para um único total e stats_breakdown para dividir por uma dimensão, como country ou page.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/stats/timeseries.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
Análises dos depoimentos
GET
/sites/:site_id/testimonials/analytics/breakdown.json
Divida uma métrica de depoimentos por formulário, pedido, widget, mural, depoimento, canal, página, país ou origem
testimonial_stats_breakdown
Retorna linhas, a maior primeiro, cada uma com key, label, value e share (um percentual do total), ou numerator e denominator para uma taxa. Uma linha de um registro (formulário, pedido, widget, mural, depoimento) traz o seu id. Cada dimensão aceita apenas algumas métricas: formulário e canal aceitam as métricas de formulário, pedido as métricas de pedido, widget e mural as suas próprias visualizações, cliques, taxa de cliques e video_plays, depoimento aceita testimonial_views e video_plays, página e país aceitam as métricas de visualização e clique, e origem aceita new_testimonials. Um par que não combina responde com 422 e nomeia as métricas que combinam.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/analytics/breakdown.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/testimonials/analytics/export.json
Enfileire um arquivo de uma seção das análises de depoimentos
testimonial_stats_export
Cria uma exportação do tipo testimonial_stats para o período informado e a devolve na fila. Consulte exports_get até que status seja complete, depois exports_download. section escolhe as linhas: days (uma linha por dia, semana ou mês com todas as métricas), forms, channels, requests, widgets, walls, pages, testimonials, sources ou countries. O arquivo é mantido por 7 dias. Responde com 422 in_progress quando já há exportações demais na fila.
Permissão: analytics.export
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/analytics/export.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/analytics.json
Leia as análises de depoimentos de um site em uma só chamada
testimonial_stats_overview
Retorna tudo o que a aba Análises em Depoimentos mostra para um período: cards (form_views, submissions, completion_rate, answer_rate, widget_views, wall_views, cada um com previous e change quando compare está definido), chart (uma métrica ao longo do tempo), uma linha por formulário, pedido, widget e mural, channels (como os formulários foram abertos), pages (onde widgets e murais foram vistos), top_testimonials, new_testimonials (por origem e por status atual) e countries. As taxas são percentuais de 0 a 100 e são null quando não há com o que dividir. blank é true enquanto o site nunca contou nada, e recorded lista as métricas que já contou. São totais diários do recurso de depoimentos, não análises da web: use stats_overview para visitantes e visualizações de página.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/analytics.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/testimonials/analytics/timeseries.json
Leia uma métrica de depoimentos por dia, semana ou mês
testimonial_stats_timeseries
Retorna pontos com date, to, value e, quando compare está definido, previous e previous_date, além de total, previous_total e change. Uma taxa (completion_rate, answer_rate, widget_click_rate, wall_click_rate) é calculada a partir dos totais de cada intervalo e é null para um intervalo sem com o que dividir. new_testimonials é contado a partir dos próprios depoimentos pelo dia em que cada um foi adicionado.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/analytics/timeseries.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
Ao vivo
GET
/sites/:site_id/live.json
Visitantes ao vivo, fluxo de atividade e o que está popular agora (últimos 30 minutos)
live_get
O que está acontecendo no site agora. Retorna live_visitors (visitantes nos últimos 5 minutos), window_minutes (30), sparkline (visitas por minuto nos últimos 30 minutos, do mais antigo ao mais recente, cada uma {minute, visits}), feed (a atividade mais recente), top_pages, top_referrers, top_countries (cada um com até 8 linhas de {value, visits}) e top_events (até 8 de {value, completions}) dos últimos 30 minutos. As entradas de feed têm occurred_at, kind, name, path, channel, referrer_host, country, device e browser. São anônimas, sem IP, cidade nem rastro do visitante. feed mostra todos os acessos por padrão, ou apenas visualizações de página ou eventos, com limit entradas (padrão 50, até o tamanho do buffer de 100). Os números não ficam em cache e não aceitam period. Passe filters (mesmo formato de stats_aggregate) para restringir todos os números e o feed aos acessos correspondentes. Use live_wallboard para uma visão compacta de vários sites e stats_overview para um período completo.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/live.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/live/wallboard.json
Cartões do wallboard (ao vivo e hoje) de um ou mais sites
live_wallboard
Cards compactos com números grandes para um ou mais sites, feitos para uma tela de escritório. Retorna rotate_seconds, generated_at e sites. Cada card de site tem id (pa_...), name, domain, live_visitors (últimos 5 minutos), sparkline (por minuto, últimos 30 minutos), visitors_today, pageviews_today, bounce_rate_today (porcentagem, de 0 a 100), top_pages, top_countries e top_referrers (5 linhas cada). Hoje significa o fuso horário do próprio site, e os números são lidos de dados ao vivo. site_ids lista os sites a incluir (até 12, apenas sites que seu token pode abrir), caso contrário é usado o site do caminho. rotate_seconds é limitado entre 5 e 300 e apenas informa a uma tela por quanto tempo mostrar cada card. Para uma tela pública compartilhável, use wallboard_links_create. Use live_get para a visão ao vivo completa de um site.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/live/wallboard.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/wallboard/:token.json
Wallboard para um token de wallboard (sem necessidade de login)
live_public_wallboard
Permissão: public
· Somente HTTP (não é uma ferramenta MCP)
curl https://privatusanalytics.com/wallboard/:token.json
POST
/sites/:site_id/live/wallboard/links.json
Criar um link de wallboard (somente leitura, revogável)
wallboard_links_create
Cria uma URL de wallboard somente leitura que qualquer pessoa com ela pode abrir sem fazer login, então compartilhe-a apenas com quem deve ver esses números. O caminho recebe site_id e este site sempre é incluído. site_ids adiciona mais sites para alternar (ids pa_... que você pode acessar, até 12 sites no total). rotate_seconds é quanto tempo cada site fica na tela, de 5 a 300 (padrão 20, valores fora do intervalo são ajustados). expires_at é uma data e hora ISO 8601, ou uma data simples YYYY-MM-DD que significa o fim desse dia no fuso horário do site. O wallboard mostra apenas números ao vivo e agregados de hoje. Retorna o link com sua url. Revogue-o com wallboard_links_delete.
Permissão: sites.manage
curl -X POST https://privatusanalytics.com/sites/:site_id/live/wallboard/links.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/live/wallboard/links/:id.json
Revogar um link de wallboard
wallboard_links_delete
Revoga um link de wallboard para que as TVs que o exibem parem de atualizar e a URL deixe de funcionar. Isso não pode ser desfeito, crie um novo link em vez disso. Revogar um link já revogado não faz nada. O id (shr_...) vem de wallboard_links_list. Retorna o link com revoked_at definido.
Permissão: sites.manage
curl -X DELETE https://privatusanalytics.com/sites/:site_id/live/wallboard/links/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/live/wallboard/links.json
Listar links de wallboard de um site
wallboard_links_list
Lista os links de wallboard de um site (o caminho recebe site_id), dos mais recentes para os mais antigos e incluindo os revogados. Um link de wallboard é uma URL secreta que mostra os visitantes ao vivo e os números de hoje em uma TV, sem login. Cada um tem id (shr_...), name, url, site_ids (ids pa_... dos sites pelos quais ele alterna), rotate_seconds, expires_at, revoked_at (definido depois de revogado) e created_at. Quem tem acesso limitado a alguns sites só vê links cujos sites são todos seus. Para os dados do wallboard em si, use live_wallboard. Exige a permissão sites.manage.
Permissão: sites.manage
curl https://privatusanalytics.com/sites/:site_id/live/wallboard/links.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
App móvel
GET
/workspaces/:workspace_id/app.json
Obter o que o app móvel precisa para abrir um workspace
mobile_bootstraps_get
Retorna, para um workspace (o caminho recebe workspace_id), o papel e as permissões de quem chama, features (quais relatórios restritos o plano inclui: traffic_quality, bot_detection, external_experiments, campaign_costs, status_pages, traffic_rules, experiment_advanced (as configurações avançadas de um experimento) e survey_ai_themes (temas para as respostas escritas de uma pesquisa) como true ou false, e retention_months como um número de meses ou null para sem limite), sites_count (os sites que quem chama pode abrir) e min_app_version (a versão mais antiga do app móvel que a API ainda atende). O app móvel lê isso uma vez ao abrir um workspace, para poder mostrar um relatório que o plano não tem como não incluído, em vez de pedi-lo. Requer analytics.read.
Permissão: analytics.read
· Somente HTTP (não é uma ferramenta MCP)
curl https://privatusanalytics.com/workspaces/:workspace_id/app.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
DELETE
/account/device.json
Parar as notificações push para o app móvel
mobile_devices_delete
Remove o registro de push do login do app móvel que está chamando, e o dispositivo deixa de receber pushes. O login em si permanece, e o app pode se registrar de novo. Sair (POST /oauth/revoke com o refresh token) também o remove. Somente um token do app móvel pode chamá-lo.
Permissão: member
· Somente HTTP (não é uma ferramenta MCP)
curl -X DELETE https://privatusanalytics.com/account/device.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/account/device.json
Obter o registro de push do app móvel
mobile_devices_get
Retorna o dispositivo do login do app móvel que está chamando: registered (false até o app registrar um token de push), platform, locale, timezone, app_version, kinds (todos os tipos de push existentes), muted_kinds e muted_site_ids (o que a pessoa desativou). Somente um token do app móvel pode chamá-lo.
Permissão: member
· Somente HTTP (não é uma ferramenta MCP)
curl https://privatusanalytics.com/account/device.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/account/device.json
Registrar o app móvel para notificações push
mobile_devices_update
Registra o dispositivo do login do app móvel que está chamando para notificações push, ou altera o que ele recebe. Somente as entradas enviadas mudam. A primeira chamada precisa de platform e push_token. Um dispositivo recebe push de uptime (uma verificação caiu ou voltou), alert (um alerta disparou ou foi resolvido), site_audit (uma auditoria de site terminou), experiment (um experimento tem resultado ou terminou) e usage (a franquia mensal está quase ou totalmente usada), para todos os sites que seu membro pode abrir, em todos os planos. muted_kinds e muted_site_ids desativam tipos e sites, e cada um substitui a lista inteira. Registrar um token de push que outro login do app possui o move para este. Somente um token do app móvel pode chamá-lo. É uma das duas escritas que esse token pode fazer.
Permissão: member
· Somente HTTP (não é uma ferramenta MCP)
curl -X PATCH https://privatusanalytics.com/account/device.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Assinaturas
DELETE
/sites/:site_id/subscriptions/connections/:provider.json
Desconectar um provedor de pagamento e excluir a chave e os dados de assinaturas
subscriptions_disconnect
Desconecta um provedor de pagamento (stripe, paddle, lemon_squeezy, chargebee ou polar) de um site e exclui permanentemente a chave de API armazenada e todas as linhas de assinatura lidas dele. Isso não pode ser desfeito, e os números de MRR, churn e coortes deixam de incluir na hora as assinaturas desse provedor. Falha se esse provedor não estiver conectado. Retorna a conexão removida. Exige sites.manage.
Permissão: sites.manage
· Somente HTTP (não é uma ferramenta MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/subscriptions/connections/:provider.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/subscriptions/sync.json
Ler agora as assinaturas de um provedor de pagamento
subscriptions_sync
Enfileira uma sincronização imediata das assinaturas de um provedor conectado (stripe, paddle, lemon_squeezy, chargebee ou polar) em vez de esperar pelo agendamento regular. Retorna na hora (HTTP 202) com a conexão, e a sincronização roda em segundo plano. Consulte subscriptions_report ou verifique last_synced_at e last_error na conexão. Os relatórios ficam em cache por até 15 minutos. Falha se o provedor não estiver conectado. Exige sites.manage.
Permissão: sites.manage
curl -X POST https://privatusanalytics.com/sites/:site_id/subscriptions/sync.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/subscriptions/cohorts.json
Grade de coortes: churn ou retenção por mês do primeiro pagamento
subscriptions_cohorts
A grade de coortes de churn das assinaturas do site, uma linha por mês do primeiro pagamento. months é 6, 12 (padrão) ou 24 coortes. plan mantém apenas as assinaturas de um plano (veja plans em subscriptions_report). metric é subscriptions (contagem) ou mrr (dinheiro). view é churn (a fração que já tinha terminado até aquele ponto, padrão) ou retention (a fração ainda ativa). Retorna metric, view, months, plan (o filtro, ou null), currency e cohorts, cada um com month (YYYY-MM), size (assinaturas, ou MRR em unidades menores da moeda do site) e cells, em que cada célula tem offset (meses desde o mês da coorte, 0 é o primeiro), retained (mesma unidade de size) e percent (de 0 a 100, null para uma coorte vazia). Os períodos de teste que nunca pagaram não estão em nenhuma coorte. Para MRR, ARR e churn gerais, use subscriptions_report. Exige analytics.read.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/subscriptions/cohorts.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/subscriptions.json
Métricas de assinaturas: MRR, ARR, movimentos de MRR, churn, retenção de receita, testes, planos e uma previsão
subscriptions_report
Métricas de assinatura do site, lidas da conta conectada do Stripe, Paddle, Lemon Squeezy, Chargebee ou Polar. months é 6, 12 (padrão) ou 24. plan mantém apenas as assinaturas de um plano, com o nome como plans o lista. Os campos monetários são inteiros em unidades menores da moeda do site (a currency da resposta), com as outras moedas convertidas à taxa de hoje. O resultado tem currency, connected (false quando nenhum provedor está conectado), plan (o filtro de plano, ou null), connections (uma por provedor conectado com provider, account_name, sandbox, status, last_error, last_synced_at e created_at, nunca uma chave), skipped_currencies (moedas sem taxa, cujo valor não é contado), totals, series, forecast e plans. totals tem mrr_minor, arr_minor, previous_mrr_minor (o MRR de 30 dias atrás), active_subscriptions, arpa_minor (null sem assinaturas), trialing, trial_conversion_rate (porcentagem dos períodos de teste que terminaram nos últimos 90 dias e pagaram, null quando nenhum terminou) e, para os últimos 30 dias, new_subscriptions, new_mrr_minor, expansion_mrr_minor, contraction_mrr_minor, churned_subscriptions, churned_mrr_minor, net_new_mrr_minor, quick_ratio (MRR novo mais de expansão para cada unidade de MRR cancelado mais de contração, null quando nada foi perdido), subscription_churn_rate e mrr_churn_rate (porcentagem, null sem base). Tem também net_revenue_retention e gross_revenue_retention (porcentagem do que as assinaturas que pagavam há 12 meses pagavam então e que pagam agora, com e sem upgrades, null sem base) e forecast_mrr_minor (o MRR em 12 meses, null sem previsão). series tem uma linha por mês (month como YYYY-MM) com mrr_minor, active_subscriptions, os mesmos campos de movimento e churn_rate. forecast tem uma linha por mês para os próximos 12 meses (month, mrr_minor), projetada a partir dos últimos três meses completos, e fica vazia sem três meses completos que começaram com MRR. plans lista até 50 planos por MRR com plan (null para assinaturas às quais o provedor não deu nome de plano), mrr_minor, active_subscriptions, churned_subscriptions e subscription_churn_rate (últimos 30 dias), sempre para todos os planos. Uma assinatura conta a partir do primeiro pagamento. Upgrades e downgrades são conhecidos a partir da primeira sincronização e, antes dela, os meses passados usam o preço que a assinatura tinha quando foi lida pela primeira vez. Para a retenção por mês do primeiro pagamento, use subscriptions_cohorts. Exige analytics.read.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/subscriptions.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
Assistente
POST
/sites/:site_id/ask.json
Fazer uma pergunta em uma nova conversa (conta para o limite mensal de perguntas de IA)
assistant_ask
Inicia uma nova conversa do Ask em um site e responde à primeira pergunta usando as análises desse site. Use-a para uma pergunta em linguagem simples sobre um site. Use assistant_ask_followup para continuar uma conversa existente e as ferramentas de estatísticas quando você já souber a consulta exata. A resposta é produzida por um modelo de IA que executa por conta própria consultas de análise somente leitura, então a chamada pode levar muitos segundos. Ela conta como uma pergunta de IA na cota mensal do espaço de trabalho (5 no Free, 20 no Pro, 100 no Business) e falha com um erro de limite quando a cota se esgota. A pergunta pode ter no máximo 2.000 caracteres. As conversas são privadas do membro que as iniciou e são excluídas 30 dias após a última mensagem. Retorna a conversa (id, site_id, title tirado da pergunta, created_at, updated_at, expires_at) com um array messages. Cada mensagem tem role (user ou assistant), content (o texto da resposta), queries (as consultas de análise exatas que o assistente executou), chart (definição de gráfico, pode ser nula), goal_draft (meta sugerida, pode ser nula), contagens de tokens e created_at. Se a resposta falhar, a conversa é removida e nenhuma pergunta é contada. Exige analytics.read.
Permissão: analytics.read
curl -X POST https://privatusanalytics.com/sites/:site_id/ask.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/ask/:id.json
Excluir uma conversa do Ask e suas mensagens
assistant_conversations_delete
Exclui permanentemente uma conversa do Ask e todas as suas mensagens na hora. Isso não pode ser desfeito. Pegue o id da conversa em assistant_conversations_list. Apenas o membro que iniciou uma conversa pode vê-la e excluí-la. Exige analytics.read e um site_id. Retorna o resumo da conversa excluída (id, site_id, title, carimbos de data e hora). Não devolve as perguntas de IA já contadas no mês.
Permissão: analytics.read
curl -X DELETE https://privatusanalytics.com/sites/:site_id/ask/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/ask.json
Listar suas conversas do Ask de um site
assistant_conversations_list
Lista as conversas do Ask do membro conectado em um site, das atualizadas mais recentemente para as mais antigas. As conversas de outros membros nunca aparecem. Use-a para encontrar o id de uma conversa para assistant_conversations_get, assistant_ask_followup ou assistant_conversations_delete. Cada item tem id, site_id, title (a primeira pergunta, truncada em 80 caracteres), created_at, updated_at e expires_at, mas nenhuma mensagem. Paginada com page e per_page (máximo 100). Exige analytics.read.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/ask.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/ask/:id.json
Uma conversa do Ask: perguntas, respostas, as consultas por trás delas e gráficos
assistant_conversations_get
Retorna uma conversa do Ask com o histórico completo de mensagens. Pegue o id da conversa em assistant_conversations_list ou no resultado de assistant_ask. Os campos são id, site_id, title, created_at, updated_at, expires_at (30 dias após a última mensagem, quando a conversa é excluída) e messages. Cada mensagem tem role (user ou assistant), content, queries (as consultas de análise que o assistente executou), chart (pode ser nulo), goal_draft (pode ser nulo) e input_tokens e output_tokens (inteiros que podem ser nulos). Apenas o membro que iniciou a conversa pode lê-la. Exige analytics.read.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/ask/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/ask/:ask_conversation_id/messages.json
Fazer uma pergunta de acompanhamento em uma conversa (conta para o limite mensal de perguntas de IA). Retorna a resposta.
assistant_ask_followup
Faz uma pergunta de acompanhamento dentro de uma conversa do Ask existente, para que o assistente mantenha as perguntas e respostas anteriores como contexto. Use assistant_ask para iniciar uma nova conversa. Pegue conversation_id em assistant_conversations_list. A chamada pode levar muitos segundos porque o assistente executa consultas de análise somente leitura. Cada pergunta conta na cota mensal de perguntas de IA do espaço de trabalho (5 no Free, 20 no Pro, 100 no Business) e falha com um erro de limite quando ela se esgota. A pergunta pode ter no máximo 2.000 caracteres. Retorna apenas a nova mensagem do assistente (não a conversa inteira) com id, role, content (a resposta), queries (as consultas exatas executadas), chart (pode ser nulo), goal_draft (pode ser nulo), input_tokens, output_tokens e created_at. Exige analytics.read e só funciona nas suas próprias conversas.
Permissão: analytics.read
curl -X POST https://privatusanalytics.com/sites/:site_id/ask/:ask_conversation_id/messages.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Auditoria do site
GET
/sites/:site_id/audit/issues.json
Listar os problemas de uma auditoria do site, uma linha por verificação
site_audit_issues_list
Lista os problemas de uma auditoria, uma linha por verificação que sinalizou algo, os piores primeiro (erros, depois avisos, depois observações, cada um por URLs afetadas). Cada linha tem check_key (use-o com site_audit_issues_get e as ferramentas de silenciamento), title, category, severity (error, warning ou notice), affected (URLs sinalizadas, excluindo as silenciadas), added e fixed (mudanças desde a auditoria anterior) e pageviews (visitas às páginas afetadas nos 30 dias anteriores à auditoria). Assume por padrão a última auditoria concluída, ou passe audit_id. Filtre com severity, category e new_only (apenas verificações com URLs novas desde a auditoria anterior). Paginada com page e per_page (máximo 100, padrão 50). Para ver quais URLs uma verificação sinalizou, use site_audit_issues_get. Exige analytics.read.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/audit/issues.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/audit/issues/:check_key.json
Obter uma verificação da auditoria do site: por que importa, como corrigir e as URLs afetadas
site_audit_issues_get
Detalhes de uma verificação em uma auditoria, por check_key de site_audit_issues_list (por exemplo title_missing). Retorna audit_id, issue (a mesma linha da lista), why (o que o problema significa), fix (como corrigi-lo), muted (true se a verificação inteira está silenciada para o site) e urls, as URLs sinalizadas com page_id (use-o com site_audit_pages_get), url, pageviews, detail (fatos extras sobre o achado, pode estar vazio), is_new e muted. sort é pageviews (padrão, as mais movimentadas primeiro) ou url. Paginada com page e per_page (máximo 100, padrão 25). Assume por padrão a última auditoria concluída, ou passe audit_id. As URLs silenciadas ficam por último. Exige analytics.read.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/audit/issues/:check_key.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/audit/mutes/bulk.json
Silenciar uma verificação da auditoria do site em várias URLs, ou várias verificações inteiras, em uma única chamada
site_audit_mutes_bulk
Silencia muitos achados em uma única requisição, tudo ou nada. Use um de dois formatos. Envie check_key mais urls (até 100 URLs) para silenciar uma verificação em várias páginas, ou envie check_keys (até 100) para silenciar verificações inteiras para o site. Não misture urls com check_keys. Uma verificação desconhecida ou uma URL inválida faz a requisição inteira falhar e não silencia nada. Os itens já silenciados são retornados como estão. As contagens e a pontuação da última auditoria são atualizadas uma vez no fim. Retorna a lista de silenciamentos. Desfaça cada um com site_audit_mutes_delete. Exige content.write.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/audit/mutes/bulk.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/audit/mutes.json
Silenciar uma verificação da auditoria do site, para o site inteiro ou para uma URL
site_audit_mutes_create
Silencia uma verificação para o site, ou apenas para uma URL. check_key vem de site_audit_issues_list. Deixe url de fora para silenciar a verificação em todo lugar, ou passe uma URL completa (como https://example.com/old) para silenciá-la apenas nessa página, em que a URL é normalizada do mesmo jeito que o rastreador faz. As contagens e a pontuação da última auditoria são atualizadas na hora. Silenciar a mesma coisa duas vezes retorna o silenciamento existente em vez de um erro. Para silenciar muitos de uma vez use site_audit_mutes_bulk, e para desfazer use site_audit_mutes_delete. Exige content.write.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/audit/mutes.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/audit/mutes/:id.json
Reativar uma verificação da auditoria do site
site_audit_mutes_delete
Remove um silenciamento, encontrado pelo id em site_audit_mutes_list, para que a verificação ou a URL volte a contar na pontuação da auditoria. A última auditoria é recontada imediatamente. Isso apenas remove o silenciamento e não exclui dados da auditoria. Retorna o silenciamento removido. Exige content.write.
Permissão: content.write
curl -X DELETE https://privatusanalytics.com/sites/:site_id/audit/mutes/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/audit/mutes.json
Listar as verificações que um site silenciou
site_audit_mutes_list
Lista as verificações silenciadas para o site, das mais recentes para as mais antigas. Um silenciamento oculta uma verificação para o site inteiro (url é null) ou para uma única URL, de modo que esses achados ficam fora das contagens e da pontuação, embora as auditorias ainda os registrem. Cada linha tem id (um id de silenciamento, use-o com site_audit_mutes_delete), site_id, check_key, title, url (null para um silenciamento em todo o site), muted_by (o nome do membro, null se desconhecido) e created_at. Filtre com check_key. Paginada com page e per_page (máximo 100). Exige analytics.read.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/audit/mutes.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/audit/notifications.json
Ativar ou desativar o seu e-mail de resumo da auditoria de um site
site_audit_notifications_update
Liga ou desliga o e-mail de resumo semanal da auditoria para o membro que chama em um site. É uma preferência pessoal e não afeta outros membros. enabled true envia ao membro o resumo depois das auditorias deste site, false o interrompe. Retorna site_id, enabled e all_sites_enabled (false quando o membro desativou os e-mails de auditoria para todos os sites nas configurações da sua conta, o que prevalece sobre isto). Qualquer membro com analytics.read pode alterar a sua própria configuração.
Permissão: analytics.read
curl -X PATCH https://privatusanalytics.com/sites/:site_id/audit/notifications.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/audit/pages.json
Listar e filtrar as páginas de uma auditoria do site
site_audit_pages_list
O explorador de páginas, que lista as URLs de uma auditoria (a última concluída por padrão, ou audit_id). kind é page (padrão, documentos HTML), resource (imagens, scripts, folhas de estilo) ou external (links para outros sites). Filtre por state (queued, fetched, skipped, blocked, failed), status_class (2xx, 3xx, 4xx ou 5xx), indexable, in_sitemap, has_issues (contando apenas problemas não silenciados), depth (cliques a partir da página inicial) e query (texto na URL ou no título). sort é pageviews (padrão), inlinks, depth, response_ms (as mais lentas primeiro) ou word_count (as com menos palavras primeiro). Cada linha tem id (um UUID para site_audit_pages_get), url, path, kind, state, status, depth, indexable, indexability_reason, title, word_count, response_ms, cache_status, inlinks, pageviews, in_sitemap e issues (contagem). Paginada com page e per_page (máximo 100). Exige analytics.read.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/audit/pages.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/audit/pages/:id.json
Obter uma página auditada: seus metadados, problemas, links de entrada e links de saída
site_audit_pages_get
Tudo o que a auditoria armazenou sobre uma URL, pelo id (um UUID de site_audit_pages_list ou das urls de site_audit_issues_get). Retorna id, audit_id, page (url, status, redirect_to, content_type, bytes, response_ms, title, meta_description, h1, canonical, robots_meta, indexable e indexability_reason, word_count, lang, hreflang, schema_types, tags sociais, images_count, images_missing_alt, contagens de links, link_score, in_sitemap, has_tracker, pageviews e search_clicks, fetched_at e mais), redirect_target_id (a página para a qual ela redireciona dentro da auditoria, ou null), issues (check_key, title, category, severity, detail, is_new, muted) e inlinks e outlinks (até 100 cada, com page_id, url, status, kind, anchor, nofollow, count). Exige analytics.read.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/audit/pages/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/audit/settings.json
Obter as configurações de auditoria de um site
site_audit_settings_get
Retorna as configurações de auditoria do site. Os campos são site_id, enabled (auditorias agendadas ligadas ou desligadas, ligadas por padrão), include_subdomains, check_external_links, exclude_paths, ignored_params, extra_start_urls, next_run_at (quando a próxima auditoria agendada vence, null se não houver), page_limit (páginas por auditoria no plano atual, null quando ilimitado) e interval_days (dias entre auditorias agendadas no plano). Um site que nunca alterou suas configurações retorna os padrões. Altere-as com site_audit_settings_update. Exige sites.manage.
Permissão: sites.manage
curl https://privatusanalytics.com/sites/:site_id/audit/settings.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/audit/settings.json
Alterar as configurações de auditoria de um site
site_audit_settings_update
Altera como o site é auditado. Apenas as entradas enviadas mudam. enabled liga ou desliga as auditorias agendadas e manuais (ligá-la agenda a próxima auditoria para um intervalo do plano à frente). include_subdomains e check_external_links são booleanos. As três listas substituem a lista armazenada, não são mescladas, então envie a lista completa. exclude_paths são prefixos de caminho que o rastreador ignora e cada um deve começar com uma barra (até 50). ignored_params são nomes de parâmetros de consulta que nunca formam uma página diferente, como utm_source ou sessionid (até 50, letras, dígitos, ponto, hífen, sublinhado). extra_start_urls são URLs http ou https completas a rastrear além da página inicial (até 20). Uma lista também pode ser enviada como texto com uma entrada por linha. Retorna as configurações atualizadas. Exige sites.manage.
Permissão: sites.manage
curl -X PATCH https://privatusanalytics.com/sites/:site_id/audit/settings.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/audit/unsubscribe/:token.json
Cancelar a inscrição nos e-mails de resumo da auditoria do site com o token de um e-mail
site_audit_unsubscribes_create
Permissão: public
· Somente HTTP (não é uma ferramenta MCP)
curl -X POST https://privatusanalytics.com/audit/unsubscribe/:token.json \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/audit/cancel.json
Cancelar a auditoria do site em andamento
site_audit_cancel
Interrompe a auditoria em execução ou na fila para o site. A auditoria é marcada como canceled e nada do rastreamento não concluído é relatado. Uma auditoria cancelada não consome a cota mensal do plano Free. Falha com um erro de validação se nenhuma auditoria estiver em andamento. Retorna a auditoria cancelada. Exige content.write.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/audit/cancel.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/audit/compare.json
Comparar duas auditorias do site: URLs adicionadas e corrigidas por verificação
site_audit_compare
Compara duas auditorias do site, verificação por verificação. audit_id é a auditoria mais nova e base_id a mais antiga. Ambos têm padrões sensatos (a última auditoria concluída contra a auditoria concluída anterior a ela), e a ferramenta os troca se você os passar na ordem errada. Retorna audit e base (cada um um resumo de auditoria, base null se não houver nada anterior) e checks, um objeto por verificação cujas URLs mudaram, com check_key, title, category, severity, base_affected, affected, added e fixed (contagens de URLs), ordenados com os erros primeiro. As verificações sem mudança ficam de fora. Para duas auditorias consecutivas, added e fixed são exatos, e para auditorias mais distantes são a variação líquida. Exige analytics.read.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/audit/compare.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/audit.json
Iniciar uma auditoria do site agora
site_audit_run
Inicia agora um novo rastreamento e auditoria SEO do site. Ela rastreia as páginas públicas do site em segundo plano, então retorna na hora com a nova auditoria em status queued. Consulte site_audit_get (campo live) ou site_audit_history até o status ser complete. É recusada com um erro de validação quando a auditoria está desativada em site_audit_settings_update, quando outra auditoria já está na fila ou em execução, quando uma auditoria manual foi iniciada nas últimas 24 horas e, no plano Free, quando qualquer auditoria rodou nos últimos 30 dias (as que falharam e as canceladas não contam). Sites não verificados e sem eventos também são limitados a uma auditoria por dia por domínio. As páginas rastreadas são limitadas pelo plano (Free 100, Pro 1.000, Business 10.000). Verifique antes can_run em site_audit_get. Exige content.write.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/audit.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/audit/history.json
Listar as auditorias de um site, da mais recente para a mais antiga
site_audit_history
Lista as auditorias do site, das mais recentes para as mais antigas, cada uma com id (aud_...), status (queued, running, analyzing, complete, partial, failed ou canceled), trigger (first, scheduled ou manual), score (de 0 a 100, null até concluir), score_band, page_limit, pages_crawled, urls_discovered, errors, warnings, notices, new_issues, fixed_issues, failure (o motivo quando falhou, caso contrário null) e os carimbos de data e hora. Filtre com status. Paginada com page e per_page (máximo 100). Use os ids com site_audit_get, site_audit_compare e as ferramentas de problemas e páginas. Para o estado atual de uma auditoria, use site_audit_get. Exige analytics.read.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/audit/history.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/audit.json
Obter a visão geral da auditoria do site: nota, contagens, principais problemas por tráfego e a auditoria em andamento
site_audit_get
A visão geral da auditoria SEO do site, a melhor primeira chamada para perguntas sobre auditoria. Por padrão descreve a última auditoria concluída, ou passe audit_id (aud_..., de site_audit_history) para uma mais antiga. O resultado tem audit (a auditoria concluída com score de 0 a 100, score_band, score_delta, contagens de errors, warnings e notices, pages_crawled, page_limit, capped, summary e detalhes de robots, ou null se nenhuma foi concluída), live (a auditoria em execução agora, ou null), enabled e next_run_at (o agendamento), can_run com run_blocked (live, disabled ou too_soon) e run_allowed_at (quando site_audit_run é permitida de novo), changes (contagens de URLs adicionadas e corrigidas por gravidade), trend (até 30 pontuações recentes como id, finished_at, score), top_issues (até 10 verificações classificadas por gravidade e depois por visualizações de página das páginas afetadas) e email_enabled (a sua própria preferência de e-mail de resumo). Continue com site_audit_issues_list para todos os problemas e site_audit_pages_list para as URLs. Exige analytics.read.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/audit.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
Busca
GET
/sites/:site_id/search.json
Relatório de busca: cliques, impressões, CTR, posição, principais consultas/páginas, páginas de destino e oportunidades
search_report
Desempenho de busca do Google Search Console e do Bing Webmaster, combinado com as métricas das páginas de entrada do próprio site. Escolha provider: all (o padrão) soma todos os mecanismos conectados, com a posição ponderada pelas impressões e com países e dispositivos apenas do Google, ou google ou bing isoladamente, e o period habitual ou from e to personalizados. limit (de 1 a 100, padrão 25) limita as linhas de cada tabela. O resultado tem period, provider, connection (property, status, last_synced_at do mecanismo escolhido, ou null quando ele não está conectado ou provider é all), connections (cada mecanismo conectado com provider, property, status e last_synced_at), latest_date (o dia mais recente com dados), delayed (true quando o intervalo vai além de latest_date), totals e series (por dia), cada um com clicks, impressions, ctr (uma porcentagem, não uma fração, 2 casas decimais) e position (posição média, 1 é a melhor, null se desconhecida), breakdowns para query, page, country e device (linhas de value mais as mesmas quatro métricas), landing_pages (principais páginas com visits, bounce_rate e conversion_rate como porcentagens, e conversions) e opportunities (low_ctr_queries com pelo menos 100 impressões e um CTR abaixo de 2 por cento, e páginas striking_distance com posição média de 8 a 20). Os valores de país são como o provedor os informa. Use stats_breakdown para dados de visitantes e esta ferramenta para o que acontece antes do clique. Exige analytics.read.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/search.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
DELETE
/sites/:site_id/search/connections/:provider.json
Desconectar o Search Console ou o Bing e excluir seus dados
search_disconnect
Desconecta um provedor de busca (google ou bing) de um site e exclui permanentemente os dados de busca importados desse provedor. Isso não pode ser desfeito. A autorização do Google também é removida quando nenhum site a usa mais. Falha se esse provedor não estiver conectado. Retorna a conexão removida. Exige sites.manage.
Permissão: sites.manage
· Somente HTTP (não é uma ferramenta MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/search/connections/:provider.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/search/sync.json
Importar dados de busca agora
search_sync
Enfileira uma importação imediata de dados de busca para um provedor conectado (google, o padrão, ou bing) em vez de esperar pelo agendamento regular. Retorna na hora (HTTP 202) com a conexão, e a importação roda em segundo plano. Consulte search_report e acompanhe connection.last_synced_at. Os mecanismos de busca relatam com um atraso de alguns dias, então os dias mais recentes continuam vazios mesmo após uma sincronização. Falha se o provedor não estiver conectado. Exige sites.manage.
Permissão: sites.manage
curl -X POST https://privatusanalytics.com/sites/:site_id/search/sync.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Campanhas
POST
/sites/:site_id/campaigns/costs.json
Definir o gasto de uma campanha em um mês
campaign_costs_create
Registra o gasto com anúncios de uma campanha em um mês, para que campaigns_list possa mostrar o custo por aquisição e o retorno sobre o gasto com anúncios. Se já existir uma entrada para a mesma campanha e mês, ela é substituída, não duplicada, então também é seguro chamá-la duas vezes. campaign é o valor de utm_campaign como aparece nos seus links rastreados, month é YYYY-MM (uma data completa como 2026-09-15 é aceita e ajustada para o primeiro dia do mês) e amount é em unidades maiores, como número (1250.50, não unidades menores). currency é um código ISO opcional de 3 letras e assume por padrão a moeda do site. A resposta retorna a entrada armazenada com amount_minor em unidades menores. Para muitas linhas de uma vez, use campaign_costs_import. Exige content.write. Exige o plano Business ou Enterprise (caso contrário, 402 plan_limit).
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/campaigns/costs.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/campaigns/costs/:id.json
Excluir um lançamento de custo de campanha
campaign_costs_delete
Exclui permanentemente uma entrada de gasto, encontrada pelo id em campaign_costs_list. Isso não pode ser desfeito, e o CPA e o ROAS dessa campanha e desse mês deixam de incluir o gasto na hora. Outros meses e campanhas não são afetados. Retorna a entrada excluída. Exige content.write. Exige o plano Business ou Enterprise (caso contrário, 402 plan_limit).
Permissão: content.write
curl -X DELETE https://privatusanalytics.com/sites/:site_id/campaigns/costs/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/campaigns/costs/import.json
Importar custos de campanha de um CSV (campaign,month,amount[,currency])
campaign_costs_import
Importa em massa o gasto com anúncios a partir de um CSV, o jeito rápido de carregar muitas campanhas e meses. Envie o texto do CSV em csv (melhor para ferramentas e chamadas de API) ou faça upload de um arquivo em file (apenas multipart). A primeira linha deve ser um cabeçalho com campaign, month e amount, com uma coluna opcional currency, por exemplo campaign,month,amount,currency e depois spring_sale,2026-09,1250.50,USD. Month é YYYY-MM, amount é em unidades maiores e currency assume por padrão a moeda do site. As linhas fazem upsert por campanha e mês, então reimportar o mesmo arquivo não duplica. Os limites são 1 MB e 5.000 linhas. Uma linha inválida não interrompe a importação. A resposta tem imported (quantidade salva), failed (quantidade rejeitada) e errors (as 50 primeiras mensagens, cada uma indicando sua linha, em que a linha 2 é a primeira linha de dados). Uma coluna de cabeçalho ausente, um arquivo grande demais ou um CSV malformado faz a requisição inteira falhar. Exige content.write. Exige o plano Business ou Enterprise (caso contrário, 402 plan_limit).
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/campaigns/costs/import.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/campaigns/costs.json
Listar lançamentos de custo de campanha
campaign_costs_list
Lista as entradas de gasto com anúncios registradas para um site, do mês mais recente para o mais antigo e depois pelo nome da campanha. Cada linha é uma campanha em um mês, com amount_minor (um inteiro em unidades menores da moeda, então 125050 significa 1.250,50), currency (ISO 4217, em maiúsculas), month como YYYY-MM e o id da entrada (um UUID, use-o em campaign_costs_update e campaign_costs_delete). Passe campaign para ver apenas uma campanha (correspondência sem diferenciar maiúsculas e minúsculas com o valor de utm_campaign). Paginada com page e per_page (máximo 100). Os custos alimentam o CPA e o ROAS em campaigns_list, então é aqui que se confere qual gasto uma campanha tem. Exige analytics.read. Exige o plano Business ou Enterprise (caso contrário, 402 plan_limit).
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/campaigns/costs.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/campaigns/costs/:id.json
Alterar um lançamento de custo de campanha
campaign_costs_update
Altera uma entrada de gasto existente, encontrada pelo id em campaign_costs_list. Apenas as entradas enviadas mudam, então envie só amount para corrigir um número. amount é em unidades maiores (1250.50) e armazenado como unidades menores, month é YYYY-MM e currency é um código ISO de 3 letras. Mudar campaign ou month para uma combinação que outra entrada já tem falha com um erro de validação em vez de mesclar. Para corrigir o gasto de uma campanha e mês sem saber o id, chame campaign_costs_create, que substitui a entrada existente. Exige content.write. Exige o plano Business ou Enterprise (caso contrário, 402 plan_limit).
Permissão: content.write
curl -X PATCH https://privatusanalytics.com/sites/:site_id/campaigns/costs/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/campaigns/builder.json
Montar e validar uma URL com tags UTM
campaigns_builder
Monta uma URL com tags UTM para uma página de destino e verifica os valores. Nada é salvo e nenhum dado é lido, então é seguro chamá-la repetidamente. Passe destination (uma URL completa https://) mais utm_source, utm_medium, utm_campaign, utm_content e utm_term conforme necessário, ou escolha uma predefinição (newsletter, social, paid_search e assim por diante) para preencher utm_source e utm_medium quando você os deixar em branco. Retorna url (null quando há um erro), valid, destination, preset, os valores utm_* limpos, issues (uma lista de {field, level, message}, em que o level error bloqueia a URL e warning apenas sugere uma correção, como usar minúsculas) e presets (os valores de predefinição disponíveis). Os valores são limpos para minúsculas e sem espaços. Use campaigns_hygiene para encontrar valores UTM desorganizados que já existem no seu tráfego e campaigns_list para relatar campanhas que já rodaram. Para manter um link com tags, URL curta e contagem de cliques, use links_create.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/campaigns/builder.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/campaigns/hygiene.json
Higiene de UTM: valores quase duplicados, problemas de estilo e origens desconhecidas
campaigns_hygiene
Encontra valores UTM desorganizados no tráfego de um período para você corrigir as tags. Retorna period, duplicates, style_issues e unknown_sources. duplicates agrupa valores de utm_source, utm_medium ou utm_campaign que diferem apenas por maiúsculas, espaços ou pontuação (Facebook, facebook e face-book), cada um como {field, suggestion, variants: [{value, visits}]}, com a grafia mais visitada sugerida. style_issues lista valores que quebram a convenção de minúsculas e sem espaços como {field, value, visits, suggestion} (até 50). unknown_sources lista valores de utm_source que não são um canal reconhecido como {value, visits} (até 50). Apenas os 500 principais valores por campo são verificados. As contagens são de visitas. As sugestões são apenas conselhos e nada é alterado. Para unir variantes em um único canal, use channel_rules_create. Aceita as entradas compartilhadas period e filters. Use campaigns_list para o desempenho e campaigns_builder para criar URLs com tags limpas.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/campaigns/hygiene.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/campaigns.json
Resumo de campanhas com conversões, receita, custo, CPA e ROAS
campaigns_list
Relatório de desempenho de campanhas construído a partir de utm_campaign, com custo e retorno sobre o gasto com anúncios. Retorna period, currency (a moeda do site), goal_id e goal_name (a meta cujas conversões são contadas), campaigns, totals e unconverted_costs. Cada campanha tem visitors, visits, conversions, conversion_rate (porcentagem de 0 a 100, conversões divididas por visitas), revenue e sources (linhas por origem e mídia com as mesmas métricas). Quando existem custos (de campaign_costs_list), uma campanha também tem cost, cpa (custo por conversão, null quando não há conversões) e roas (receita dividida pelo custo, uma razão como 2.5, null quando não há custo). Os valores monetários (revenue, cost, cpa) são inteiros em unidades menores (centavos) da moeda do site. Os custos são associados aos nomes das campanhas sem diferenciar maiúsculas e minúsculas e rateados pelos dias de cada mês dentro do período. Uma campanha com custo mas sem tráfego continua listada. No máximo 100 campanhas, das mais movimentadas para as menos. Só são incluídas as visitas com utm_campaign. goal_id assume por padrão a primeira meta ativa, então informe-o explicitamente para medir uma meta específica (os ids vêm de goals_list). Use campaigns_hygiene para limpar os nomes e stats_breakdown com dimension utm_campaign para uma divisão simples do tráfego.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/campaigns.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/campaigns/links.json
Salvar um link com tags UTM na biblioteca
links_create
Salva um link com tags UTM na biblioteca de links do site (o caminho recebe site_id). name (até 120 caracteres) e destination (uma URL http ou https de até 2048 caracteres) são obrigatórios. Os valores utm são limpos automaticamente, em minúsculas, sem espaços nas pontas e com espaços convertidos em sublinhados, e um valor que pareça dado pessoal (um endereço de e-mail, por exemplo) é rejeitado. São mantidas até 20 tags, entradas separadas por vírgula são divididas e as tags são convertidas para minúsculas e cortadas em 40 caracteres. Ela apenas armazena o link, não rastreia nada por si só. A url retornada é o destino com os parâmetros UTM adicionados, e um parâmetro UTM que já esteja no destino é substituído. Use links_qr para um código QR.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/campaigns/links.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/campaigns/links/:id.json
Excluir um link salvo
links_delete
Remove um link salvo da biblioteca. Isso exclui apenas a entrada salva, as URLs que você já compartilhou continuam funcionando e suas visitas ainda são contadas por campanha. Não pode ser desfeito. O id (lnk_...) vem de links_list. Retorna o link excluído.
Permissão: content.write
curl -X DELETE https://privatusanalytics.com/sites/:site_id/campaigns/links/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/campaigns/links.json
Listar links de campanha salvos
links_list
Lista os links de campanha salvos (URLs com tags UTM) de um site (o caminho recebe site_id), dos mais recentes para os mais antigos e paginados. Cada link tem id (lnk_...), name, destination, utm_source, utm_medium, utm_campaign, utm_content, utm_term, url (o destino com os parâmetros UTM adicionados, pronto para compartilhar), tags, notes, created_at e updated_at. query pesquisa em name, destination e utm_campaign, e tag mantém apenas os links com essa tag. Esta é a biblioteca salva. Para ver como as campanhas se saíram, use campaigns_list ou stats_breakdown com dimension utm_campaign.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/campaigns/links.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/campaigns/links/:id/qr.json
QR code (SVG) de um link salvo
links_qr
Retorna um código QR da URL completa com tags de um link salvo, para impressão. A resposta tem link_id, url (a URL com tags codificada no código) e svg (um documento SVG completo e independente, como string, preto sobre branco). size é o tamanho do módulo em pixels, de 2 a 20 (padrão 6), e dimensiona a imagem. O id (lnk_...) vem de links_list. Use links_get quando precisar apenas da URL.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/campaigns/links/:id/qr.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/campaigns/links/:id.json
Obter um link de campanha salvo
links_get
Retorna um link de campanha salvo pelo id (lnk_..., de links_list). A resposta tem name, destination, utm_source, utm_medium, utm_campaign, utm_content, utm_term (cada um null quando não definido), url (a URL completa com tags), tags, notes, created_at e updated_at. Use links_qr para um código QR pronto para impressão da mesma URL.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/campaigns/links/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/campaigns/links/:id.json
Alterar um link salvo
links_update
Altera um link de campanha salvo (id de links_list). Apenas as entradas enviadas mudam. Valem a mesma limpeza e as mesmas verificações de dados pessoais de links_create. Enviar tags substitui a lista inteira de tags. Envie uma string vazia em um campo utm para limpá-lo. Retorna o link atualizado com a url recalculada.
Permissão: content.write
curl -X PATCH https://privatusanalytics.com/sites/:site_id/campaigns/links/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Canais de notificação
DELETE
/channels/:id.json
Excluir um canal de notificação
notification_channels_delete
Exclui um canal de notificação e o remove de todos os alertas que o usavam, então esses alertas deixam de notificar ali. Isso não pode ser desfeito e os próprios alertas são mantidos. O id (nch_...) vem de notification_channels_list. Retorna o canal excluído.
Permissão: content.write
curl -X DELETE https://privatusanalytics.com/channels/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/workspaces/:workspace_id/channels.json
Listar canais de notificação
notification_channels_list
Lista os canais de notificação de um espaço de trabalho (o caminho recebe workspace_id), ordenados por nome e paginados. Um canal é um lugar para onde os alertas são entregues. Cada um tem id (nch_...), kind (email, slack, teams, discord, webhook, pagerduty, opsgenie ou push), name, target (um resumo mascarado, como os endereços de e-mail ou o final de uma URL de webhook, os segredos nunca são retornados), last_used_at e created_at. Filtre por kind. Use os ids como channel_ids em alerts_create e alerts_update. Quem tem acesso limitado a alguns sites só vê os canais usados por alertas nos seus sites.
Permissão: analytics.read
curl https://privatusanalytics.com/workspaces/:workspace_id/channels.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/channels/:id/send_test.json
Enviar uma mensagem de teste por um canal
notification_channels_send_test
Envia uma mensagem de teste real pelo canal (um e-mail, uma publicação em chat, uma chamada de webhook e assim por diante), então use-a apenas quando o usuário quiser isso. A chamada falha com um erro que indica a causa se a entrega não funcionar, caso contrário retorna o canal. Os envios de teste têm limite de frequência por espaço de trabalho, e os canais de e-mail também por endereço externo. Use-a depois de notification_channels_create ou notification_channels_update para confirmar que uma URL ou chave está correta.
Permissão: content.write
curl -X POST https://privatusanalytics.com/channels/:id/send_test.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/channels/:id.json
Obter um canal de notificação
notification_channels_get
Retorna um canal de notificação pelo id (nch_..., de notification_channels_list). A resposta tem kind, name, target (um resumo mascarado, segredos como URLs de webhook e chaves nunca são retornados), last_used_at e created_at. Use notification_channels_send_test para verificar se ele entrega.
Permissão: analytics.read
curl https://privatusanalytics.com/channels/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/notifications/unsubscribe/:token.json
Cancelar a inscrição de um endereço em um canal de alerta ou verificação de disponibilidade com o token de um e-mail
notification_unsubscribes_create
Permissão: public
· Somente HTTP (não é uma ferramenta MCP)
curl -X POST https://privatusanalytics.com/notifications/unsubscribe/:token.json \
-H "Content-Type: application/json" -d '{…}'
POST
/push_subscription.json
Registrar um navegador para notificações push
push_subscriptions_create
Registra o navegador atual para alertas por web push, usando os três valores da PushSubscription do navegador (endpoint, p256dh e auth). Uma assinatura recebe alertas de todos os espaços de trabalho a que o membro pertence, para todos os sites, e por isso um token de API só pode usá-la quando consegue ler todo o seu espaço de trabalho e o membro não tem outro espaço de trabalho. Chamá-la de novo com o mesmo endpoint atualiza as chaves e move a assinatura para quem chama. O endpoint deve ser uma URL pública https de um serviço de push. Isso apenas registra o navegador, então os alertas ainda precisam de um canal de notificação do tipo push (notification_channels_create). Retorna endpoint_host (o nome do host do serviço de push, não o endpoint completo) e created_at. As sessões abertas por um provedor de identidade do espaço de trabalho não podem usá-la.
Permissão: member
curl -X POST https://privatusanalytics.com/push_subscription.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/push_subscription.json
Remover o registro push de um navegador
push_subscriptions_delete
Remove um dos registros de push do navegador do membro conectado para que esse navegador pare de receber notificações de alerta. Passe o mesmo endpoint usado com push_subscriptions_create. Falha com não encontrado quando essa assinatura não existe para o membro. Retorna a assinatura removida como endpoint_host e created_at. Não exclui nenhum canal de notificação. Sujeita às mesmas restrições de token de push_subscriptions_create.
Permissão: member
curl -X DELETE https://privatusanalytics.com/push_subscription.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Cobrança
POST
/workspaces/:workspace_id/billing/badge.json
Aderir ou não ao bônus do selo (plano gratuito)
billing_badge
Inclui ou retira um espaço de trabalho Free do bônus do selo do Privatus Analytics, que aumenta a cota mensal de eventos. Defina enabled como true para aderir. Uma verificação em segundo plano procura então o selo nos sites do espaço de trabalho e o valida, o que pode levar um momento, então leia billing_get depois e veja badge.verified_at. Defina enabled como false para sair, o que limpa as datas de verificação e remove o bônus. Aderir em um espaço de trabalho Pro ou Business é recusado porque os planos pagos não têm bônus. Retorna o objeto de cobrança do espaço de trabalho, como billing_get. Exige billing.manage.
Permissão: billing.manage
· Somente HTTP (não é uma ferramenta MCP)
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/billing/badge.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/workspaces/:workspace_id/billing/cancel.json
Cancelar no fim do período de cobrança
billing_cancel
Cancela a assinatura paga ao fim do período pago atual. Nada é reembolsado e o plano continua ativo até current_period_ends_at, quando o espaço de trabalho passa para o plano Free. Use billing_resume para desfazer antes disso. Falha quando o espaço de trabalho não tem assinatura ou quando um cancelamento já está agendado. O reason opcional (um dos valores do enum) e o comment formam uma pesquisa de saída. Um comment, se informado, é enviado por e-mail à equipe do Privatus Analytics como uma mensagem de feedback do membro e não é armazenado. Retorna o objeto de cobrança com cancel_at_period_end true. Exige billing.manage.
Permissão: billing.manage
· Somente HTTP (não é uma ferramenta MCP)
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/billing/cancel.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/workspaces/:workspace_id/billing/change_plan.json
Alterar plano, faixa ou intervalo (proporcional)
billing_change_plan
Move a assinatura existente para outro plano, faixa de eventos ou intervalo de cobrança. Isso gera cobrança. A mudança tem efeito imediato e o Paddle faz o cálculo proporcional, então uma cobrança ou um crédito é aplicado de imediato à forma de pagamento cadastrada. Execute billing_preview primeiro com as mesmas entradas para ver os valores exatos. Falha se o espaço de trabalho não tiver assinatura (use billing_checkout nesse caso), se o destino for o mesmo plano, faixa e intervalo atuais, ou se não existir preço para a combinação de plano e eventos. O valor de events deve ser uma das faixas de plans_list. Retorna o objeto de cobrança atualizado. Exige billing.manage.
Permissão: billing.manage
· Somente HTTP (não é uma ferramenta MCP)
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/billing/change_plan.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/workspaces/:workspace_id/billing/checkout.json
Iniciar um checkout Paddle para um plano pago
billing_checkout
Inicia um checkout do Paddle para um espaço de trabalho que ainda não tem assinatura e retorna uma URL de checkout hospedado. Nada é cobrado até que uma pessoa conclua o checkout em um navegador, então entregue a url à pessoa. Use billing_change_plan quando o espaço de trabalho já tiver uma assinatura. As entradas são plan (pro ou business), events (uma faixa de eventos por mês de plans_list) e interval (month ou year, padrão month). Os preços incluem IVA ou imposto sobre vendas. Um programa de desconto aprovado é aplicado automaticamente e informado em discount_id. Retorna transaction_id, url (pode ser nula), price_id, plan, events, interval, amount (USD inteiros para o intervalo), client_token e environment (sandbox ou production, usado pelo overlay do Paddle), custom_data e discount_id (pode ser nulo). Falha se o espaço de trabalho já tiver uma assinatura. Exige billing.manage.
Permissão: billing.manage
· Somente HTTP (não é uma ferramenta MCP)
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/billing/checkout.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/workspaces/:workspace_id/billing/discount.json
Solicitar um desconto para organizações sem fins lucrativos, educação ou código aberto
billing_discount
Solicita um programa de desconto para o espaço de trabalho. Isso envia uma solicitação para análise da equipe e avisa por e-mail a equipe do Privatus Analytics, não concede um desconto por si só. Os programas são nonprofit, education, open_source (50 por cento de desconto), open_source_free (Pro grátis até 1M de eventos por mês) e agency (20 por cento de desconto em cada espaço de trabalho que você possui). Só é permitida uma solicitação em aberto (pending, approved ou active) por espaço de trabalho, e você pode solicitar de novo após uma rejeição ou revogação. license só é mantida para os dois programas open source. Retorna a solicitação com program, status, percent, comp_events (pode ser nulo), organization_name, website, proof_url, license, note, rejection_reason, created_at, reviewed_at, applied_at e revoked_at (carimbos de data e hora que podem ser nulos). Acompanhe o andamento depois no campo discount de billing_get. Exige billing.manage.
Permissão: billing.manage
· Somente HTTP (não é uma ferramenta MCP)
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/billing/discount.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/workspaces/:workspace_id/billing/payment_method.json
Obter um link para atualizar a forma de pagamento
billing_payment_method
Retorna um link do Paddle onde uma pessoa pode atualizar a forma de pagamento da assinatura. A chamada em si não altera nada. Entregue a url à pessoa para abrir em um navegador. O resultado tem kind (payment_method) e url. Falha quando o espaço de trabalho não tem assinatura ativa. Para faturas, endereços e todos os outros detalhes de cobrança, use billing_portal. Exige billing.manage.
Permissão: billing.manage
· Somente HTTP (não é uma ferramenta MCP)
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/billing/payment_method.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/workspaces/:workspace_id/billing/portal.json
Obter um link do portal do cliente Paddle
billing_portal
Retorna um link para o portal do cliente do Paddle, onde uma pessoa pode ver faturas, formas de pagamento e endereços. A chamada em si não altera nada. Entregue a url à pessoa para abrir em um navegador. O resultado tem kind (portal) e url. Falha se o espaço de trabalho ainda não tiver um cliente no Paddle (nunca fez checkout) ou quando o cliente é compartilhado com outros espaços de trabalho aos quais quem chama não tem acesso, porque o portal expõe todos os dados do cliente. Use billing_payment_method apenas para o cartão. Exige billing.manage.
Permissão: billing.manage
· Somente HTTP (não é uma ferramenta MCP)
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/billing/portal.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/workspaces/:workspace_id/billing/preview.json
Pré-visualizar uma mudança de plano com valor proporcional
billing_preview
Mostra quanto custaria agora mover a assinatura para outro plano, faixa ou intervalo, sem alterar nada. Execute-a sempre antes de billing_change_plan com as mesmas entradas plan, events e interval. Falha se o espaço de trabalho não tiver assinatura ou se o destino for igual ao preço atual. Retorna plan, events, interval, price_id, amount (preço de tabela em USD inteiros para o intervalo), currency, charge_minor (o que seria cobrado agora), credit_minor (crédito pelo tempo não usado) e result_minor (valor líquido), todos em unidades menores da moeda, result_action (charge ou credit, pode ser nulo), next_billed_at (pode ser nulo) e warnings (strings, por exemplo o uso do mês passado excedendo a nova faixa ou limites do plano, como sites ou membros, que o novo plano violaria). Exige billing.manage.
Permissão: billing.manage
curl https://privatusanalytics.com/workspaces/:workspace_id/billing/preview.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/workspaces/:workspace_id/billing/resume.json
Desfazer um cancelamento agendado ou retomar uma pausa
billing_resume
Desfaz um cancelamento agendado, ou retoma uma assinatura pausada, para que o plano continue sendo renovado. Use-a após billing_cancel e antes de current_period_ends_at. Uma assinatura pausada é retomada de imediato. Falha quando não há cancelamento agendado e a assinatura não está pausada. Retorna o objeto de cobrança atualizado. Exige billing.manage.
Permissão: billing.manage
· Somente HTTP (não é uma ferramenta MCP)
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/billing/resume.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/workspaces/:workspace_id/billing.json
Obter o plano, a assinatura e o uso
billing_get
Retorna o plano e o estado de cobrança do espaço de trabalho. Use-a antes de alterar qualquer coisa na cobrança e para saber se a assinatura está ativa ou sendo cancelada. Os campos incluem workspace_id, plan (free, pro, business ou enterprise), plan_events (a faixa de eventos por mês vendida), allowance (eventos por mês realmente permitidos, incluindo qualquer bônus do selo), billing_interval (month ou year, pode ser nulo), price (USD inteiros para o intervalo, pode ser nulo), subscription_status, current_period_ends_at, cancel_at_period_end (true quando há um cancelamento agendado), canceled_at, auto_upgrade, discount (a solicitação de desconto mais recente, pode ser nulo), discount_percent, billing_emails (array), tax_id, badge (opted_in, verified_at, checked_at e o tamanho do bônus) e usage (o mesmo objeto que billing_usage retorna). Exige billing.manage. As faturas estão em billing_invoices_list e uma visão de uso mês a mês é billing_usage.
Permissão: billing.manage
curl https://privatusanalytics.com/workspaces/:workspace_id/billing.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/workspaces/:workspace_id/billing.json
Atualizar e-mails de cobrança, id fiscal e upgrade automático
billing_update
Atualiza as configurações de cobrança do espaço de trabalho. Apenas as entradas enviadas mudam. billing_emails é um array de até 5 endereços extras para faturas e avisos de cobrança e substitui a lista inteira. tax_id é armazenado no espaço de trabalho e não é adicionado às faturas, então também deve ser informado no checkout. auto_upgrade é false por padrão. Quando true, ao atingir o limite mensal de eventos o espaço de trabalho passa para a faixa seguinte e a diferença é cobrada, em vez de a coleta ser pausada. Ativá-lo enquanto a coleta já está pausada no limite faz o upgrade e a cobrança imediatamente e envia um e-mail de confirmação, e se o Paddle recusar o upgrade nada é salvo. Retorna o objeto de cobrança, como billing_get. Exige billing.manage.
Permissão: billing.manage
· Somente HTTP (não é uma ferramenta MCP)
curl -X PATCH https://privatusanalytics.com/workspaces/:workspace_id/billing.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/workspaces/:workspace_id/billing/usage.json
Obter o uso deste mês, a previsão e a divisão por site
billing_usage
Retorna o uso de eventos do espaço de trabalho em um mês. Use-a para ver quão perto o espaço de trabalho está do seu limite mensal rígido. As entradas são month (qualquer dia do mês, padrão o mês atual). Só contam visualizações de página e eventos personalizados. Os campos são month, events, bots (contagem agregada de bots, não cobrada), allowance, percent (de 0 a 100 e acima, uma casa decimal), forecast e forecast_percent (projeção linear até o fim do mês, null para meses passados), days_left, status (ok, warning aos 80 por cento, over aos 100 por cento, paused ou locked), sites (por site: site_id, domain, name, events e share em porcentagem, do maior para o menor), history (meses anteriores como month e events), access_locked_at, collection_paused (true quando novos eventos estão sendo descartados), pause_reason (limit ou staff, pode ser nulo), collection_paused_at e resumes_at (o dia 1 do próximo mês quando pausada pelo limite). Exige billing.manage.
Permissão: billing.manage
curl https://privatusanalytics.com/workspaces/:workspace_id/billing/usage.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/workspaces/:workspace_id/billing/invoices.json
Listar faturas
billing_invoices_list
Lista as transações de cobrança do espaço de trabalho, das mais recentes para as mais antigas. Cada item tem id (use-o com billing_invoices_get), invoice_number (pode ser nulo), status, amount_minor (inteiro em unidades menores da moeda, então 900 significa 9,00), currency (código ISO como USD) e billed_at (ISO 8601, pode ser nulo). Paginada com page e per_page (máximo 100). Lista apenas transações. Para obter o PDF, chame billing_invoices_get, e para atualizar o cartão use billing_payment_method. Exige billing.manage.
Permissão: billing.manage
curl https://privatusanalytics.com/workspaces/:workspace_id/billing/invoices.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/workspaces/:workspace_id/billing/invoices/:id.json
Obter o link do PDF de uma fatura
billing_invoices_get
Retorna um link para a fatura em PDF de uma transação cobrada. Pegue o id da fatura em billing_invoices_list (o campo id, um id de transação do Paddle). O resultado tem kind (invoice) e url, que é um link para o PDF do Paddle, então baixe ou compartilhe logo após a chamada. Falha se o id não pertencer a este espaço de trabalho ou se o Paddle não tiver fatura para ele. Exige billing.manage.
Permissão: billing.manage
curl https://privatusanalytics.com/workspaces/:workspace_id/billing/invoices/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
Coleta
POST
/embed/ads/e.json
Registra que um criativo foi mostrado, visto ou clicado, chamado pelo carregador de anúncios
ad_serving_event
Permissão: public
· Somente HTTP (não é uma ferramenta MCP)
curl -X POST https://privatusanalytics.com/embed/ads/e.json \
-H "Content-Type: application/json" -d '{…}'
GET
/embed/ads/:site.json
Os espaços de anúncio de um site e os criativos que cada um mostra, chamado pelo carregador de anúncios
ad_serving_slots
Permissão: public
· Somente HTTP (não é uma ferramenta MCP)
curl https://privatusanalytics.com/embed/ads/:site.json
POST
/api/overlay.json
Os cliques de uma página para a camada de cliques, chamada por pa.overlay.js com a sua chave de acesso
click_overlays_read
Permissão: public
· Somente HTTP (não é uma ferramenta MCP)
curl -X POST https://privatusanalytics.com/api/overlay.json \
-H "Content-Type: application/json" -d '{…}'
POST
/api/logs.json
Enviar logs de acesso do servidor para relatórios de crawlers de IA (JSON {lines: [...]} ou texto de log combinado, com a chave de logs de crawlers do site como Bearer token)
crawler_logs_create
Permissão: public
· Somente HTTP (não é uma ferramenta MCP)
curl -X POST https://privatusanalytics.com/api/logs.json \
-H "Content-Type: application/json" -d '{…}'
POST
/api/event.json
Coletar um hit do navegador (usado por /js/pa.js)
ingest_event
Permissão: public
· Somente HTTP (não é uma ferramenta MCP)
curl -X POST https://privatusanalytics.com/api/event.json \
-H "Content-Type: application/json" -d '{…}'
GET
/api/experiment.json
Se um experimento envia este visitante para uma página variante, chamado pelo script de cabeçalho dos experimentos
ingest_experiment
Permissão: public
· Somente HTTP (não é uma ferramenta MCP)
curl https://privatusanalytics.com/api/experiment.json
GET
/js/exp/:site.json
O script que a tag de cabeçalho opcional dos experimentos carrega para um site
ingest_experiment_script
Permissão: public
· Somente HTTP (não é uma ferramenta MCP)
curl https://privatusanalytics.com/js/exp/:site.json
POST
/api/survey.json
Registrar que um cartão de pesquisa foi exibido, dispensado ou respondido
ingest_survey
Permissão: public
· Somente HTTP (não é uma ferramenta MCP)
curl -X POST https://privatusanalytics.com/api/survey.json \
-H "Content-Type: application/json" -d '{…}'
GET
/api/surveys.json
Qual pesquisa mostrar em uma página, chamada pelo módulo de perguntas do rastreador
ingest_surveys
Permissão: public
· Somente HTTP (não é uma ferramenta MCP)
curl https://privatusanalytics.com/api/surveys.json
Coleções de depoimentos
POST
/sites/:site_id/testimonials/collections/:id/items.json
Adicione depoimentos a uma coleção manual
testimonial_collections_add_items
Até 100 de uma vez. Entram no fim, ou no início com position top, na ordem informada. A resposta traz meta.undo_id, que testimonials_bulk_undo aceita por 7 dias. Uma coleção inteligente não aceita nada à mão.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/collections/:id/items.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials/collections.json
Crie uma coleção, manual ou inteligente
testimonial_collections_create
kind manual é montada à mão, e testimonial_ids a inicia já preenchida. kind smart é mantida atualizada por condições: linhas de campo, operador e valor unidas por match. A resposta traz a contagem e as regras em linguagem simples, então uma chamada transforma uma frase em uma coleção viva. Experimente as regras antes com testimonial_collections_preview. O tipo nunca muda depois.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/collections.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/testimonials/collections/:id.json
Mova uma coleção para a lixeira por 30 dias
testimonial_collections_destroy
Os depoimentos dela não são tocados. Um widget ou mural que ela alimenta não mostra nada dela até que seja restaurada. Restaure com testimonial_trash_restore. Via MCP, a ferramenta não altera nada e responde com a página do app em que uma pessoa faz isso.
Permissão: content.write
· Somente HTTP (não é uma ferramenta MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/collections/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/collections.json
Liste as coleções de um site
testimonial_collections_list
Cada coleção vem com quantos depoimentos tem agora, quantos deles estão aprovados, as suas regras em linguagem simples quando é inteligente e os widgets e murais que ela alimenta. As coleções na lixeira ficam de fora.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/collections.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/testimonials/collections/preview.json
Experimente um conjunto de regras sem salvar nada
testimonial_collections_preview
Responde com quantos depoimentos correspondem agora, as regras em linguagem simples e cinco exemplos. Use antes de testimonial_collections_create ou testimonial_tags_update. Uma linha inválida é um 422 que nomeia a linha.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/collections/preview.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
DELETE
/sites/:site_id/testimonials/collections/:id/items.json
Retire depoimentos de uma coleção manual
testimonial_collections_remove_items
Até 100 de uma vez. Os depoimentos em si não são alterados. A resposta traz meta.undo_id, e um desfazer coloca cada um de volta no seu lugar.
Permissão: content.write
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/collections/:id/items.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials/collections/:id/reorder.json
Mova um depoimento para outro lugar em uma coleção manual
testimonial_collections_reorder
Indique o lugar com exatamente um entre position (contada a partir de 1), before_id ou after_id. A ordem é a que é servida a todo widget e mural que a coleção alimenta.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/collections/:id/reorder.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/collections/:id.json
Obtenha uma coleção com as suas contagens, as suas regras e o que ela alimenta
testimonial_collections_get
Os depoimentos dela são testimonials_list com collection_id.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/collections/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/testimonials/collections/:id.json
Altere o nome, a descrição, as regras ou a ordem de exibição de uma coleção
testimonial_collections_update
Só o que é enviado muda. Enviar conditions substitui todas as regras de uma coleção inteligente. O tipo é fixo.
Permissão: content.write
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/collections/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Compartilhamento
GET
/badge/:site_id.json
Selo contador de visitantes (SVG) de um site público
badges_get
Permissão: public
· Somente HTTP (não é uma ferramenta MCP)
curl https://privatusanalytics.com/badge/:site_id.json
Conexões de compra para depoimentos
DELETE
/sites/:site_id/testimonials/settings/purchase_connections/:id.json
Desconecte uma conta de pagamento
testimonial_purchase_connections_delete
Exclui a conexão e a sua chave. Os compradores que ainda esperam pelo primeiro e-mail não recebem o pedido. O pedido permanente fica como registro do que foi enviado.
Permissão: sites.manage
· Somente HTTP (não é uma ferramenta MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/settings/purchase_connections/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/settings/purchase_connections.json
Liste as conexões de compra de um site
testimonial_purchase_connections_list
Cada uma com a sua regra, o seu estado e o seu pedido permanente. A chave nunca é devolvida. paused é true em um plano sem pedidos após uma compra: a conexão é mantida, não lê pagamentos e não pede nada a ninguém.
Permissão: sites.manage
curl https://privatusanalytics.com/sites/:site_id/testimonials/settings/purchase_connections.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
Configurações de e-mail
POST
/email/preferences/:token/unsubscribe.json
Parar todos os e-mails de um endereço que podem ser desligados, com o token do link de configurações de e-mail dele
email_preferences_unsubscribe_all
Permissão: public
· Somente HTTP (não é uma ferramenta MCP)
curl -X POST https://privatusanalytics.com/email/preferences/:token/unsubscribe.json \
-H "Content-Type: application/json" -d '{…}'
POST
/email/preferences/:token.json
Desligar ou ligar e-mails de um endereço com o token do link de configurações de e-mail dele
email_preferences_update
Permissão: public
· Somente HTTP (não é uma ferramenta MCP)
curl -X POST https://privatusanalytics.com/email/preferences/:token.json \
-H "Content-Type: application/json" -d '{…}'
Conta
GET
/account.json
Obter seu perfil e preferências
account_get
Retorna o perfil e as preferências do próprio membro conectado. Use-o para ler as configurações antes de alterá-las com account_update. Isso diz respeito à pessoa, não a um espaço de trabalho. O plano e as faturas do espaço de trabalho ficam em billing_get. Os campos são email, unconfirmed_email (definido enquanto uma troca de e-mail aguarda confirmação, caso contrário null), name (pode ser nulo), theme (system, light ou dark), default_landing (sites ou last_site), locale (código do idioma do app para quem está conectado), timezone (nome IANA, pode ser nulo), shortcuts_enabled, reduce_motion, product_emails, site_audit_emails, marketing_emails, newsletter (todos booleanos, em que true significa inscrito), two_factor (booleano), passkeys (quantidade de passkeys registradas) e created_at (ISO 8601). Uma sessão aberta apenas por um provedor de identidade do espaço de trabalho vê somente email e as configurações de exibição.
Permissão: member
curl https://privatusanalytics.com/account.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/account.json
Atualizar seu perfil e preferências
account_update
Atualiza o perfil, as preferências de exibição e as inscrições de e-mail do próprio membro conectado. Apenas as entradas enviadas são alteradas, todo o resto permanece como está. Alterar email não tem efeito imediato. Um e-mail de confirmação é enviado ao novo endereço (com limite de frequência) e unconfirmed_email mostra o endereço pendente até que ele seja confirmado. Tokens de API não podem alterar o endereço de e-mail nem reativar marketing_emails depois de um cancelamento de inscrição, e ambos exigem um navegador conectado. Desativar marketing_emails é permitido. Sessões abertas por um provedor de identidade do espaço de trabalho só podem alterar as configurações de exibição (theme, default_landing, locale, timezone, shortcuts_enabled, reduce_motion). Retorna a conta atualizada no mesmo formato de account_get. Isso não exclui a conta e não altera as configurações do espaço de trabalho.
Permissão: member
curl -X PATCH https://privatusanalytics.com/account.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Crawlers
DELETE
/sites/:site_id/crawlers/connection.json
Desconectar o Cloudflare e excluir os acessos de crawlers que ele importou
crawlers_cloudflare_disconnect
Desconecta a Cloudflare de um site. Isso exclui o token de API armazenado e todos os acessos de rastreadores importados da Cloudflare, e não pode ser desfeito. Os acessos que vieram de logs de servidor enviados permanecem. O token continua existindo na sua conta da Cloudflare até você excluí-lo lá. Falha se o site não tiver conexão. Retorna a conexão removida. Exige sites.manage.
Permissão: sites.manage
· Somente HTTP (não é uma ferramenta MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/crawlers/connection.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/crawlers/sync.json
Importar agora os acessos de crawlers do Cloudflare
crawlers_cloudflare_sync
Enfileira uma importação imediata da Cloudflare para um site que já está conectado, em vez de esperar pelo agendamento regular. Retorna na hora (HTTP 202) com a conexão, e a importação roda em segundo plano. Consulte crawlers_report e acompanhe cloudflare.last_synced_at para ver quando terminou. Falha se o site não tiver conexão com a Cloudflare. Exige sites.manage.
Permissão: sites.manage
curl -X POST https://privatusanalytics.com/sites/:site_id/crawlers/sync.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/crawlers.json
Relatório de crawlers de IA: hits por crawler ao longo do tempo, principais caminhos por crawler, por categoria
crawlers_report
Relata quais rastreadores de IA, de busca e de SEO acessam o site, com que frequência e em quais caminhos, a partir de logs de servidor enviados e da importação da Cloudflare. Isso é tráfego de rastreadores, não de visitantes, então não aparece em stats_breakdown. category é ai (padrão), search, seo, other ou all, e crawler restringe a um bot específico, como GPTBot ou ClaudeBot. Escolha o intervalo com period (padrão 30d) ou from e to personalizados. O resultado tem period (from e to como datas), category, crawler, totals (hits, caminhos distintos, rastreadores distintos), categories (hits por categoria, ignorando o filtro de categoria), crawlers (até 50 linhas com crawler, category, hits, paths), series (rótulos por dia e hits diários dos 8 principais rastreadores), top_paths (os 10 caminhos mais acessados de cada um dos 8 principais rastreadores), has_data (false até existir algum hit) e cloudflare (a conexão com zone, status e last_synced_at, ou null). Os resultados ficam em cache por até 30 minutos, exceto logo após uma alteração na Cloudflare. Exige analytics.read.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/crawlers.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
Criativos de anúncio
POST
/sites/:site_id/experiments/ads/:ad_placement_id/creatives.json
Adiciona um criativo a uma posição de anúncio
ad_creatives_create
Adiciona uma imagem com a proporção da posição (pelo menos o tamanho dela, o dobro fica mais nítido) e o endereço para onde um clique vai. Envie a imagem como arquivo multipart, ou image_url para que ela seja baixada. Ela é processada em segundo plano, então consulte ad_creatives_get até state ser ready. Agendamento, dispositivos e paths são do Pro e superiores. Exige content.write.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/experiments/ads/:ad_placement_id/creatives.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/experiments/ads/:ad_placement_id/creatives/:id.json
Exclui um criativo e sua imagem
ad_creatives_delete
Exclui permanentemente um criativo e sua imagem. Um criativo comparado por um experimento não pode ser excluído: desligue-o. A ferramenta MCP não a executa e responde com human_only e a página onde uma pessoa o exclui. Exige content.write.
Permissão: content.write
· Somente HTTP (não é uma ferramenta MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/experiments/ads/:ad_placement_id/creatives/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/experiments/ads/:ad_placement_id/creatives/:id.json
Obtém um criativo com seu estado
ad_creatives_get
Um criativo fica em processing até a imagem ser gerada, depois ready (ou failed, com o motivo em error). Exige analytics.read.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/experiments/ads/:ad_placement_id/creatives/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/experiments/ads/:ad_placement_id/creatives/:id.json
Altera um criativo
ad_creatives_update
Altera o link, o peso, o agendamento ou a segmentação, desliga o criativo (active false) ou substitui a imagem. Só as entradas enviadas mudam. Uma nova imagem substitui a antiga quando fica pronta. Exige content.write.
Permissão: content.write
curl -X PATCH https://privatusanalytics.com/sites/:site_id/experiments/ads/:ad_placement_id/creatives/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Depoimentos
GET
/sites/:site_id/testimonials/overview.json
Leia os números de um site, o que precisa de atenção e o que aconteceu recentemente
testimonials_overview
stats traz os cinco números da página Visão geral: depoimentos aprovados, pendentes, novos neste mês, nota média e em uso. attention lista o que precisa de uma decisão com a sua contagem. activity são os 10 eventos mais recentes e latest_approved os três depoimentos aprovados mais recentemente.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/overview.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/testimonials/setup.json
Obtenha a lista de configuração de um site
testimonials_setup_get
Retorna os itens import, testimonials, approve, ask, widget e teammate, cada um com done e dismissed. Um item é concluído pelo que o site contém, nunca por um clique. hidden é true quando todos os itens estão concluídos ou dispensados, que é quando a Caixa de entrada deixa de mostrar o cartão.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/setup.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/testimonials/setup.json
Dispense um item da lista de configuração, ou o cartão inteiro
testimonials_setup_update
dismiss é a chave de um item (import, testimonials, approve, ask, widget ou teammate) ou all para o cartão inteiro. Dispensar oculta o item e nunca o marca como concluído, e não pode ser desfeito pela API.
Permissão: content.write
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/setup.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials/:id/approve.json
Aprove um depoimento para que possa ser exibido
testimonials_approve
Um depoimento aguardando a franquia não pode ser aprovado: o servidor responde com 422 e o código waiting_for_allowance. A resposta traz meta.undo_id.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/:id/approve.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials/bulk.json
Execute uma ação sobre uma seleção de depoimentos, ou sobre tudo o que um filtro encontra
testimonials_bulk
Envie ids (até 100, executados de uma vez, todos ou nenhum) ou filters com confirm_count (o resultado inteiro). Mais de 100 são executados em segundo plano e a resposta traz state running. Ações: approve, reject, mark_pending, pin, unpin, add_tags, remove_tags, add_to_collection, remove_from_collection, set_property, trash, restore. Cada uma responde com um id de desfazer que testimonials_bulk_undo aceita por 7 dias. delete_permanently é a única ação que não pode ser desfeita: exige sites.manage e a sua resposta diz undoable false. Via MCP, as duas ações que excluem, trash e delete_permanently, não são executadas: a ferramenta responde com human_only e a página do app em que uma pessoa faz isso, e toda outra ação é executada. Pela API, a ação export (com ids ou filters e um format opcional de csv, json, ndjson ou xlsx) não altera nada: exige analytics.export e responde com 202 e a exportação para baixar.
Permissão: content.write
· Somente HTTP (não é uma ferramenta MCP)
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/bulk.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials/bulk/:id/undo.json
Desfaça uma ação em lote em até 7 dias
testimonials_bulk_undo
Recoloca o valor anterior em cada depoimento que a execução alterou. Um que foi alterado de novo depois é deixado como está e contado em left. Via MCP, um desfazer que excluiria ou moveria para a lixeira não é executado (o desfazer de uma restauração, de uma execução de tradução e de uma execução de criação de imagens): a ferramenta responde com human_only e a página do app em que uma pessoa faz isso.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/bulk/:id/undo.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials.json
Adicione um depoimento à mão ou pela API
testimonials_create
Guardado pela única entrada que todas as rotas usam. Conta na franquia mensal de novos depoimentos do plano e, ao atingir a franquia, o servidor responde com 422 e o código allowance_reached (só o envio de um formulário de cliente é retido como em espera). A mesma pessoa dizendo as mesmas palavras de novo é recusada com o código duplicate, a menos que allow_duplicate seja true. O mesmo external_id de novo devolve o que já está guardado.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/testimonials/:id/permanent.json
Exclua um depoimento em definitivo, com o histórico, o registro de consentimento e os arquivos
testimonials_delete
Isso não pode ser desfeito. Funciona em um depoimento na lixeira ou fora dela e exige confirm e a permissão sites.manage. Via MCP, a ferramenta não exclui nada e responde com a página em que uma pessoa faz isso.
Permissão: sites.manage
· Somente HTTP (não é uma ferramenta MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/:id/permanent.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/testimonials/:id.json
Mova um depoimento para a lixeira por 30 dias
testimonials_trash
O depoimento mantém o seu estado, tags, coleções e arquivos, não é exibido em lugar nenhum e é excluído em definitivo após 30 dias. testimonials_restore o devolve exatamente como estava. A resposta traz meta.undo_id. Colocar na lixeira um que já está nela não altera nada. Via MCP, a ferramenta não altera nada e responde com a página do app em que uma pessoa faz isso.
Permissão: content.write
· Somente HTTP (não é uma ferramenta MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/facets.json
Conte os depoimentos por trás de cada valor de filtro, para as mesmas entradas da lista
testimonials_facets
A forma da biblioteca sem ler nenhum depoimento. Cada faceta conta os seus valores com a sua própria escolha deixada de fora e todos os outros filtros aplicados. meta traz o total e o filtro em palavras.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/facets.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/testimonials/:id/highlight.json
Marque a melhor frase de um depoimento, ou limpe a marca
testimonials_highlight
highlight deve ser um trecho exato das palavras do depoimento, ou o servidor responde com 422. Um highlight vazio o limpa. Cada mudança é uma versão no histórico.
Permissão: content.write
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/:id/highlight.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/:id/history.json
Liste todas as versões das palavras, do título, da nota e do destaque de um depoimento
testimonials_history
Mais recentes primeiro. A versão 1 é o depoimento como foi recebido e não tem autor. Cada versão posterior traz o membro que a fez, quando, a nota que deixou e, no caso de uma restauração, a versão que foi recolocada. Paginado com page e per_page.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/:id/history.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/testimonials.json
Liste os depoimentos de um site, filtrados e ordenados
testimonials_list
Três formas de dizer quais, e elas se somam: as entradas de facetas (status, tag_id, has_video e as demais), q (a caixa de busca com os seus operadores, por exemplo rating:5 has:video tag:onboarding "saved us") e conditions com match (linhas estruturadas). Envie facets como true para a contagem ao vivo por trás de cada valor de faceta em meta.facets. Nada na lixeira é listado, a menos que trashed seja true, o que lista apenas a lixeira.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/testimonials/:id/pend.json
Volte um depoimento para pendente
testimonials_pend
Leva um depoimento aprovado ou rejeitado de volta para pendente, de modo que não seja exibido em lugar nenhum até ser decidido de novo. A resposta traz meta.undo_id. Um depoimento na lixeira é recusado com o código in_trash.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/:id/pend.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials/:id/pin.json
Fixe um depoimento para que seja exibido primeiro, ou desafixe
testimonials_pin
Um depoimento fixado é exibido primeiro onde quer que apareça. Envie pinned false para desafixar. A resposta traz meta.undo_id quando algo mudou.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/:id/pin.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials/:id/reject.json
Rejeite um depoimento. Ele é guardado e não é exibido em lugar nenhum
testimonials_reject
O depoimento mantém tudo o que tem e não é exibido em lugar nenhum. Rejeitar um que já está rejeitado não altera nada. A resposta traz meta.undo_id, que testimonials_bulk_undo aceita por 7 dias. Um depoimento na lixeira é recusado com o código in_trash.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/:id/reject.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials/:id/restore.json
Restaure um depoimento da lixeira, exatamente como estava
testimonials_restore
Devolve um depoimento da lixeira ao seu estado, tags, coleções e aos lugares que o exibiam. Nunca conta como um novo depoimento. Um que não está na lixeira é recusado com o código not_in_trash.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/:id/restore.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials/:id/restore_version.json
Recoloque as palavras, o título, a nota e o destaque de uma versão anterior
testimonials_restore_version
Nada é removido do histórico. A restauração é uma nova versão que diz de qual veio. version 1 devolve o depoimento às palavras como recebidas. Um número de versão desconhecido é um 422.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/:id/restore_version.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/:id.json
Obtenha um depoimento com a sua pessoa, arquivos, registro de consentimento, tags e onde é usado
testimonials_get
Retorna um depoimento do site pelo seu id (tm_...), na lixeira ou não. person.email é null, a menos que quem chama tenha content.write, e has_email diz se há um registrado. media lista os arquivos com o estado de processamento. used_in lista todos os widgets, murais e imagens que o exibem.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/testimonials/showable.json
Liste os depoimentos que o público pode ver, como o público pode vê-los
testimonials_showable
Os depoimentos aprovados mais recentes de um site que podem ser exibidos em público, para uma exibição sua fora dos widgets e murais. Cada um traz apenas o que o seu registro de consentimento permite: uma pessoa cujo nome não pode ser exibido aparece como A customer, e uma foto ou gravação fica de fora, a menos que tenha sido permitida. Um depoimento pendente, rejeitado ou na lixeira, ou um que aguarda a franquia, nunca é listado. Não há e-mail na resposta.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/showable.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/testimonials/triage.json
Obtenha o próximo depoimento de uma fila de triagem
testimonials_triage
Sem filtro, a fila é Pendentes, sem aguardar a franquia, do mais antigo recebido para o mais novo. Com os filtros da caixa de entrada, é esse resultado na sua ordenação. Envie after com o id que acabou de ser tratado para obter o seguinte. data é null quando a fila termina. meta traz remaining e total.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/triage.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/testimonials/:id.json
Edite um depoimento. As mudanças nas palavras, no título, na nota e no destaque ficam no seu histórico
testimonials_update
Só as entradas enviadas são alteradas. Uma mudança em body, title, rating ou highlight adiciona uma versão ao histórico com edit_note e nunca altera a marca de verificado. rating null a limpa. highlight deve ser um trecho exato das palavras, e um vazio o limpa. properties altera apenas as chaves enviadas. add_tags e remove_tags aceitam nomes ou ids. Estado, fixar e lixeira têm ferramentas próprias. Um depoimento na lixeira não pode ser editado.
Permissão: content.write
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Desempenho
GET
/sites/:site_id/performance.json
Web Vitals: painel de p75, tendência diária e detalhamentos por página, dispositivo, navegador e país
performance_report
Relatório de Web Vitals de visitantes reais. Retorna period, metric, sample_rate, scorecard, trend e breakdowns. scorecard tem uma linha para cada um de LCP, INP, CLS, FCP e TTFB com p75 (o 75º percentil, em milissegundos, exceto CLS, que é uma pontuação sem unidade), samples, rating (good, needs_improvement ou poor, null sem dados), good, needs_improvement e poor (porcentagem das amostras), previous_p75, change (porcentagem em relação ao período anterior, null quando desconhecida) e thresholds [limite de good, limite de poor]. trend é o p75 diário da métrica escolhida como {date, p75, samples}. breakdowns tem page, device, browser e country, cada um com até limit linhas (padrão 10, máximo 100) da métrica escolhida como {value, p75, samples, rating, slow_share, poor}, as piores e mais movimentadas primeiro. Escolha metric com exatamente um entre LCP, INP, CLS, FCP ou TTFB em maiúsculas (padrão LCP). sample_rate é a fração das visitas que relatam vitals, então as contagens são amostras e não todas as visitas. Aceita as entradas compartilhadas period, compare, filters e segment. Para os vitals de uma página, use pages_detail.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/performance.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
Destinatários dos pedidos de depoimento
POST
/sites/:site_id/testimonials/requests/:request_id/recipients.json
Adicione pessoas a um pedido
testimonial_request_recipients_create
Até 500 em uma chamada. Adicionadas a um rascunho, esperam por testimonial_requests_send. Adicionadas a um pedido em andamento, recebem o primeiro e-mail de imediato. A resposta diz quantas foram colocadas na fila e quantas foram ignoradas, por motivo. Adicionar a um pedido em andamento envia e-mails a pessoas de fora do workspace, então o membro é avisado por e-mail.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/requests/:request_id/recipients.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/testimonials/requests/:request_id/recipients.json
Remova pessoas escolhidas de um pedido
testimonial_request_recipients_delete
Só pessoas para quem nada foi enviado (queued ou skipped). Aceita até 100 endereços no corpo. Via MCP, a ferramenta não altera nada e responde com a página do app em que uma pessoa faz isso.
Permissão: content.write
· Somente HTTP (não é uma ferramenta MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/requests/:request_id/recipients.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials/requests/:request_id/recipients/import.json
Adicione pessoas a um pedido a partir de um arquivo CSV
testimonial_request_recipients_import
Duas chamadas. Envie o arquivo (ou o seu texto como csv) para obter as colunas, as suas primeiras linhas e um upload_token. Depois envie a associação do número da coluna para o campo. Até 5 MB e 10.000 linhas. Adicionar a um pedido em andamento envia e-mails a pessoas de fora do workspace, então o membro é avisado por e-mail.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/requests/:request_id/recipients/import.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/requests/:request_id/recipients.json
Liste as pessoas de um pedido
testimonial_request_recipients_list
Filtre pela situação atual de uma pessoa: status opened é "abriu e não clicou nem respondeu". O endereço de e-mail é null, a menos que quem chama possa editar conteúdo.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/requests/:request_id/recipients.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/testimonials/requests/:request_id/recipients/resume.json
Retome pessoas escolhidas de um pedido
testimonial_request_recipients_resume
Elas continuam de onde pararam. Aceita até 100 endereços no corpo. Isto envia e-mails a pessoas de fora do workspace, então o membro é avisado por e-mail.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/requests/:request_id/recipients/resume.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials/requests/:request_id/recipients/stop.json
Pare pessoas escolhidas de um pedido
testimonial_request_recipients_stop
Elas não recebem mais nenhum e-mail. Cada uma mantém o seu status e ganha "stopped". Aceita até 100 endereços no corpo.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/requests/:request_id/recipients/stop.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Detecção de bots
GET
/sites/:site_id/bot-detection.json
Relatório de Detecção Avançada de Bots: acessos às páginas honeypot do site, por página e pelo que denunciou o bot
bot_detection_report
Relata os acessos às páginas honeypot do site. Uma página honeypot é uma página alcançada apenas por um link oculto e configurada como a página de Detecção Avançada de Bots, como mostra o app. Esses acessos são de bots, então nunca são visualizações de página nem visitas e não aparecem em stats_overview nem em stats_breakdown. Escolha o intervalo com period (7d, 30d (padrão), 90d ou 12mo). Os acessos são mantidos por 12 meses. O resultado tem period, from (o início do intervalo), has_data (false até o primeiro acesso), totals (hits, páginas distintas, automated (acessos em que o rastreador viu um navegador automatizado) e no_interaction (acessos sem entrada de ponteiro, teclado ou toque)), pages (até 50 linhas com path, hits e last_hit_at), reasons (acessos por resultado do filtro de bots padrão: known_bot, automation, datacenter, empty_user_agent, referrer_spam, ou undetected para um acesso que o filtro teria contado como uma pessoa) e recent (os últimos 50 acessos com occurred_at, path, country, browser, device, bot_reason, automation e interacted). Nenhum endereço IP nem User-Agent é guardado com um acesso, apenas hashes com chave deles que não identificam ninguém, e esses nunca são retornados. Exige analytics.read e o plano Business ou Enterprise (caso contrário, 402 plan_limit).
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/bot-detection.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
Disponibilidade
POST
/sites/:site_id/uptime.json
Adicionar uma verificação de disponibilidade para um site
uptime_checks_create
Adiciona uma verificação de disponibilidade ligada a um site. Use workspace_uptime_checks_create para uma verificação que não pertence a nenhum site. kind decide o alvo. http verifica o código de status de url, keyword verifica se o corpo da resposta de url contém keyword, tcp conecta a host e port, e dns verifica se host é resolvido. Os campos de outros tipos são ignorados. url assume por padrão a página inicial do site nas verificações http. expected_status (de 100 a 599, padrão 200), http_method (GET ou HEAD) e timeout_seconds (de 1 a 30, padrão 20) valem para as verificações http e keyword. interval_seconds é o tempo entre as sondagens, deve ser no mínimo o mínimo do plano (Free 300, Pro 60, Business 30) e assume por padrão 300 ou o mínimo se este for maior. public true permite que a verificação apareça em uma página de status. Endereços privados e internos são recusados, e o plano limita o número de verificações por espaço de trabalho (Free 3, Pro 20, Business 100). A primeira sondagem roda em instantes, e o status começa como pending. Exige a permissão uptime.manage. Retorna a verificação com id (upc_...).
Permissão: uptime.manage
curl -X POST https://privatusanalytics.com/sites/:site_id/uptime.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/uptime/checks/:id.json
Excluir uma verificação de disponibilidade e seu histórico
uptime_checks_delete
Exclui permanentemente uma verificação de disponibilidade com seus resultados e histórico de incidentes, e a remove de qualquer página de status que a exiba. Isso não pode ser desfeito. Use uptime_checks_pause para parar de sondar mas manter o histórico. O id vem de uptime_checks_list. Exige a permissão uptime.manage. Retorna a verificação excluída.
Permissão: uptime.manage
curl -X DELETE https://privatusanalytics.com/uptime/checks/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/uptime.json
Listar as verificações de disponibilidade de um site
uptime_checks_list
Lista as verificações de disponibilidade de um site, incluindo as verificações de todo o espaço de trabalho que sondam o domínio do site ou um subdomínio dele. Ordenadas por nome. Use workspace_uptime_checks_list para todas as verificações do espaço de trabalho. Filtre com status (up, down, pending ou paused) ou query (parte do nome, da url ou do host). Paginada com page e per_page (até 100). Cada verificação tem id (upc_...), workspace_id, site_id (null para verificações de todo o espaço de trabalho), name, kind, url, host, port, keyword, expected_status, http_method, interval_seconds, timeout_seconds, status (up, down, pending ou paused), enabled, public, last_checked_at, next_check_at, last_response_ms (milissegundos), ssl_expires_at, ssl_issuer, domain_expires_at e created_at. Use uptime_checks_get para porcentagens de disponibilidade e incidentes.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/uptime.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/uptime/checks/:id/pause.json
Pausar uma verificação de disponibilidade
uptime_checks_pause
Pausa uma verificação de disponibilidade para que ela deixe de ser sondada. Qualquer incidente aberto é encerrado na hora e nenhum alerta de queda ou de retorno é enviado enquanto ela estiver pausada. O histórico é mantido e seu status aparece como paused. Retome-a com uptime_checks_resume. O id vem de uptime_checks_list. Exige a permissão uptime.manage. Retorna a verificação.
Permissão: uptime.manage
curl -X POST https://privatusanalytics.com/uptime/checks/:id/pause.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/uptime/checks/:id/resume.json
Retomar uma verificação de disponibilidade pausada
uptime_checks_resume
Retoma uma verificação de disponibilidade pausada. Ela é sondada no próximo ciclo do agendador e seu status é pending até o primeiro resultado chegar. O id vem de uptime_checks_list. Exige a permissão uptime.manage. Retorna a verificação.
Permissão: uptime.manage
curl -X POST https://privatusanalytics.com/uptime/checks/:id/resume.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/uptime/checks/:id.json
Obter uma verificação de disponibilidade: disponibilidade de 24h/7d/30d, tempos de resposta e incidentes
uptime_checks_get
Retorna uma verificação de disponibilidade com seu histórico, não apenas suas configurações. Escolha range (24h padrão, 7d ou 30d) para o gráfico de tempo de resposta. A resposta tem check (configurações e estado ao vivo, veja uptime_checks_list), uptime (porcentagem para 24h, 7d e 30d, null até a primeira sondagem rodar), range, response_times (unit hour ou day, labels como horários ISO 8601 e series do tempo médio de resposta em milissegundos por local, com null para lacunas) e incidents (os 50 mais recentes com started_at, resolved_at null enquanto ainda aberto, duration_seconds, cause e failed_locations). Apenas as sondagens bem-sucedidas contam para os tempos de resposta. O id vem de uptime_checks_list.
Permissão: analytics.read
curl https://privatusanalytics.com/uptime/checks/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/uptime/checks/:id.json
Alterar uma verificação de disponibilidade
uptime_checks_update
Altera uma verificação de disponibilidade. Apenas as entradas enviadas mudam. As regras e os limites são os mesmos de uptime_checks_create (o intervalo deve ser no mínimo o mínimo do plano, endereços privados são recusados). Alterar kind limpa os campos de alvo que deixam de se aplicar. Alterar interval_seconds agenda a próxima sondagem imediatamente. O id vem de uptime_checks_list. Exige a permissão uptime.manage. Retorna a verificação atualizada.
Permissão: uptime.manage
curl -X PATCH https://privatusanalytics.com/uptime/checks/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/uptime/probes.json
Datacenter das sondas, User-Agent e intervalos de IP de saída (para liberar nossas sondas de disponibilidade)
uptime_probes_list
Permissão: public
· Somente HTTP (não é uma ferramenta MCP)
curl https://privatusanalytics.com/uptime/probes.json
POST
/uptime/probes/results.json
Enviar resultados de um agente de sonda externo (Bearer token de sonda de disponibilidade)
uptime_probes_results
Permissão: public
· Somente HTTP (não é uma ferramenta MCP)
curl -X POST https://privatusanalytics.com/uptime/probes/results.json \
-H "Content-Type: application/json" -d '{…}'
POST
/workspaces/:workspace_id/uptime.json
Adicionar uma verificação de disponibilidade do espaço de trabalho (sem vínculo com um site)
workspace_uptime_checks_create
Adiciona uma verificação de disponibilidade que pertence a todo o espaço de trabalho em vez de a um site. Use uptime_checks_create para ligar uma verificação a um site. As entradas, os limites do plano e as regras são os mesmos, veja uptime_checks_create. kind é http, keyword, tcp ou dns e decide quais entre url, keyword, host e port se aplicam. Como não há site, uma verificação http precisa de uma url explícita. Quem tem acesso limitado a alguns sites não pode criar verificações de todo o espaço de trabalho. Exige o workspace_id de workspaces_list e a permissão uptime.manage. Retorna a verificação com id (upc_...) e site_id null.
Permissão: uptime.manage
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/uptime.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/workspaces/:workspace_id/uptime.json
Listar todas as verificações de disponibilidade de um espaço de trabalho
workspace_uptime_checks_list
Lista todas as verificações de disponibilidade de um espaço de trabalho, incluindo as ligadas a nenhum site, ordenadas por nome. Quem tem acesso limitado a alguns sites só vê as verificações desses sites. Use uptime_checks_list para as verificações de um site. Filtre com status (up, down, pending ou paused) ou query (parte do nome, da url ou do host). Paginada com page e per_page (até 100). Cada item tem os campos descritos em uptime_checks_list. Exige o workspace_id de workspaces_list.
Permissão: analytics.read
curl https://privatusanalytics.com/workspaces/:workspace_id/uptime.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
Documentação
GET
/docs/api.json
Listar todas as operações da API e ferramentas MCP
docs_api
Retorna o catálogo completo de todas as operações da API, que também são todas as ferramentas MCP. Use-a para descobrir qual ferramenta ou endpoint existe e exatamente o que ele recebe. Cada item tem tool_name, summary, description (pode ser nulo), group, verb (método HTTP), path (modelo com marcadores), permission (a permissão de que um membro ou token precisa, nulo para ferramentas públicas), input_schema (JSON Schema das entradas) e response_schema (JSON Schema da resposta). A resposta é grande. Para uma ferramenta que você já conhece, prefira as páginas da documentação (docs_search). docs_openapi retorna as mesmas informações como um documento OpenAPI. Pública, sem necessidade de autenticação.
Permissão: public
· Somente HTTP (não é uma ferramenta MCP)
curl https://privatusanalytics.com/docs/api.json
GET
/docs.json
Listar páginas da documentação
docs_list
Lista todas as páginas da documentação com title, description, path (como /docs/api/authentication), section e sem corpo. Use-a para navegar pelo que existe. Para encontrar uma página por tema use docs_search, e para ler uma use docs_get com sua section e page. Paginada com page e per_page (máximo 100). Pública, sem necessidade de autenticação.
Permissão: public
curl https://privatusanalytics.com/docs.json
GET
/openapi.json
Documento OpenAPI 3.1 de toda a API
docs_openapi
Retorna o documento OpenAPI 3 que descreve toda a API pública como JSON bruto (não envolvido em um campo data). Use-a quando precisar de uma especificação legível por máquina para geração de código. Para uma lista navegável de operações com seus esquemas de entrada e resposta, docs_api é mais fácil de ler. Ela descreve as mesmas operações expostas como ferramentas MCP. Pública, sem necessidade de autenticação.
Permissão: public
· Somente HTTP (não é uma ferramenta MCP)
curl https://privatusanalytics.com/openapi.json
GET
/docs/search.json
Pesquisar na documentação
docs_search
Pesquisa a documentação no servidor e retorna páginas classificadas. Use-a para descobrir como um recurso funciona antes de supor. q é dividida em até 10 termos, todos devem aparecer na página, e as correspondências em título e em cabeçalhos têm a maior classificação. Um q vazio retorna todas as páginas na ordem do catálogo. limit assume por padrão 20 quando q é informado e é no máximo 100. Cada resultado tem title, path (use as partes section e page com docs_get), section, headings (lista de id e text, útil como âncora do cabeçalho), excerpt e score (null quando q está vazio). Pesquisa no idioma da requisição, inglês por padrão. Pública, sem necessidade de autenticação.
Permissão: public
curl https://privatusanalytics.com/docs/search.json
GET
/docs/:section/:page.json
Ler uma página da documentação (Markdown e HTML)
docs_get
section e page vêm do caminho da página /docs/<section>/<page>. Use a página "index" para a visão geral de uma seção.
Permissão: public
curl https://privatusanalytics.com/docs/:section/:page.json
Domain Rating
GET
/sites/:site_id/domain-rating.json
Relatório de Domain Rating: a nota mais recente, os links de entrada e de saída, a variação desde a publicação anterior e o histórico por mês
domain_rating_report
Retorna o Domain Rating do site, uma estimativa de 0 a 100 de quão fortes são os links que apontam para o seu domínio, além das contagens de links de entrada e de saída e seu histórico. Esta é a pontuação própria do Privatus Analytics, não uma métrica do Google. As classificações são atualizadas uma vez por mês a cada release, então as mudanças aparecem mensalmente. months (de 1 a 120, padrão 12) define quantos pontos mensais de histórico incluir. O resultado tem domain, checked_at (quando o site foi verificado pela última vez, null se nunca), release (o mês dos dados mais recentes como YYYY-MM), rating, inbound_links, outbound_links (cada um null se ainda não for conhecido), changes (as mesmas três métricas como a diferença em relação ao release anterior, null quando uma delas é desconhecida) e history (uma linha por mês com month, rating, inbound_links, outbound_links, do mais antigo para o mais recente). Um site novo pode ficar sem classificação por alguns minutos. Exige analytics.read.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/domain-rating.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
Duplicatas de depoimentos
POST
/sites/:site_id/testimonials/duplicates/dismiss.json
Diga que um grupo não é de duplicatas. Ele nunca volta à fila
testimonial_duplicates_dismiss
testimonial_ids deve ser todas as cópias de um grupo aberto da fila de duplicatas que está fora da lixeira, como testimonial_duplicates_list as devolve. Nada é unido nem alterado nos depoimentos, e eles nunca mais são agrupados. Para dividir um grupo de três, una primeiro os dois que são iguais. O servidor responde com 422 quando os ids não são exatamente um grupo aberto.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/duplicates/dismiss.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/duplicates.json
Liste os grupos de depoimentos que provavelmente são o mesmo duas vezes
testimonial_duplicates_list
As correspondências exatas vêm primeiro. Cada grupo traz as suas cópias por inteiro e keeper_id, a cópia que seria mantida. meta.exact_groups é quantos grupos testimonial_duplicates_merge_exact uniria.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/duplicates.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/testimonials/:id/merge.json
Una cópias de um depoimento ao que está no caminho
testimonials_merge
O mantido conserva o seu status e o estado de verificado, e as suas palavras, a menos que body_from indique outra cópia. Ele ganha as tags, coleções manuais, posicionamentos e propriedades personalizadas que lhe faltam. As cópias vão para a lixeira marcadas como unidas, e restaurar uma desfaz a união para aquela cópia. Uma cópia que chegou neste mês deixa de contar como um novo depoimento. A resposta traz meta.undo_id.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/:id/merge.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials/duplicates/merge_exact.json
Una de uma só vez todas as correspondências exatas da fila
testimonial_duplicates_merge_exact
Envie dry_run primeiro para as contagens, depois confirm_count com o total que ele deu. Até 100 grupos são unidos por chamada. A resposta traz meta.undo_id, e um desfazer reverte a execução inteira.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/duplicates/merge_exact.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Empresas dos depoimentos
GET
/sites/:site_id/testimonials/companies.json
Liste as empresas de um site com as suas pessoas, depoimentos e nota média
testimonial_companies_list
Uma linha por empresa, agrupada pelo nome e site da empresa das pessoas do site. Uma pessoa sem empresa não está em nenhuma. query corresponde a parte do nome de uma empresa ou do host do seu site. sort é name (o padrão), people_desc, testimonials_desc ou received_desc.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/companies.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/testimonials/companies/:id/merge.json
Una uma empresa a outra, para duas grafias de uma mesma empresa
testimonial_companies_merge
Cada pessoa da empresa do caminho passa a ter o nome e a URL da empresa indicada por into.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/companies/:id/merge.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/companies/:id.json
Obtenha uma empresa com as suas pessoas
testimonial_companies_get
O id é a chave da empresa, um host de site ou um nome normalizado, como testimonial_companies_list o devolve. Os depoimentos dela são testimonials_list com company.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/companies/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/testimonials/companies/:id.json
Corrija o nome e a URL de uma empresa para todas as suas pessoas de uma só vez
testimonial_companies_update
O id de uma empresa vem da sua URL ou nome, então a resposta pode trazer um novo id.
Permissão: content.write
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/companies/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Espaços de trabalho
GET
/workspaces/:workspace_id/white_label.json
Obter a marca white label
white_label_get
Retorna a marca white label do espaço de trabalho. Os campos são workspace_id (ws_...), brand_name, brand_logo_url e brand_color (uma cor hexadecimal como #06755b), cada um null quando não definido, hide_branding, available (true quando o plano inclui white label, que é o Business e acima) e active (true quando a marca está definida e em vigor). A marca substitui o Privatus Analytics em painéis compartilhados, incorporações, páginas de status e relatórios por e-mail. Exige workspace.manage.
Permissão: workspace.manage
curl https://privatusanalytics.com/workspaces/:workspace_id/white_label.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/workspaces/:workspace_id/white_label.json
Definir a marca white label para painéis compartilhados e relatórios por e-mail (Business)
white_label_update
Define a marca white label do espaço de trabalho. Somente no plano Business, caso contrário falha com um erro de plano. Apenas as entradas enviadas mudam, e uma string vazia limpa brand_name, brand_logo_url ou brand_color. brand_logo_url deve ser uma URL https de uma imagem e brand_color uma cor hexadecimal como #06755b. hide_branding true remove o link do Privatus Analytics dos painéis compartilhados, incorporações e páginas de status e o logotipo dos relatórios por e-mail. A mudança se aplica imediatamente aos links de compartilhamento existentes. Exige workspace.manage. Retorna a marca (veja white_label_get).
Permissão: workspace.manage
curl -X PATCH https://privatusanalytics.com/workspaces/:workspace_id/white_label.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/workspaces/:workspace_id/security.json
Obter as configurações de segurança do espaço de trabalho
workspace_security_get
Retorna a política de segurança do espaço de trabalho. Os campos são workspace_id (ws_...), enforce_2fa (os membros devem usar autenticação em duas etapas), login_methods (os permitidos entre password, magic_link, passkey, google, github e sso), session_ttl_hours (desconexão após essa quantidade de horas, null para sem limite), app_ip_allowlist (IPs ou faixas CIDR autorizados a usar o app e a API, vazio significa de qualquer lugar) e support_access_until (horário ISO 8601 até o qual o suporte do Privatus Analytics pode ver o espaço de trabalho, null quando nenhum acesso foi concedido). Exige workspace.manage.
Permissão: workspace.manage
curl https://privatusanalytics.com/workspaces/:workspace_id/security.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/workspaces/:workspace_id/security.json
Atualizar as configurações de segurança do espaço de trabalho (2FA, métodos de login, duração da sessão, lista de IPs permitidos, acesso do suporte)
workspace_security_update
Altera a política de segurança do espaço de trabalho, apenas as entradas enviadas. enforce_2fa true exige que todos os membros usem autenticação em duas etapas e requer o plano Business. login_methods substitui a lista de permitidos por valores de password, magic_link, passkey, google, github e sso, e remover um método desconecta os logins lembrados dos membros, que precisam entrar de novo. session_ttl_hours desconecta os membros após essa quantidade de horas (0 remove o limite). app_ip_allowlist substitui a lista de IPs ou faixas CIDR autorizados a acessar o app e a API (plano Business, uma lista vazia significa de qualquer lugar) e é recusada se excluísse o IP de quem chama, então você não consegue se trancar para fora. support_access true permite que o suporte do Privatus Analytics veja o espaço de trabalho por 7 dias e false retira esse acesso. Exige workspace.manage. Retorna a política (veja workspace_security_get).
Permissão: workspace.manage
· Somente HTTP (não é uma ferramenta MCP)
curl -X PATCH https://privatusanalytics.com/workspaces/:workspace_id/security.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/workspaces.json
Criar um espaço de trabalho (você se torna o proprietário)
workspaces_create
Permissão: member
· Somente HTTP (não é uma ferramenta MCP)
curl -X POST https://privatusanalytics.com/workspaces.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/workspaces/:id.json
Excluir um espaço de trabalho e todos os seus sites (somente o proprietário, cancela qualquer assinatura)
workspaces_delete
Exclui um espaço de trabalho junto com todos os seus sites. É uma exclusão lógica: tudo desaparece na hora e é eliminado de forma permanente após 7 dias, então trate-a como irreversível. Apenas o proprietário pode fazê-la, e confirm deve ser o nome exato do espaço de trabalho (diferencia maiúsculas e minúsculas). Uma assinatura paga ativa é cancelada imediatamente antes, e se esse cancelamento falhar nada é excluído. As transferências de site pendentes do espaço de trabalho são canceladas. Os membros perdem o acesso. Use workspaces_get para ler o nome. Exige workspace.manage e a função owner. Retorna o espaço de trabalho.
Permissão: workspace.manage
· Somente HTTP (não é uma ferramenta MCP)
curl -X DELETE https://privatusanalytics.com/workspaces/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/workspaces.json
Listar seus espaços de trabalho
workspaces_list
Lista os espaços de trabalho a que quem chama pertence, ordenados por nome. Um token de API ou uma conexão MCP vê apenas o único espaço de trabalho para o qual foi emitido. Cada item tem id (ws_..., usado como workspace_id pela maioria das ferramentas), name, timezone, currency, plan, plan_events, subscription_status e role (a função de quem chama). Chame em seguida sites_list com um id de espaço de trabalho para encontrar os ids de site. Criar um espaço de trabalho só é possível no app.
Permissão: member
curl https://privatusanalytics.com/workspaces.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/workspaces/:id.json
Obter um espaço de trabalho
workspaces_get
Retorna um espaço de trabalho pelo seu id público (ws_..., de workspaces_list). Os campos são id, name, timezone (nome IANA), currency (ISO 4217), plan (free, pro, business ou enterprise), plan_events (a cota mensal de eventos do plano), subscription_status (none, trialing, active, past_due, paused ou canceled), role (a função de quem chama nele) e created_at. Use billing_get para os detalhes completos de cobrança e billing_usage para o uso deste mês. Qualquer membro pode lê-lo.
Permissão: member
curl https://privatusanalytics.com/workspaces/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/workspaces/:id.json
Atualizar as configurações do espaço de trabalho
workspaces_update
Altera o nome, o fuso horário padrão ou a moeda padrão de um espaço de trabalho, apenas as entradas enviadas. timezone é um nome IANA como Europe/Berlin e currency é um código ISO 4217 de 3 letras. Esses são padrões para novos sites e não alteram os sites existentes (use sites_update para eles). Exige workspace.manage. Retorna o espaço de trabalho (veja workspaces_get).
Permissão: workspace.manage
curl -X PATCH https://privatusanalytics.com/workspaces/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Eventos
GET
/sites/:site_id/events/properties.json
Listar chaves de propriedades de eventos vistas nos últimos 30 dias
event_properties_list
Lista as chaves de propriedade que os eventos personalizados carregaram nos últimos 30 dias, com as configurações de exibição. Retorna uma lista de {key, events, display_name, hidden, export_safe}. events é quantos eventos personalizados carregaram a chave (0 para uma chave que tem configurações mas não foi vista recentemente), display_name é o novo nome (null quando não há), hidden indica que a chave está oculta nos relatórios e export_safe indica que ela está marcada como sem dados pessoais. No máximo 200 chaves são retornadas, das mais usadas para as menos. Passe event para ver apenas as chaves vistas em um nome de evento bruto. Os valores das propriedades nunca são retornados aqui: use stats_breakdown com dimension prop:<key> ou events_get para os valores. Altere as configurações com event_properties_update.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/events/properties.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/events/properties.json
Renomear ou ocultar uma chave de propriedade de evento
event_properties_update
Renomeia, oculta ou marca como segura para exportação uma chave de propriedade de evento, para o site inteiro. Apenas as entradas enviadas mudam. key deve ser a chave como armazenada (letras minúsculas, dígitos e sublinhados, até 64 caracteres, por exemplo plan). display_name é um rótulo de até 64 caracteres (envie-o vazio para remover o novo nome). hidden remove a chave dos relatórios e do pivô de detalhes do evento, enquanto os dados são mantidos. export_safe declara que a chave nunca guarda dados pessoais, o que inclui seus valores nas exportações brutas e nas sincronizações com o data warehouse, então defina-o apenas quando isso for verdade. Renomear e ocultar se aplicam quando os relatórios são lidos e não reescrevem nenhum dado armazenado. Retorna {key, display_name, hidden, export_safe}. Exige a permissão sites.manage. Liste as chaves com event_properties_list.
Permissão: sites.manage
curl -X PATCH https://privatusanalytics.com/sites/:site_id/events/properties.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/events.json
Excluir um evento e seu histórico (roda em segundo plano, confirme digitando o nome)
events_delete
Exclui permanentemente um evento personalizado e todo o seu histórico. Isso não pode ser desfeito. O nome bruto do evento deve ser enviado duas vezes, em name e novamente em confirm, como verificação de segurança. Retorna {name, status: queued} com HTTP 202 porque as linhas são removidas em segundo plano, em lotes, então os números continuam mudando até terminar. O evento também fica oculto na hora, e a exclusão é registrada no log de auditoria. As visualizações de página não são afetadas. Se você só quer parar de exibir um evento, use events_update com hidden true, que mantém os dados. Exige a permissão sites.manage. Os nomes vêm de events_list (use o campo raw_names se o evento foi renomeado ou mesclado).
Permissão: sites.manage
· Somente HTTP (não é uma ferramenta MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/events.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/events.json
Listar eventos com conclusões, visitas, taxa de conversão e primeira/última ocorrência
events_list
O explorador de eventos: todos os eventos personalizados do período. Retorna period, events e hidden. Cada evento tem name (o nome de exibição após renomeações e mesclagens), raw_names (os nomes que o rastreador enviou), completions, visits, conversion_rate (porcentagem das visitas, de 0 a 100), revenue (unidades menores, centavos), first_seen e last_seen (carimbos de data e hora ISO 8601 dentro do período) e currency (a moeda da receita, null quando não definida). hidden lista os eventos que você ocultou como {name, display_name}. Use search para manter os eventos cujo nome contém algum texto. As visualizações de página não são eventos aqui. Use events_get para um evento em profundidade e stats_breakdown com dimension event para uma lista classificada e paginada. Aceita as entradas compartilhadas period, compare, filters e segment.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/events.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/events/merge.json
Mesclar vários eventos em um único nome de exibição
events_merge
Mescla vários nomes de eventos brutos em um único nome de exibição, por exemplo signup_click e signup_button em Signup. Os relatórios passam a mostrar um único evento com as contagens combinadas. Funciona quando os relatórios são lidos, e os eventos armazenados não são alterados nem excluídos. Passe names (os nomes brutos, pelo menos um) e into (o nome de exibição). Retorna um objeto de configurações por nome mesclado, cada um {name, display_name, hidden, currency, updated_at}. Para desfazer, chame events_update para um nome com display_name vazio. Exige a permissão sites.manage. Os nomes vêm de events_list (raw_names).
Permissão: sites.manage
curl -X POST https://privatusanalytics.com/sites/:site_id/events/merge.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/events/detail.json
Um evento: gráfico, tabela dinâmica de propriedades, agregados de propriedades numéricas, páginas e origens
events_get
Detalhe de um evento personalizado. Passe name exatamente como mostrado em events_list (o nome de exibição após renomeações e mesclagens). Retorna period, name, raw_names (os nomes armazenados por trás dele), interval, totals, setting, series, property_keys, pivot, numeric, pages, channels e referrers. totals tem completions, visits (visitas que o dispararam), revenue (unidades menores, centavos) e conversion_rate (porcentagem de todas as visitas no período). series são as conclusões por intervalo de tempo. setting tem display_name, hidden e currency. property_keys lista as chaves de propriedade vistas. Envie properties (até 3 chaves) para obter pivot, linhas de {values, completions, visits} para cada combinação de valores, as 100 principais. numeric dá a soma, a média e outros números para propriedades que guardam números. pages, channels e referrers são os 10 principais lugares em que o evento foi disparado, como {value, completions, visits}. Use events_list para todos os eventos, stats_breakdown com dimension prop:<key> para uma propriedade em todo o site e events_update para renomeá-lo.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/events/detail.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/events/settings.json
Renomear, ocultar ou reexibir um evento, ou definir sua moeda
events_update
Altera como um evento personalizado é exibido: renomeie-o com display_name, oculte-o ou reexiba-o com hidden, ou defina a moeda da receita. name é o nome bruto do evento como o rastreador o enviou (veja raw_names em events_list). Apenas as entradas enviadas mudam. Um display_name vazio remove o novo nome. hidden remove o evento das listas e dos relatórios, enquanto seus dados são mantidos. currency é um código ISO 4217 de três letras, como USD, armazenado em maiúsculas. Funciona quando os relatórios são lidos e nenhum evento armazenado é reescrito. Retorna {name, display_name, hidden, currency, updated_at}. Para combinar vários eventos, use events_merge, e para apagar dados, use events_delete. Exige a permissão sites.manage.
Permissão: sites.manage
curl -X PATCH https://privatusanalytics.com/sites/:site_id/events/settings.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Execuções de importação de depoimentos
GET
/sites/:site_id/testimonials/imports/sources/:import_source_id/runs.json
Liste as execuções de uma fonte, das mais recentes às mais antigas
testimonial_import_runs_list
Cada execução tem o seu número, o que a iniciou, o seu status, as páginas lidas e quantos depoimentos encontrou, quantos eram novos, duplicados, com falha e mantidos, com os horários de início e fim.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/imports/sources/:import_source_id/runs.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
Experimentos
POST
/sites/:site_id/experiments.json
Criar um experimento como rascunho
experiments_create
Cria um teste A/B ou de URL dividida para um site. Ele é salvo como rascunho e não envia nenhum visitante a lugar algum até uma pessoa iniciá-lo no app. São obrigatórios name, path (a página original, como /pricing), goal_id (de goals_list) e variants: uma lista de { name, path, weight } em que a primeira linha é a página original (o path dela é ignorado) e cada outra linha é uma página do mesmo site. Omita todos os weight para uma divisão igual, ou envie pesos que somem 100. O plano Free permite um experimento por vez, com a original e uma variante. Pro e superiores acrescentam mais variantes, alocação automática, segmentação, um * no caminho, metas secundárias, início agendado e grupos exclusivos. Exige content.write. Retorna o experimento.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/experiments.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/experiments/:id.json
Excluir um experimento com seus resultados
experiments_delete
Exclui permanentemente um experimento com suas variantes e resultados. Isso não pode ser desfeito. Use experiments_pause para pará-lo e manter os resultados. A ferramenta MCP não o executa e responde com human_only e a página onde uma pessoa o exclui. Exige content.write.
Permissão: content.write
· Somente HTTP (não é uma ferramenta MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/experiments/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/experiments/:id/duplicate.json
Copiar um experimento como novo rascunho
experiments_duplicate
Cria um rascunho com as mesmas páginas, participações, meta e regras de um experimento existente e sem nenhum dos resultados dele. Use para alterar um teste que já começou. Conta para o limite do plano como um experimento novo. Exige content.write. Retorna o novo experimento.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/experiments/:id/duplicate.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/experiments/:id/end.json
Encerrar um experimento definitivamente
experiments_end
Encerra um experimento em execução ou pausado. Ele não pode ser iniciado de novo, seus resultados são mantidos e ele deixa de contar para o limite do plano. A ferramenta MCP não o executa e responde com human_only e a página onde uma pessoa o encerra. A API o executa. Exige content.write.
Permissão: content.write
· Somente HTTP (não é uma ferramenta MCP)
curl -X POST https://privatusanalytics.com/sites/:site_id/experiments/:id/end.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/experiments.json
Listar os experimentos de um site
experiments_list
Lista os testes A/B e de URL dividida de um site, do mais recente ao mais antigo. Filtre com status (draft, scheduled, running, paused, ended ou all, padrão all). Paginado com page e per_page (padrão 25, até 100). Cada experimento tem id (exp_...), name, status, path (a página original), goal_id, variants (id, name, path, weight, control), as regras para encerrá-lo e locked (true quando o plano não o cobre mais). Exige analytics.read.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/experiments.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/experiments/:id/pause.json
Pausar um experimento e manter seus resultados
experiments_pause
Pausa um experimento em execução ou agendado. Todos os visitantes voltam a receber a página original na hora e os resultados até agora são mantidos. experiments_start o retoma. Exige content.write. Retorna o experimento.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/experiments/:id/pause.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/experiments/:id.json
Obter um experimento com seus resultados
experiments_get
Retorna um experimento por id (exp_..., de experiments_list) com seus resultados: por variante, as visitas, as conversões e a taxa de conversão na meta e, em relação à original, o ganho, a faixa provável da diferença, o p-value, se é significativo com a confiança escolhida e a chance de superar a original. results.progress diz quão perto está de poder declarar um vencedor, e results.mismatch.found true significa que as visitas não estão distribuídas como os pesos indicam, então o resultado não deve ser considerado confiável. split divide os resultados por dispositivo, canal ou país (Pro ou superior) e humans_only mantém as visitas que o bot score classifica como provavelmente humanas (Business). Uma visita conta para uma variante quando viu essa variante, e uma conversão só conta depois disso. Exige analytics.read.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/experiments/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/experiments/:id/start.json
Iniciar um experimento
experiments_start
Inicia um experimento em rascunho ou pausado, de modo que os visitantes da página original passem a ser enviados para as variantes. Com starts_at no futuro, ele espera esse horário. Como redireciona visitantes reais, a ferramenta MCP não o executa e responde com human_only e a página onde uma pessoa o inicia. A API o executa. Exige content.write.
Permissão: content.write
· Somente HTTP (não é uma ferramenta MCP)
curl -X POST https://privatusanalytics.com/sites/:site_id/experiments/:id/start.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
PATCH
/sites/:site_id/experiments/:id.json
Atualizar um experimento
experiments_update
Altera um experimento. Só mudam as entradas que você envia, e variants substitui a lista inteira. Depois que um experimento começa, só name e send_to_winner podem mudar, porque páginas, participações ou metas novas no meio do caminho estragariam o resultado: use experiments_duplicate e edite a cópia. Exige content.write. Retorna o experimento.
Permissão: content.write
curl -X PATCH https://privatusanalytics.com/sites/:site_id/experiments/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Exportações
POST
/workspaces/:workspace_id/exports.json
Enfileirar uma exportação (gerada em segundo plano)
exports_create
Enfileira uma exportação de dados que é montada em segundo plano e a retorna na hora com status queued. Escolha-a quando precisar de um arquivo (CSV, JSON, XLSX, NDJSON ou um ZIP de painéis do dashboard) e use exports_preview antes para conferir colunas e tamanho sem criar nada. Para números leves, use as ferramentas de estatísticas. As entradas obrigatórias são workspace_id (caminho), site_id, from e to (YYYY-MM-DD, inclusivos, no fuso horário da exportação). kind decide o que é exportado e quais opções se aplicam. aggregated (padrão) dá métricas de visitas por intervalo de tempo e usa grouping, dimensions (até 6), metrics, filters e segment_id. pageviews, events e raw dão uma linha por acesso e usam fields, filters e segment_id, exigem o plano Pro ou superior e são limitados a 400 dias (raw a 93 dias). imported dá estatísticas diárias importadas e usa apenas dimensions. dashboard dá um ZIP dos painéis da visão geral (somente o formato zip). O file_format permitido por kind é csv, json ou xlsx para aggregated, pageviews, events e imported, csv ou ndjson para raw e zip para dashboard. As opções que não se aplicam ao kind escolhido são ignoradas. Um espaço de trabalho pode ter no máximo 5 exportações na fila ou em execução ao mesmo tempo. A resposta é a exportação com id (exp_...), status, row_count e expires_at (null até ser montada). Consulte exports_get até o status ser complete e depois chame exports_download. O usuário que a solicitou recebe um e-mail quando ela fica pronta, um webhook export.ready é enviado e a ação é gravada no log de auditoria. As propriedades de evento na coluna props incluem apenas as propriedades marcadas como seguras para exportação (veja event_properties_list).
Permissão: analytics.export
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/exports.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/exports/:id.json
Excluir uma exportação e seu arquivo
exports_delete
Exclui permanentemente uma exportação e seu arquivo gerado. O link de download deixa de funcionar na hora e isso não pode ser desfeito, mas você pode criar a exportação de novo. Use-a para remover uma exportação concluída ou com falha que você não precisa mais, já que os arquivos também são excluídos automaticamente 7 dias depois de montados. O id vem de exports_list. Retorna o objeto da exportação excluída como era antes da exclusão.
Permissão: analytics.export
· Somente HTTP (não é uma ferramenta MCP)
curl -X DELETE https://privatusanalytics.com/exports/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/exports/:id/download.json
Obter um link assinado para o arquivo (válido por 10 minutos)
exports_download
Retorna um link de download de curta duração para uma exportação concluída. Escolha-a depois que exports_get mostrar status complete. A resposta tem url (um link assinado válido por 10 minutos, baixe-o imediatamente), expires_at (quando o link deixa de funcionar, ISO 8601), filename e byte_size (bytes). Ela falha com um erro de não encontrado de código expired quando a exportação tem mais de 7 dias, e com um erro de validação quando a exportação ainda está na fila ou em execução ou quando falhou (a mensagem de erro diz o motivo). Chame-a de novo para obter um link novo enquanto a própria exportação não tiver expirado. O id vem de exports_list.
Permissão: analytics.export
curl https://privatusanalytics.com/exports/:id/download.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/workspaces/:workspace_id/exports.json
Listar exportações (a fila de tarefas)
exports_list
Lista as exportações de um espaço de trabalho para os sites aos quais você tem acesso, das mais recentes para as mais antigas. Use-a para encontrar o id de uma exportação, verificar quais ainda estão em execução ou ver o que expirou. Filtre com site_id, status (queued, running, complete, failed ou expired) e kind (aggregated, pageviews, events, imported, raw ou dashboard). Paginada com page e per_page (até 100), e retorna data (uma lista de exportações, veja exports_get para os campos) mais a paginação em meta. Exige o workspace_id de workspaces_list.
Permissão: analytics.export
curl https://privatusanalytics.com/workspaces/:workspace_id/exports.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/workspaces/:workspace_id/exports/preview.json
Pré-visualizar uma exportação: as primeiras 20 linhas e a contagem estimada de linhas
exports_preview
Simulação de uma exportação que não cria nada. Recebe as mesmas entradas de exports_create e retorna kind, file_format, columns (os nomes das colunas em ordem), rows (até 20 linhas de exemplo como objetos indexados por coluna) e estimated_rows (uma contagem aproximada de linhas do arquivo completo). Para o kind dashboard, as linhas de exemplo listam cada nome de arquivo com sua contagem de linhas. Use-a para validar dimensões, campos, filtros e o intervalo de datas, e para ver o tamanho que a exportação teria antes de chamar exports_create. Ela roda de forma síncrona, então mantenha o intervalo de datas razoável. Os erros de validação são os mesmos de exports_create, incluindo a exigência do plano Pro para os tipos em nível de linha. Nada é armazenado e nenhum e-mail é enviado.
Permissão: analytics.export
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/exports/preview.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/exports/:id.json
Obter uma exportação e seu status
exports_get
Retorna uma exportação, incluindo seu progresso. Use-a para consultar uma exportação iniciada com exports_create até o status ser complete ou failed. Os status são queued, running, complete, failed e expired. Os campos incluem id (exp_...), site_id (pa_...), kind, format, status, params (a definição armazenada da exportação), row_count (null até concluir), error (definido quando falha), completed_at, expires_at (os arquivos são mantidos por 7 dias após a conclusão), download_url (definido apenas enquanto o arquivo pode ser baixado, use exports_download para obter um link assinado) e created_at. O id vem de exports_create ou exports_list.
Permissão: analytics.export
curl https://privatusanalytics.com/exports/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
Feedback privado
GET
/sites/:site_id/testimonials/forms/:form_id/feedback.json
Liste o feedback privado de um formulário, do mais recente ao mais antigo
testimonial_feedback_list
O feedback privado é uma resposta com nota de 1 a 3 em um formulário com direcionamento de notas baixas ativado (Business e acima). Nunca é um depoimento, nunca é público e nunca é contado.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/forms/:form_id/feedback.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/testimonials/forms/:form_id/feedback/:id/mark_read.json
Marque uma resposta de feedback privado como lida, ou como não lida de novo
testimonial_feedback_mark_read
Define read_at em uma resposta de feedback privado, ou o limpa com read false. Marcar como lida uma resposta que já foi lida mantém o horário da primeira leitura. Nada é enviado à pessoa que a escreveu.
Permissão: analytics.read
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/forms/:form_id/feedback/:id/mark_read.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/forms/:form_id/feedback/:id.json
Obtenha uma resposta de feedback privado
testimonial_feedback_get
Retorna a nota, o texto, o nome que a pessoa informou e quando foi lida. O feedback privado é uma resposta com nota baixa em um formulário com direcionamento de notas baixas ativado. Nunca é um depoimento e nunca é público.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/forms/:form_id/feedback/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
Fontes de importação de depoimentos
POST
/sites/:site_id/testimonials/imports/sources.json
Adicione uma fonte de importação a partir de um link e inicie a sua primeira execução
testimonial_import_sources_create
A plataforma é detectada a partir do link. O que a execução encontra espera na etapa de revisão (testimonial_import_sources_review) e nada é guardado até testimonial_import_sources_keep. Nada que é importado conta nos depoimentos mensais. O plano Free busca 1 importação por mês de um site de avaliações ou de uma página. Além disso, a resposta é 402 plan_limit.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/imports/sources.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/testimonials/imports/sources/:id.json
Exclua uma fonte. Os depoimentos que ela trouxe permanecem
testimonial_import_sources_delete
Exclui a fonte com o seu histórico de execuções, o que espera na sua etapa de revisão e o seu arquivo enviado. Os depoimentos já mantidos a partir dela permanecem no site. Uma pessoa faz isso na página da fonte, então a ferramenta não executa nada e devolve essa página.
Permissão: content.write
· Somente HTTP (não é uma ferramenta MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/imports/sources/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials/imports/sources/:id/discard.json
Descarte os itens encontrados
testimonial_import_sources_discard
Informe item_ids (ids de testimonial_import_sources_review) ou all true para tudo o que ainda espera, nunca os dois. Um item descartado sai da etapa de revisão e o que foi lido sobre a pessoa é apagado. Nenhum depoimento é excluído. Caso contrário, o servidor responde com 422 e o código selection ou unknown_ids.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/imports/sources/:id/discard.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials/imports/find.json
Encontre depoimentos no próprio site
testimonial_import_sources_find
Lê o domínio do site e as páginas para as quais ele aponta que parecem conter depoimentos, uma vez por site. É gratuito: não é uma das importações buscadas do plano Free. O que encontra espera na etapa de revisão da fonte que devolve.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/imports/find.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/imports.json
Liste as fontes de importação de um site
testimonial_import_sources_list
meta traz fetched_imports (used, limit e resets_on do mês, limit null significa ilimitado) e sync (o ritmo que o plano permite).
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/imports.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/testimonials/imports/sources/:id/keep.json
Mantenha os itens encontrados como depoimentos
testimonial_import_sources_keep
Informe item_ids (até 100) ou all. Cada item mantido é guardado pela mesma rota de qualquer outro depoimento, então as duplicatas nunca são guardadas duas vezes. Nada que é mantido conta nos depoimentos mensais. meta diz quantos foram mantidos.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/imports/sources/:id/keep.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/imports/platforms.json
Liste as plataformas que uma importação consegue ler
testimonial_import_platforms_list
O registro de fontes testadas. Uma plataforma só é listada depois que a sua importação é comprovada em uma página real. Cada entrada diz qual link colar.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/imports/platforms.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/testimonials/imports/sources/:id/review.json
Liste o que uma fonte encontrou e ainda não foi decidido
testimonial_import_sources_review
meta traz as contagens por selo (new, already_here, likely_duplicate).
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/imports/sources/:id/review.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/testimonials/imports/sources/:id/run.json
Leia uma fonte de novo agora
testimonial_import_sources_run
Uma execução manual é uma importação buscada e conta como uma das do mês no plano Free (402 plan_limit além disso). Recusada enquanto uma execução está ativa (422 in_progress) e depois de 3 execuções da fonte em 24 horas em qualquer plano (422 too_many_runs). Em uma fonte com erro, zera a contagem de falhas.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/imports/sources/:id/run.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/imports/sources/:id.json
Obtenha uma fonte de importação com o seu estado e contagens
testimonial_import_sources_get
Retorna a plataforma, o nome, o endereço lido, com que frequência é lida de novo, o estado, quantos itens esperam na etapa de revisão, quantos foram mantidos, as falhas seguidas e quando rodou pela última vez e quando roda em seguida.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/imports/sources/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/testimonials/imports/sources/:id.json
Altere o link, o nome, a sincronização e a aprovação automática de uma fonte, ou pause-a
testimonial_import_sources_update
Uma sincronização acima do plano (qualquer uma no Free, semanal no Pro) é recusada com 402 plan_limit.
Permissão: content.write
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/imports/sources/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Formulários
POST
/sites/:site_id/testimonials/forms.json
Crie um formulário
testimonial_forms_create
Uma chamada traz o formulário inteiro: etapas, perguntas, lógica de salto, texto de consentimento e idioma. O que ficar de fora começa de um padrão sensato no idioma do formulário, e o slug vem do nome. O link é https://privatus.page/f/<slug>. O direcionamento de notas baixas e o CSS personalizado exigem o plano Business (402 plan_limit sem ele). Respostas em vídeo e áudio são oferecidas a quem dá o depoimento no Pro e acima.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/forms.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/testimonials/forms/:id/permanent.json
Exclua um formulário de vez
testimonial_forms_delete
Exclui o formulário, os seus registros de envio, a sua recompensa e o seu feedback privado. Os depoimentos que ele coletou são mantidos. Não pode ser desfeito, então é feito por uma pessoa na página. A API aceita confirm (o nome ou o id do formulário).
Permissão: sites.manage
· Somente HTTP (não é uma ferramenta MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/forms/:id/permanent.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/testimonials/forms/:id.json
Mova um formulário para a lixeira
testimonial_forms_trash
O seu link responde que o formulário está fechado até ser restaurado. A lixeira é esvaziada após 30 dias. Via MCP, a ferramenta não altera nada e responde com a página do app em que uma pessoa faz isso.
Permissão: content.write
· Somente HTTP (não é uma ferramenta MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/forms/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials/forms/:id/duplicate.json
Copie um formulário, opcionalmente para outro idioma
testimonial_forms_duplicate
Copia todas as configurações, exceto o slug, as estatísticas e a recompensa.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/forms/:id/duplicate.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/forms.json
Liste os formulários de um site
testimonial_forms_list
Os formulários na lixeira são listados com trashed true e ficam de fora caso contrário. Cada formulário traz as suas configurações, a sua recompensa e quantos envios já teve.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/forms.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/testimonials/forms/:id/qr.json
Obtenha o código QR de um formulário em SVG ou PNG
testimonial_forms_qr
O código contém o link do formulário com ?src=qr, então as leituras são contadas como um canal próprio. Um slug alterado mantém um código impresso funcionando.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/forms/:id/qr.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/testimonials/forms/:id/restore.json
Restaure um formulário da lixeira. O seu link volta a funcionar
testimonial_forms_restore
Tira um formulário da lixeira como estava, com as suas perguntas, envios e feedback privado. O seu link (/f/<slug>) e as suas incorporações voltam a receber respostas. O servidor responde com 422 e o código not_in_trash para um formulário que não está na lixeira.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/forms/:id/restore.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/forms/:id.json
Obtenha um formulário com cada etapa, pergunta, regra e configuração
testimonial_forms_get
Retorna o formulário inteiro como testimonial_forms_create e testimonial_forms_update o aceitam, com o seu slug, o seu link, a sua recompensa e quantos envios tem. Um formulário na lixeira não é encontrado aqui: restaure-o primeiro.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/forms/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/testimonials/forms/:id.json
Altere um formulário. Só as entradas enviadas mudam
testimonial_forms_update
Uma mudança em uma etapa, em uma pergunta ou no texto de consentimento aumenta a versão do formulário, que todo registro de consentimento guarda. Um slug alterado deixa o link antigo redirecionando. Envie questions como a lista inteira.
Permissão: content.write
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/forms/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Funis
POST
/sites/:site_id/funnels.json
Criar um funil
funnels_create
Cria um funil, uma sequência de etapas pelas quais as visitas passam, medida por visita. Passe name e steps, uma lista ordenada de {type, value, match, name}. type é page, event ou goal. value é um caminho para etapas de página (por exemplo /pricing), um nome de evento personalizado para etapas de evento ou um id de meta (goal_..., de goals_list) para etapas de meta. match é apenas para etapas de página e é exact, prefix, glob (curinga *) ou regex, assumindo por padrão glob quando o valor tem um * e exact caso contrário. name é um rótulo opcional. Etapas com valor vazio são descartadas. order_mode é strict (cada etapa deve vir depois da anterior, o padrão) ou any (etapas em qualquer ordem). window é visit (o padrão) ou day, e ambos medem dentro de uma única visita porque nenhum id de visitante é armazenado. Os limites do plano se aplicam. O Free permite 3 funis por site e 5 etapas, o Pro permite 10 etapas e o Business 20, e um funil precisa de pelo menos 2 etapas. Retorna o funil com id (fun_...). Leia os resultados com funnels_get. Exige a permissão content.write.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/funnels.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/funnels/:id.json
Excluir um funil
funnels_delete
Exclui permanentemente a definição de um funil. Nenhum dado de análise é tocado, mas o funil e suas configurações não podem ser recuperados e não há como desfazer. Retorna o funil excluído. Os ids (fun_...) vêm de funnels_list. Use funnels_update para alterar um funil em vez disso. Exige a permissão content.write.
Permissão: content.write
curl -X DELETE https://privatusanalytics.com/sites/:site_id/funnels/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/funnels.json
Listar funis com entradas, conclusões e taxa
funnels_list
Lista os funis de um site com seus resultados principais no período, ordenados por nome. Cada funil tem id (fun_...), name, steps, order_mode, window e stats {entered, completed, conversion_rate}, em que entered são as visitas que chegaram à etapa 1, completed são as visitas que chegaram à última etapa e conversion_rate é uma porcentagem (de 0 a 100). Paginada com page e per_page (máximo 100, padrão 25). Aceita as entradas compartilhadas period e filters. Para o detalhe etapa por etapa use funnels_get, e use funnels_create para adicionar um.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/funnels.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/funnels/:id.json
Relatório do funil: contagem por etapa, conversão, abandono, tempo entre etapas e para onde as visitas foram em vez disso
funnels_get
O relatório de conversão de um funil em um período. Retorna period, funnel_id, name, order_mode, window, steps, overall_conversion_rate, breakdown e, com compare, comparison. Cada etapa tem index (a partir de 1), name, type, value, match, count (visitas que a alcançaram), step_conversion_rate (porcentagem da etapa anterior), overall_conversion_rate (porcentagem da etapa 1), dropoff e dropoff_rate (visitas que saíram depois desta etapa), median_seconds_from_previous (null para a etapa 1) e next_pages (as 5 principais páginas visitadas em seguida pelas visitas que saíram do funil, com (exit) para as que foram embora). As taxas são porcentagens de 0 a 100. Defina breakdown como channel, device, country, utm_campaign, utm_source, browser ou os para obter a conversão geral por valor (os 20 principais). comparison tem as contagens do outro período, overall_conversion_rate e change (porcentagem, null quando a taxa anterior era 0). Os filtros de página são ignorados aqui porque encurtariam as visitas, use uma etapa de página em vez disso. Aceita as entradas compartilhadas period, compare, filters e segment. Os ids vêm de funnels_list.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/funnels/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/funnels/:id.json
Atualizar um funil
funnels_update
Altera um funil. Apenas as entradas enviadas mudam. Enviar steps substitui a lista inteira de etapas, então envie todas as etapas em ordem (o formato e os limites de etapas são os mesmos de funnels_create, o Free permite 5 etapas, o Pro 10 e o Business 20, e as etapas de meta devem nomear metas deste site). Você também pode alterar name, order_mode (strict ou any) e window (visit ou day). Os resultados são calculados a partir da definição na hora da leitura, então alterar um funil se aplica a todo o histórico imediatamente e os números passados mostrados antes serão diferentes. Retorna o funil. Os ids vêm de funnels_list. Exige a permissão content.write.
Permissão: content.write
curl -X PATCH https://privatusanalytics.com/sites/:site_id/funnels/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Funções
POST
/workspaces/:workspace_id/roles.json
Criar uma função personalizada
roles_create
Cria uma função personalizada, um conjunto nomeado de permissões que você pode dar aos membros por invitations_create ou members_update com role custom e o id da função como custom_role_id. Exige o plano Business e members.manage. permissions deve listar pelo menos um nome entre os valores permitidos (analytics.read, analytics.export, content.write, sites.manage, uptime.manage, members.manage, tokens.manage, billing.manage, workspace.manage) e você não pode incluir uma permissão que você mesmo não tem. Retorna a função (veja roles_list para os campos).
Permissão: members.manage
· Somente HTTP (não é uma ferramenta MCP)
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/roles.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/workspaces/:workspace_id/roles/:id.json
Excluir uma função personalizada (não pode estar em uso)
roles_delete
Exclui uma função personalizada. Isso não pode ser desfeito e falha enquanto algum membro ou convite pendente ainda usar a função, então mova essas pessoas para outra função antes com members_update (encontre-as com members_list). As funções integradas não podem ser excluídas. Pegue o id (uuid) em roles_list. Exige members.manage. Retorna a função excluída.
Permissão: members.manage
· Somente HTTP (não é uma ferramenta MCP)
curl -X DELETE https://privatusanalytics.com/workspaces/:workspace_id/roles/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/workspaces/:workspace_id/roles.json
Listar funções personalizadas
roles_list
Lista as funções personalizadas de um espaço de trabalho, ordenadas por nome. As funções personalizadas são um recurso do plano Business que agrupa permissões sob um nome seu, e as funções integradas (owner, admin, editor, analyst, viewer, billing) não são listadas aqui. Cada função tem id (uuid, usado como custom_role_id em invitations_create e members_update), name, permissions (nomes como analytics.read, content.write, members.manage), members (o número de membros que a têm) e created_at. Quem tem acesso limitado a alguns sites vê apenas funções dentro do seu alcance.
Permissão: member
curl https://privatusanalytics.com/workspaces/:workspace_id/roles.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/workspaces/:workspace_id/roles/:id.json
Atualizar uma função personalizada
roles_update
Renomeia uma função personalizada e/ou substitui toda a sua lista de permissões. Apenas as entradas enviadas mudam, e permissions substitui a lista existente em vez de acrescentar a ela. A mudança se aplica na hora a todos os membros e convites pendentes que têm a função. Você só pode editar uma função cujas permissões você tem por completo, e quem tem acesso limitado a alguns sites precisa de alcance sobre todos os sites de quem a tem. Exige members.manage. Pegue o id (uuid) em roles_list. Retorna a função atualizada.
Permissão: members.manage
· Somente HTTP (não é uma ferramenta MCP)
curl -X PATCH https://privatusanalytics.com/workspaces/:workspace_id/roles/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Idiomas dos depoimentos
GET
/sites/:site_id/testimonials/settings/languages.json
Obtenha as configurações de idioma dos depoimentos de um site
testimonial_languages_get
O idioma padrão, os idiomas oferecidos, se os depoimentos recém-aprovados são traduzidos automaticamente, se o plano inclui tradução, se a tradução está configurada e os caracteres do mês usados e restantes.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/settings/languages.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/testimonials/settings/languages.json
Defina o idioma padrão, os idiomas oferecidos e a tradução automática
testimonial_languages_update
Envie só o que muda. O padrão está sempre entre os idiomas oferecidos, e um idioma em que um formulário é escrito não pode ser removido (in_use). Ativar auto_translate exige Business ou acima (402 plan_limit nos demais): a partir daí as palavras de cada depoimento recém-aprovado são enviadas ao Google Cloud Translation, e o membro recebe um e-mail avisando que um assistente alterou isto.
Permissão: sites.manage
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/settings/languages.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Imagens de depoimentos
POST
/sites/:site_id/testimonials/images/bulk.json
Faça imagens de todos os depoimentos aprovados de uma coleção
testimonial_images_bulk_create
Até 200 depoimentos por execução, uma imagem por tamanho para cada um. Um texto longo demais para a imagem é desenhado a partir do seu destaque ou, se não houver, das suas primeiras frases (excerpted diz quantos). A resposta lista as imagens iniciadas, os depoimentos deixados de fora com o motivo e export_id: um zip com os PNGs aparece na página Exportações quando são desenhados.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/images/bulk.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials/images.json
Faça imagens de um depoimento aprovado, uma por tamanho
testimonial_images_create
Só um depoimento aprovado pode ser desenhado, porque o PNG ganha um endereço público: qualquer outro é recusado com not_approved. Cada imagem começa como rendering e é desenhada em segundo plano. A resposta é a lista de imagens iniciadas. Consulte testimonial_images_get para file_url. Um 422 com text_too_long significa que as palavras não cabem: use text_mode highlight ou excerpt, ou um tamanho mais alto.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/images.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/testimonials/images/:id.json
Exclua uma imagem e o seu arquivo
testimonial_images_delete
O PNG é excluído do host de mídia e o seu endereço deixa de funcionar. Uma imagem não tem lixeira. Pode ser feita de novo a partir do seu depoimento com testimonial_images_create. Via MCP, a ferramenta não altera nada e responde com a página do app em que uma pessoa faz isso.
Permissão: content.write
· Somente HTTP (não é uma ferramenta MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/images/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/images.json
Liste as imagens de um site
testimonial_images_list
Imagens feitas a partir de depoimentos aprovados, as mais novas primeiro, 25 por página. Filtre por status, template, size ou testimonial_id. Cada uma traz file_url quando está pronta.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/images.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/testimonials/images/:id.json
Obtenha uma imagem, com o seu estado e o endereço do seu PNG
testimonial_images_get
status é rendering, ready ou failed. file_url é definido quando está pronta. Consulte isto depois de testimonial_images_create até que status deixe de ser rendering.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/images/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/testimonials/images/:id.json
Altere como uma imagem é desenhada e renderize-a de novo
testimonial_images_update
Envie só o que muda. Sem nada enviado, renderiza a mesma imagem de novo a partir do depoimento como está agora, que também é a forma de tentar de novo uma que falhou. Uma nova renderização tem um novo file_url, e o arquivo antigo é excluído.
Permissão: content.write
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/images/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Importações
DELETE
/sites/:site_id/imports/google/connection.json
Desconectar sua conta do Google Analytics e excluir os tokens de acesso armazenados
imports_google_disconnect
Remove a conexão armazenada com o Google Analytics do membro que chama para o espaço de trabalho deste site, de modo que as importações do GA4 deixam de ler do Google até que ele seja conectado novamente no app. Os dados que já foram importados permanecem e só são removidos excluindo a importação com imports_delete. A concessão não é revogada no lado do Google. Falha com um erro de validação quando não há conexão, ou enquanto uma das importações do GA4 do membro estiver na fila ou em execução. Retorna um objeto com disconnected true. A conexão é feita no app (a tela de login do Google), não há ferramenta para isso.
Permissão: sites.manage
curl -X DELETE https://privatusanalytics.com/sites/:site_id/imports/google/connection.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/imports/google/properties.json
Listar propriedades do Google Analytics 4 para importar
imports_google_properties
Lista as propriedades do Google Analytics 4 que a conta Google conectada do membro que chama consegue ler. Chame-a antes de imports_create com source ga4 para obter o property_id a usar. Retorna uma lista de objetos com id (como properties/123456789, passe-o como property_id), name e account. Falha com um erro de validação quando o membro não conectou o Google para este espaço de trabalho (feito no app, não há ferramenta para isso) ou quando o Google rejeita a requisição. Faz uma chamada ao vivo ao Google e não altera nada.
Permissão: sites.manage
curl https://privatusanalytics.com/sites/:site_id/imports/google/properties.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/imports.json
Iniciar uma importação (propriedade GA4 ou upload de CSV)
imports_create
Inicia uma importação de dados históricos de outra ferramenta de análise para um site, processada em segundo plano, e retorna a importação com status queued. Escolha source ga4 para extrair da API do Google Analytics 4, que exige uma conexão com o Google feita no app, property_id (de imports_google_properties) e date_from. date_to assume por padrão o dia anterior ao primeiro evento rastreado do site, ou ontem. As outras fontes (universal_analytics, fathom, simple_analytics, plausible, matomo, umami, clicky) recebem uma exportação CSV enviada como entrada file (upload de formulário multipart, até 50 MB), o que as torna pouco práticas de iniciar por MCP e melhor feitas no app. dimension só é necessária para sobrescrever a detecção do que as linhas do CSV detalham, por exemplo exportações Label do Matomo. As linhas importadas nunca contam para a cota de eventos e só aparecem nas estatísticas quando você passa include_imported true. Um espaço de trabalho pode ter no máximo 5 importações na fila ou em execução ao mesmo tempo. Consulte imports_get até o status ser complete ou failed. Exige a permissão sites.manage.
Permissão: sites.manage
curl -X POST https://privatusanalytics.com/sites/:site_id/imports.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/imports/:id.json
Excluir uma importação e todos os seus dados importados
imports_delete
Exclui permanentemente uma importação junto com todas as linhas que ela trouxe e seu arquivo enviado. As estatísticas que incluíam os dados importados mudam na hora quando include_imported está ativado, e isso não pode ser desfeito, embora você possa importar de novo. O id vem de imports_list e exige o site_id. Retorna a importação excluída. Exige a permissão sites.manage. Os dados coletados pelo rastreador não são tocados.
Permissão: sites.manage
· Somente HTTP (não é uma ferramenta MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/imports/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/imports.json
Listar importações de um site
imports_list
Lista as importações de um site, das mais recentes para as mais antigas. Use-a para encontrar o id de uma importação ou verificar se alguma ainda está em execução. Filtre opcionalmente por status (queued, running, complete ou failed). Paginada com page e per_page (até 100). Cada item tem id, site_id, source, status, date_from, date_to, rows_imported, error, completed_at e created_at. Veja imports_get para detalhes e imports_create para iniciar uma.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/imports.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/imports/:id.json
Obter uma importação e seu status
imports_get
Retorna uma importação de um site, usada para consultar uma importação iniciada com imports_create. Os campos são id (imp_...), site_id, source, status (queued, running, complete ou failed), date_from e date_to (YYYY-MM-DD, null quando desconhecidos), rows_imported (contagem de linhas diárias importadas), error (definido quando falha), completed_at e created_at. O id vem de imports_create ou imports_list. As linhas importadas só aparecem nas estatísticas quando a chamada de estatísticas define include_imported como true.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/imports/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
Importações de depoimentos por planilha
POST
/sites/:site_id/testimonials/imports/spreadsheet.json
Envie uma planilha (ou texto CSV) e leia as suas colunas
testimonial_spreadsheet_imports_create
Etapa 1 de uma importação por planilha. Envie file (CSV, TSV ou XLSX, no máximo 10 MB e 5.000 linhas, com os cabeçalhos na primeira linha) ou content (texto CSV de até 1 MB). A resposta traz as colunas, três valores de exemplo de cada uma e um primeiro palpite de para onde cada coluna vai. Nada é importado ainda: continue com testimonial_spreadsheet_imports_update e testimonial_spreadsheet_imports_run. Uma planilha nunca conta nos depoimentos mensais nem nas importações buscadas.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/imports/spreadsheet.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials/imports/spreadsheet/:id/run.json
Leia o arquivo associado na etapa de revisão
testimonial_spreadsheet_imports_run
As linhas que podem ser usadas esperam com uma caixa de seleção. As que não podem são listadas com o número da linha e o motivo. Mantenha-as com testimonial_import_sources_keep, usando o id da planilha como id da fonte.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/imports/spreadsheet/:id/run.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/imports/spreadsheet/:id.json
Obtenha as colunas, os exemplos, a associação, as opções e as contagens de uma planilha
testimonial_spreadsheet_imports_get
Retorna as colunas do arquivo com valores de exemplo, para qual campo cada coluna vai, as opções (status padrão, tags, coleção, formato de data, o que acontece com as duplicatas) e, depois de executada, quantas linhas esperam na etapa de revisão e quantas foram mantidas.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/imports/spreadsheet/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/testimonials/imports/spreadsheet/:id.json
Salve qual coluna vai para onde e as opções do arquivo
testimonial_spreadsheet_imports_update
Etapas 2 e 3 de uma importação por planilha. mapping é um objeto de nome da coluna para campo, com valor vazio para uma coluna a deixar de fora, e duas colunas não podem ir para um mesmo campo. As opções são default_status (pending ou approved), tags, collection_id (uma coleção manual), default_source_name, date_format (auto, ymd, dmy ou mdy) e duplicates (skip ou queue). Só o que é enviado muda, e nada é importado até testimonial_spreadsheet_imports_run.
Permissão: content.write
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/imports/spreadsheet/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Kit de marca dos depoimentos
DELETE
/sites/:site_id/testimonials/settings/brand_kit.json
Devolva o kit de marca dos depoimentos de um site aos padrões do Privatus Analytics
testimonial_brand_kit_reset
Limpa toda cor, fonte, o raio, o estilo de nota, os logotipos e o CSS personalizado em uma só etapa, e todo formulário, widget e mural muda junto. Não pode ser desfeito, então um assistente é enviado à página do Kit de marca em vez de executar.
Permissão: sites.manage
· Somente HTTP (não é uma ferramenta MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/settings/brand_kit.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/settings/brand_kit.json
Obtenha o kit de marca dos depoimentos de um site, com cada cor resolvida para claro e escuro
testimonial_brand_kit_get
Retorna as cores, fontes, raio dos cantos, estilo de nota, logotipos, chave do selo e CSS personalizado com que todo formulário, widget e mural do site é desenhado. Uma configuração que nunca foi alterada volta com o padrão do Privatus Analytics.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/settings/brand_kit.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/testimonials/settings/brand_kit.json
Altere o kit de marca dos depoimentos de um site
testimonial_brand_kit_update
Só as entradas que você envia são alteradas. Envie uma string vazia para devolver uma configuração ao padrão do Privatus Analytics. O CSS personalizado é verificado quando salvo, e o que não é permitido é recusado com a linha em que está. O CSS personalizado exige o plano Business e ocultar o selo exige o plano Business. Sem ele, o servidor responde com 402 plan_limit.
Permissão: sites.manage
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/settings/brand_kit.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Lista de desfazer dos depoimentos
GET
/sites/:site_id/testimonials/settings/undo.json
Liste o que foi alterado nos últimos 7 dias e pode ser desfeito
testimonial_undo_records_list
Mais recentes primeiro. Cada registro diz o que foi executado, quem executou, quantos itens alterou e ignorou e por quê, e até quando pode ser desfeito.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/settings/undo.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/testimonials/settings/undo/:id.json
Leia um registro de desfazer
testimonial_undo_records_get
Para uma execução em segundo plano, state é running e processed diz até onde foi.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/settings/undo/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/testimonials/settings/undo/:id/undo.json
Desfaça uma ação em lote ou uma única alteração em até 7 dias
testimonial_undo_records_undo
Recoloca o valor anterior em tudo o que a execução alterou. O que foi alterado de novo depois é deixado como está e contado em left. Uma união de pessoas ou de duplicatas é desfeita da mesma forma. Via MCP, um desfazer que excluiria ou moveria para a lixeira não é executado (o desfazer de uma restauração, de uma execução de tradução e de uma execução de criação de imagens): a ferramenta responde com human_only e a página do app em que uma pessoa faz isso.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/settings/undo/:id/undo.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Lixeira de depoimentos
DELETE
/sites/:site_id/testimonials/trash/permanent.json
Exclua de vez até 100 itens da lixeira
testimonial_trash_delete_permanently
Isso não pode ser desfeito. confirm é o nome do item (o nome da pessoa, no caso de um depoimento) ou o seu id, para um item, e o nome do site, para vários. Só itens na lixeira são aceitos.
Permissão: sites.manage
· Somente HTTP (não é uma ferramenta MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/trash/permanent.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/testimonials/trash/empty.json
Exclua de vez tudo o que está na lixeira
testimonial_trash_empty
Isso não pode ser desfeito. confirm é o nome do site. Até 100 itens são excluídos de uma vez. Uma lixeira maior é esvaziada em segundo plano e a resposta traz state running.
Permissão: sites.manage
· Somente HTTP (não é uma ferramenta MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/trash/empty.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/trash.json
Liste o que está na lixeira, um tipo por vez
testimonial_trash_list
Responde com os itens de um tipo (testimonial por padrão) e, em meta.counts, quantos de cada tipo estão na lixeira. Cada item diz para onde volta, o que o exibia, quem o enviou para a lixeira e quando sai de lá.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/trash.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/testimonials/trash/restore.json
Restaure até 100 itens da lixeira, exatamente como estavam
testimonial_trash_restore
Os ids devem ser de um só tipo. Restaurar depoimentos responde com um id de desfazer (data.id e meta.undo_id) que testimonial_undo_records_undo aceita por 7 dias. Uma restauração nunca conta como um novo depoimento.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/trash/restore.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Log de auditoria
GET
/workspaces/:workspace_id/audit_log.json
Listar entradas do log de auditoria (adicione .csv para exportar)
audit_logs_get
Retorna o log de auditoria do espaço de trabalho, um registro paginado, do mais recente ao mais antigo, de quem alterou o quê (configurações, membros, sites, metas, tokens e assim por diante). Exige a permissão workspace.manage e um plano com histórico de auditoria. O plano Free não tem nenhum e a chamada falha com um erro de limite de plano, o Pro guarda 30 dias, o Business 365 dias e o Enterprise não tem limite. Entradas mais antigas que a janela de retenção nunca são retornadas. Filtre com actor (o e-mail de um membro, correspondência exata), item_type (o tipo de registro, como Site, Goal ou Membership), event (create, update ou destroy) e from e to (YYYY-MM-DD, inclusivos, em UTC). Cada entrada tem id, created_at, event, item_type, item_id, target (um rótulo legível, como Site: example.com), actor_email (null quando a alteração foi feita pelo sistema ou por um usuário excluído), actor_name, token_name (o token de API usado, null para uma sessão de navegador), changes (um objeto que associa cada campo alterado a um par [antes, depois], com os segredos removidos) e ip (o endereço usado pelo membro ou pelo cliente de API, null quando desconhecido). Uma exportação em CSV do mesmo log está disponível apenas no app.
Permissão: workspace.manage
curl https://privatusanalytics.com/workspaces/:workspace_id/audit_log.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
Membros
POST
/workspaces/:workspace_id/invitations.json
Convidar pessoas por e-mail
invitations_create
Convida uma ou mais pessoas para um espaço de trabalho por e-mail e envia a cada uma um e-mail de convite com um link válido por 14 dias. emails é uma lista de até 50 endereços (uma string separada por vírgula, espaço ou ponto e vírgula também funciona no formulário do app) e os endereços que já são membros são ignorados, mas é um erro quando todos eles são membros. Convidar um endereço que já tem um convite pendente substitui esse convite e envia um novo e-mail. role é uma das funções de members_list (padrão viewer, o owner não pode ser convidado). Use role custom junto com custom_role_id (o id de roles_list, plano Business). Por padrão o acesso cobre todos os sites, inclusive os futuros. Para limitar o acesso, defina all_sites como false e liste site_ids como ids públicos de site (pa_...). Os convites pendentes contam para o limite de membros do plano (o Free permite 3 membros) e a chamada falha quando o limite seria excedido. Os e-mails de convite têm limite de frequência. Você não pode conceder uma função com mais permissões ou sites do que os seus. Exige members.manage. Retorna os convites criados (veja invitations_list para os campos).
Permissão: members.manage
· Somente HTTP (não é uma ferramenta MCP)
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/invitations.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/workspaces/:workspace_id/invitations/:id.json
Revogar um convite pendente
invitations_delete
Revoga um convite pendente para que seu link deixe de funcionar e libera a vaga que ele ocupava. A exclusão não pode ser desfeita, convide a pessoa de novo com invitations_create. Pegue o id (um uuid) em invitations_list. Quem tem acesso limitado a alguns sites só pode revogar convites que não concedam mais do que os seus próprios sites. Exige members.manage. Retorna o convite revogado.
Permissão: members.manage
· Somente HTTP (não é uma ferramenta MCP)
curl -X DELETE https://privatusanalytics.com/workspaces/:workspace_id/invitations/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/workspaces/:workspace_id/invitations.json
Listar convites pendentes
invitations_list
Lista os convites de equipe pendentes de um espaço de trabalho, dos mais recentes para os mais antigos e paginados. Os convites aceitos e revogados não são listados (use members_list para quem entrou), e os expirados permanecem até serem substituídos ou revogados. Exige members.manage. Quem tem acesso limitado a alguns sites só vê convites dentro do seu alcance. Cada item tem id (uuid, usado por invitations_delete), email, role, custom_role (o nome da função personalizada quando role é custom, caso contrário null), all_sites, site_ids (ids públicos de site pa_..., vazio quando all_sites é true), invited_by (o e-mail de quem convidou), expires_at e created_at.
Permissão: members.manage
curl https://privatusanalytics.com/workspaces/:workspace_id/invitations.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
DELETE
/workspaces/:workspace_id/members/:id.json
Remover um membro (ou sair do espaço de trabalho)
members_delete
Remove um membro de um espaço de trabalho, ou permite que quem chama saia dele quando o id é o da própria associação. É imediato e não pode ser desfeito: a pessoa perde o acesso, seus tokens de API para este espaço de trabalho são revogados e qualquer vínculo SCIM é removido. Suas notas e as entradas de auditoria passadas permanecem. O proprietário não pode ser removido nem sair, transfira antes a propriedade com ownership_transfers_create. Remover outra pessoa exige members.manage, e você não pode remover alguém com mais permissões ou sites do que você tem. Sair não exige permissão, mas um token limitado em permissões ou sites não pode ser usado para sair. A pessoa pode ser convidada de novo depois com invitations_create. Pegue o id (o uuid da associação) em members_list. Retorna o membro removido.
Permissão: member
· Somente HTTP (não é uma ferramenta MCP)
curl -X DELETE https://privatusanalytics.com/workspaces/:workspace_id/members/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/workspaces/:workspace_id/members.json
Listar membros do espaço de trabalho
members_list
Lista os membros de um espaço de trabalho na ordem em que entraram, paginados. Use query para pesquisar por nome ou e-mail (parcial, sem diferenciar maiúsculas e minúsculas) e role para filtrar por função. Os convites pendentes não são incluídos (use invitations_list). Cada membro tem id (o uuid da associação, usado por members_update, members_delete e ownership_transfers_create), email, name (pode ser nulo), role, custom_role (nome, null a menos que role seja custom), custom_role_id, all_sites, include_future_sites, site_ids (ids públicos de site pa_..., vazio quando all_sites é true), two_factor (se o membro tem um app autenticador ou uma passkey), last_active_at (pode ser nulo) e created_at. Quem tem acesso limitado a alguns sites vê apenas membros dentro do seu alcance.
Permissão: member
curl https://privatusanalytics.com/workspaces/:workspace_id/members.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/workspaces/:workspace_id/members/:id.json
Alterar a função ou o acesso a sites de um membro
members_update
Altera a função e/ou o acesso a sites de um membro em um espaço de trabalho. Apenas as entradas enviadas mudam. Para mudar a função, envie role (admin, editor, analyst, viewer ou billing, e custom com custom_role_id de roles_list no plano Business). A função do proprietário não pode ser alterada aqui, use ownership_transfers_create, e você não pode editar a sua própria associação nem a de alguém acima de você. Para limitar os sites, envie all_sites false junto com site_ids (ids públicos de site pa_...) e acrescente include_future_sites true para também conceder os sites criados depois. Envie all_sites true para dar acesso a todos os sites. Uma lista site_ids enviada sem all_sites false é um erro para um membro que hoje tem todos os sites. Você não pode conceder mais permissões ou sites do que tem. Exige members.manage. Pegue o id em members_list. Retorna o membro atualizado.
Permissão: members.manage
· Somente HTTP (não é uma ferramenta MCP)
curl -X PATCH https://privatusanalytics.com/workspaces/:workspace_id/members/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/workspaces/:workspace_id/ownership_transfer.json
Transferir a propriedade do espaço de trabalho para outro membro (somente o proprietário, você passa a ser administrador)
ownership_transfers_create
Transfere a propriedade de um espaço de trabalho para outro membro e rebaixa quem chama para admin, o que é difícil de desfazer porque só o novo proprietário pode devolvê-la. Apenas o proprietário atual pode chamá-la, e um token não pode ser limitado a certos sites ou permissões. membership_id é o uuid da associação do novo proprietário, de members_list (não um id de usuário nem um e-mail), e a pessoa já deve ser membro, convide-a primeiro se não for. O novo proprietário recebe a função owner com acesso a todos os sites, e a função owner não pode ser concedida por members_update. Um espaço de trabalho Free não pode ser dado a alguém que já possui outro espaço de trabalho Free. A cobrança permanece com o espaço de trabalho. Um token que faz esta chamada precisa de members.manage. Retorna o registro de membro do novo proprietário.
Permissão: member
· Somente HTTP (não é uma ferramenta MCP)
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/ownership_transfer.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Menções em depoimentos
GET
/sites/:site_id/testimonials/mentions.json
Liste as palavras e expressões que se repetem nos depoimentos de um site
testimonial_mentions_list
Cada termo vem com quantos depoimentos o contêm, a sua participação, a nota média deles e os últimos 90 dias contra os 90 anteriores. Ordene por rating_asc para ler do que as pessoas reclamam, ou por rising para ver o que é novo. meta.refreshed_at diz quando os termos foram reconstruídos pela última vez. Passe um termo para testimonials_list como mention para ler os depoimentos.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/mentions.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/testimonials/mentions/tag.json
Marque todo depoimento que menciona uma palavra ou expressão
testimonial_mentions_tag
Uma ação em lote sobre o resultado inteiro, com desfazer. O termo é qualquer palavra ou expressão de duas palavras, comparada com radicalização da mesma forma que as Menções são contadas. Uma tag nomeada pela primeira vez é criada. Responde com um id de desfazer que testimonials_bulk_undo aceita por 7 dias. Mais de 100 são executados em segundo plano.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/mentions/tag.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
PATCH
/sites/:site_id/testimonials/mentions.json
Oculte um termo que é só ruído, ou mostre-o de novo
testimonial_mentions_update
Um termo oculto sai da lista de Menções e da faceta Menções da caixa de entrada, e continua oculto quando os termos são reconstruídos.
Permissão: content.write
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/mentions.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Metas
POST
/sites/:site_id/goals/:id/archive.json
Arquivar uma meta (oculta dos relatórios)
goals_archive
Arquiva uma meta. Uma meta arquivada fica oculta dos relatórios, não conta para o limite de metas do plano e mantém sua definição, então pode ser restaurada depois com goals_unarchive. Nenhum dado é excluído. Retorna a meta com archived true e archived_at definido. Arquivar uma meta já arquivada não faz nada. Use goals_delete para removê-la de vez. Exige a permissão content.write.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/goals/:id/archive.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/goals.json
Criar uma meta
goals_create
Cria uma meta de conversão. As metas são definições aplicadas quando os relatórios são lidos, então uma nova meta conta imediatamente os eventos correspondentes em todo o histórico existente. São obrigatórios name e kind. kind decide quais outras entradas se aplicam. page exige pattern (um caminho, por exemplo /thank-you, com match_type exact, prefix, glob ou regex) e pode usar hostname. event exige event_name e pode usar conditions (testes de propriedade como {key: plan, operator: is, value: pro}, todos devem corresponder, com os operadores is, is_not, contains, gt, lt). engagement exige pattern mais scroll_threshold (porcentagem de 1 a 100) e/ou time_threshold_seconds (atingida quando um dos dois é cumprido). outbound compara o domínio do link com pattern (por exemplo stripe.com) e download compara o arquivo com pattern (por exemplo *.pdf). value_mode é none (padrão), fixed (usa fixed_value, um valor decimal na moeda do site, como 49.5, armazenado como fixed_value_minor em centavos) ou revenue (a própria receita do evento). count_mode é once_per_visit (padrão) ou every. Os espaços de trabalho Free permitem 10 metas ativas por site, os planos pagos são ilimitados. Retorna a meta com id (goal_...). Exige a permissão content.write.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/goals.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/goals/:id.json
Excluir uma meta (os dados são mantidos)
goals_delete
Exclui permanentemente a definição de uma meta. Nenhum dado de evento é excluído, mas a meta desaparece dos relatórios, e as etapas de funil, jornadas e experimentos que apontam para ela deixam de funcionar. Não há como desfazer. Para ocultar uma meta e mantê-la, use goals_archive. Retorna a meta excluída. Os ids (goal_...) vêm de goals_list. Exige a permissão content.write.
Permissão: content.write
curl -X DELETE https://privatusanalytics.com/sites/:site_id/goals/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/goals/:id/duplicate.json
Copiar uma meta
goals_duplicate
Copia a definição de uma meta para uma nova meta ativa. A cópia recebe o nome name se você o enviar, caso contrário o nome original seguido de (copy). Ela conta para o limite de metas do plano (10 metas ativas por site no Free). Retorna a nova meta com um novo id. Use-a para começar uma variação de uma meta e depois altere-a com goals_update. Exige a permissão content.write.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/goals/:id/duplicate.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/goals.json
Listar metas com conclusões, conversões, taxa e valor de um período
goals_list
Lista as metas de um site com seus resultados no período. Cada meta é a definição (id goal_..., name, kind, match_type, pattern, hostname, event_name, conditions, scroll_threshold, time_threshold_seconds, value_mode, fixed_value_minor em centavos, count_mode, archived, archived_at) mais stats {completions, conversions, conversion_rate, value, change}. conversion_rate é uma porcentagem (de 0 a 100), value é em unidades menores (centavos) e change é a variação percentual das conversões em relação ao período anterior (null quando a contagem anterior era 0). status filtra por active (padrão), archived ou all. Paginada com page e per_page (máximo 100, padrão 25). Use goals_get para o relatório completo de uma meta. Aceita as entradas compartilhadas period, compare e filters.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/goals.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/goals/:id.json
Relatório da meta: métricas, gráfico, detalhamentos e a jornada até a conversão
goals_get
Uma meta em profundidade em um período. Retorna period, goal_id, goal (a definição), metrics, interval, series, breakdowns, journey e, com compare, comparison_period, comparison e change. metrics tem completions (cada evento correspondente), conversions (visitas com pelo menos uma conclusão), conversion_rate (porcentagem de 0 a 100) e value (unidades menores, centavos). conversion_rate divide por visitas, ou por visitantes quando o site está configurado assim. series é uma lista de {date, completions, conversions, conversion_rate} por intervalo de tempo (defina interval para alterá-lo). breakdowns guarda os 10 principais por conversões para channel, utm_campaign, entry_page, country e device, cada um como {value, completions, conversions, conversion_rate}. journey mostra converting_visits, median_seconds_to_convert, median_pages_before e pages_before (as 10 principais páginas vistas antes de converter, com visits e share). Use goals_list para todas as metas de uma vez e funnels_get para fluxos de várias etapas. Aceita as entradas compartilhadas period, compare, filters e segment.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/goals/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/goals/:id/unarchive.json
Restaurar uma meta arquivada
goals_unarchive
Restaura uma meta arquivada para que volte a aparecer nos relatórios. Ela volta a contar para o limite de metas do plano (10 metas ativas por site no Free), então a chamada falha com um erro de limite de plano quando o site já está cheio. Restaurar uma meta que não está arquivada não faz nada. Retorna a meta com archived false. Os ids vêm de goals_list com status archived. Exige a permissão content.write.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/goals/:id/unarchive.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
PATCH
/sites/:site_id/goals/:id.json
Atualizar uma meta
goals_update
Altera a definição de uma meta. Apenas as entradas enviadas mudam. A nova definição se aplica a todo o histórico imediatamente, então os números de conversão passados vão mudar. As entradas são as mesmas de goals_create, e valem as mesmas combinações: por exemplo, event_name e conditions só importam para metas de evento, e scroll_threshold e time_threshold_seconds só para metas de engajamento. fixed_value é um valor decimal na moeda do site (armazenado em centavos). Enviar conditions substitui todas as condições existentes. Retorna a meta. Os ids vêm de goals_list. Exige a permissão content.write.
Permissão: content.write
curl -X PATCH https://privatusanalytics.com/sites/:site_id/goals/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Migrações de depoimentos
POST
/sites/:site_id/testimonials/imports/migrations/:id/discard.json
Descarte o que uma migração leu
testimonial_migrations_discard
Informe item_ids (ids de testimonial_migrations_review) ou all true para tudo o que ainda espera, nunca os dois. Um item descartado sai da etapa de revisão e o que foi lido sobre a pessoa é apagado. Nenhum depoimento é excluído. Caso contrário, o servidor responde com 422 e o código selection ou unknown_ids.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/imports/migrations/:id/discard.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/imports/migrations.json
Liste as migrações de um site
testimonial_migrations_list
Mais recentes primeiro. Uma migração é um arquivo de exportação de outra ferramenta de depoimentos. Cada uma tem a ferramenta de origem, o seu status e quantos depoimentos foram encontrados, mantidos, duplicados e com falha.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/imports/migrations.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/testimonials/imports/migrations/:id/keep.json
Mantenha o que uma migração leu como depoimentos
testimonial_migrations_keep
Informe item_ids (até 100 por chamada, de testimonial_migrations_review) ou all true, nunca os dois. Cada item mantido vira um depoimento com status pending ou approved, e keep_approval true mantém a aprovação que ele tinha na outra ferramenta. Com all, as prováveis duplicatas ficam de fora, a menos que include_likely_duplicates seja true. Nada que é mantido conta nos depoimentos mensais. O que não é mantido fica na etapa de revisão por 30 dias.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/imports/migrations/:id/keep.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/imports/migrations/:id/review.json
Liste o que uma migração leu e ainda não foi decidido
testimonial_migrations_review
Lista os itens que ainda esperam uma decisão, da execução mais recente para a mais antiga. show é new, duplicates ou all (o padrão), e rating mantém apenas as notas em estrelas listadas. Passe os ids dos itens para testimonial_migrations_keep ou testimonial_migrations_discard.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/imports/migrations/:id/review.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/testimonials/imports/migrations/:id.json
Obtenha o andamento e as contagens de uma migração
testimonial_migrations_get
Retorna a ferramenta de origem do arquivo, o status, quantos depoimentos foram encontrados, mantidos, duplicados e com falha, quantos arquivos de mídia traz e quando começou e terminou. Consulte-o enquanto o status disser que o arquivo ainda está sendo lido.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/imports/migrations/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
Murais de Elogios
POST
/sites/:site_id/testimonials/walls.json
Crie um Mural de Elogios
testimonial_walls_create
Uma página hospedada em https://privatus.page/w/<slug>. O que ficar de fora começa de um padrão: o título Wall of Love, o layout em mosaico, o slug a partir do nome.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/walls.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/testimonials/walls/:id.json
Mova um mural para a lixeira
testimonial_walls_trash
A sua página responde que foi retirada do ar até ser restaurada, e uma cópia incorporada não renderiza nada. Restaurar o traz de volta no mesmo endereço. É excluído de vez após 30 dias. Via MCP, a ferramenta não altera nada e responde com a página do app em que uma pessoa faz isso.
Permissão: content.write
· Somente HTTP (não é uma ferramenta MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/walls/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials/walls/:id/duplicate.json
Copie um mural com um novo nome e endereço
testimonial_walls_duplicate
Faz uma cópia com um novo id, o nome terminando em "copy" e um slug próprio, então ela tem o seu próprio endereço. O original e o seu endereço não são alterados.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/walls/:id/duplicate.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/walls/:id/embed.json
Obtenha o link de um mural e o código para colocá-lo dentro de outra página
testimonial_walls_embed
O endereço público do mural, e os trechos de script, frame e link simples que o colocam dentro de outra página. Os trechos nunca mudam quando o mural é editado.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/walls/:id/embed.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/testimonials/walls.json
Liste os Murais de Elogios de um site
testimonial_walls_list
Todo Mural de Elogios do site que não está na lixeira, com o seu endereço, o que o alimenta e quantos depoimentos exibe. Use q para buscar por nome ou slug e sort para ordenar por nome ou pelos mais novos.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/walls.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/testimonials/walls/:id/restore.json
Restaure um mural da lixeira
testimonial_walls_restore
Tira um mural da lixeira. A sua página volta a responder no mesmo endereço, e toda cópia incorporada volta a exibi-lo sem mudança no código que foi colado.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/walls/:id/restore.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/walls/:id.json
Obtenha um mural com cada configuração
testimonial_walls_get
Tudo o que o construtor guarda: o endereço (/w/<slug>), o cabeçalho e o botão, o layout, o que alimenta o mural, o que cada cartão mostra, o estilo e as configurações para mecanismos de busca. Um mural na lixeira responde com 404.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/walls/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/testimonials/walls/:id.json
Altere um mural
testimonial_walls_update
Só as entradas enviadas mudam. Um slug alterado deixa o endereço antigo redirecionando.
Permissão: content.write
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/walls/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Mídia de depoimentos
POST
/sites/:site_id/testimonials/media/uploads.json
Inicie um envio, ou adicione um arquivo a partir de um endereço web
testimonial_media_uploads_create
Duas formas. Para enviar, passe filename, content_type e byte_size: a resposta traz upload, com a url para onde fazer PUT do arquivo, os cabeçalhos a enviar com ele e, para um arquivo grande, partes que podem ser enviadas uma a uma. Depois chame testimonial_media_uploads_finish. Ou passe source_url e o arquivo é baixado e processado para você: consulte testimonial_media_get até que o seu estado seja ready. Limites: vídeo e áudio até 500 MB e pela duração que o plano permite (2 minutos no Pro, 10 minutos no Business, nenhuma no Free, em que o servidor responde com 402 plan_limit), imagens até 10 MB, um logotipo até 2 MB.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/media/uploads.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/testimonials/media/:id.json
Exclua um arquivo que nenhum depoimento mantém
testimonial_media_delete
Um arquivo que pertence a um depoimento é excluído com o depoimento, pela lixeira. Os arquivos guardados são excluídos e os seus endereços são limpos do cache.
Permissão: content.write
· Somente HTTP (não é uma ferramenta MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/media/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials/media/uploads/:id/finish.json
Diga que um envio está completo, para que o arquivo seja verificado e processado
testimonial_media_uploads_finish
Chame depois que o arquivo foi enviado. O arquivo deve estar no armazenamento de envios e ter exatamente o tamanho prometido. Chamar duas vezes é seguro.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/media/uploads/:id/finish.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials/media/:id/retry.json
Tente de novo um arquivo que falhou
testimonial_media_retry
Processa o arquivo de novo a partir do envio que foi mantido. O envio é mantido por 24 horas depois de uma falha. Depois disso o servidor responde com not_retryable e o arquivo precisa ser enviado de novo.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/media/:id/retry.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/media/:id.json
Obtenha um arquivo com o seu estado e onde carregá-lo
testimonial_media_get
A url é o endereço duradouro do arquivo pronto no host de mídia, e é null até que o estado seja ready. O endereço é o mesmo para todos e não é assinado, então só repasse o endereço de um arquivo cujo campo shareable seja true.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/media/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
Notas
POST
/sites/:site_id/notes.json
Adicionar uma nota a um site (use a origem "deploy" para webhooks de lançamento)
notes_create
Adiciona uma anotação aos gráficos de um site, por exemplo um lançamento, uma campanha ou uma versão. Use workspace_notes_create em vez disso para uma nota que aparece em todos os sites. date assume por padrão hoje no fuso horário do site, e end_date marca um intervalo (YYYY-MM-DD). title é exibido no gráfico, body é texto simples e url pode apontar para um PR ou um changelog. color é uma entre neutral, brand, blue, amber, red ou violet, padrão neutral. source é manual por padrão. As integrações de deploy enviam source deploy, e então title assume por padrão um texto montado a partir de version (uma versão de release ou commit) e color assume por padrão blue. Exige content.write. Retorna a nota criada (veja notes_list para os campos).
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/notes.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/notes/:id.json
Excluir uma nota
notes_delete
Exclui permanentemente uma nota de site, que desaparece dos gráficos e não pode ser restaurada. A nota deve pertencer a este site, as notas de todo o espaço de trabalho são excluídas com workspace_notes_delete. Pegue o id (note_...) em notes_list. Exige content.write. Retorna a nota excluída.
Permissão: content.write
curl -X DELETE https://privatusanalytics.com/sites/:site_id/notes/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/notes.json
Listar notas de um site (incluindo notas de todo o espaço de trabalho)
notes_list
Lista as anotações (notas) exibidas nos gráficos de um site, da data mais recente para a mais antiga e paginadas. Retorna as notas do próprio site mais as notas de todo o espaço de trabalho que valem para todos os sites. Filtre com from e to (YYYY-MM-DD, uma nota corresponde quando sua data cai no intervalo), source (manual, deploy, system, import ou incident) e query (uma pesquisa sem diferenciar maiúsculas e minúsculas em title, body e url). Use workspace_notes_list para a visão do espaço de trabalho em todos os sites. Cada nota tem id (note_...), site_id (o id público do site pa_..., null para uma nota de todo o espaço de trabalho), date, end_date (null para um único dia), title, body (texto simples, pode ser nulo), url (pode ser nulo), color (neutral, brand, blue, amber, red ou violet), source e created_at. Exige analytics.read.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/notes.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/notes/:id.json
Obter uma nota
notes_get
Retorna uma nota pelo id (note_..., de notes_list) para um site, incluindo as notas de todo o espaço de trabalho que valem para o site. Uma nota é uma anotação datada exibida nos gráficos, por exemplo um lançamento, uma campanha ou um deploy. Os campos são id, site_id (null quando vale para todo o espaço de trabalho), date e end_date (YYYY-MM-DD, end_date null para um único dia), title, body (pode ser nulo), url (pode ser nulo), color (neutral, brand, blue, amber, red ou violet), source (manual, deploy, system, import ou incident) e created_at. Exige analytics.read.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/notes/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/notes/:id.json
Editar uma nota
notes_update
Edita uma nota de site, alterando apenas os campos enviados (date, end_date, title, body, url, color). A source não pode ser alterada. Enviar uma url vazia remove o link, e uma date igual a null é ignorada. A nota deve pertencer a este site, as notas de todo o espaço de trabalho são editadas com workspace_notes_update. Pegue o id (note_...) em notes_list. Exige content.write. Retorna a nota atualizada.
Permissão: content.write
curl -X PATCH https://privatusanalytics.com/sites/:site_id/notes/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/workspaces/:workspace_id/notes.json
Adicionar uma nota de todo o espaço de trabalho (exibida em todos os sites)
workspace_notes_create
Adiciona uma anotação para todo o espaço de trabalho que aparece nos gráficos de todos os sites do espaço de trabalho, por exemplo um lançamento da empresa inteira ou uma queda. Ela é criada sem site (site_id é null). Use notes_create para uma nota em um único site. date assume por padrão hoje no fuso horário do espaço de trabalho, end_date marca um intervalo (YYYY-MM-DD), color é uma entre neutral, brand, blue, amber, red ou violet. Exige content.write, e quem tem acesso limitado a alguns sites não pode criar notas de todo o espaço de trabalho. Retorna a nota criada.
Permissão: content.write
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/notes.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/workspaces/:workspace_id/notes/:id.json
Excluir uma nota do espaço de trabalho
workspace_notes_delete
Exclui permanentemente uma nota de todo o espaço de trabalho para que ela desapareça dos gráficos de todos os sites, e ela não pode ser restaurada. Apenas notas sem site podem ser excluídas aqui, use notes_delete para uma nota de site. Pegue o id (note_...) em workspace_notes_list. Exige content.write, e quem tem acesso limitado a alguns sites não pode excluir notas de todo o espaço de trabalho. Retorna a nota excluída.
Permissão: content.write
curl -X DELETE https://privatusanalytics.com/workspaces/:workspace_id/notes/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/workspaces/:workspace_id/notes.json
Listar notas de um espaço de trabalho
workspace_notes_list
Lista as anotações de um espaço de trabalho, da data mais recente para a mais antiga e paginadas. Retorna as notas de todo o espaço de trabalho (que aparecem em todos os sites) mais as notas de cada site que quem chama pode acessar, então confira site_id em cada item (null significa que vale para todo o espaço de trabalho). Use notes_list para um site. Filtre com from e to (YYYY-MM-DD), source (manual, deploy, system, import ou incident) e query (pesquisa em title, body e url). Os campos são id (note_...), site_id, date, end_date, title, body, url, color (neutral, brand, blue, amber, red ou violet), source e created_at. Exige analytics.read.
Permissão: analytics.read
curl https://privatusanalytics.com/workspaces/:workspace_id/notes.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/workspaces/:workspace_id/notes/:id.json
Editar uma nota do espaço de trabalho
workspace_notes_update
Edita uma nota de todo o espaço de trabalho, alterando apenas os campos enviados (date, end_date, title, body, url, color). Apenas notas sem site podem ser editadas aqui, use notes_update para uma nota de site. Pegue o id (note_...) em workspace_notes_list. Exige content.write, e quem tem acesso limitado a alguns sites não pode editar notas de todo o espaço de trabalho. Retorna a nota atualizada.
Permissão: content.write
curl -X PATCH https://privatusanalytics.com/workspaces/:workspace_id/notes/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Painéis
GET
/workspaces/:workspace_id/dashboards/:id/cards/:index.json
Dados de um cartão de um painel personalizado
dashboards_card
Retorna os dados ao vivo de um card de um painel personalizado. Os painéis são listas de cards (veja dashboards_get para a lista de cards) e cada card carrega separadamente, então chame-a uma vez por card, com a posição dele em index, contada a partir de 0. Retorna index, type, title, site_id, site_name, params, status e data. status é ok, not_available (o card não tem nada para mostrar, por exemplo um card de funil em um site sem funis ou um card de uptime sem verificações) ou no_access (o card pertence a um site que seu token ou função não pode abrir, e então title, params e data vêm vazios). O formato de data depende de type. metric dá {metric, value, previous, change, period} comparado com o período anterior. chart dá {metric, interval, period, series: [{date, value}]}. breakdown dá {dimension, label, rows}. goal dá {rows} de conclusões de metas. live dá {visitors}. funnel dá {funnel_id, name, overall_conversion_rate, steps}. uptime dá {checks: [{name, status, uptime}]}. vitals dá {scorecard}. subscriptions dá {currency, mrr_minor, previous_mrr_minor (30 dias atrás), change (porcentagem, null sem MRR 30 dias atrás), active_subscriptions, subscription_churn_rate (últimos 30 dias)} e é not_available enquanto o site não tem provedor de pagamento conectado. Os params do card assumem por padrão period 30d, metric visitors, dimension page e 5 linhas (limit tem teto de 10). Um index fora da lista retorna 404. Use dashboards_get antes para ver quantos cards existem.
Permissão: analytics.read
curl https://privatusanalytics.com/workspaces/:workspace_id/dashboards/:id/cards/:index.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/workspaces/:workspace_id/dashboards.json
Criar um painel personalizado
dashboards_create
Cria um painel personalizado em um espaço de trabalho. Um painel personalizado é uma lista nomeada e ordenada de até 40 cards, e os cards podem vir de sites diferentes do espaço de trabalho. Passe name (até 100 caracteres) e cards, uma lista de objetos com type (metric, chart, breakdown, goal, live, funnel, uptime, vitals ou subscriptions), site_id (pa_..., de sites_list) e, opcionalmente, title (até 80 caracteres) e params. Os params usados por tipo são metric (period, metric), chart (period, metric, interval), breakdown (period, dimension, limit), goal (period, limit), funnel (period, funnel_id), uptime (limit) e vitals (period). live e subscriptions não recebem nenhum. Outros params são descartados. O period deve ser uma predefinição como 30d (não custom) e metric um entre visitors, visits, pageviews, views_per_visit, bounce_rate ou visit_duration. Todo card deve apontar para um site que seu token pode acessar, e um token limitado a alguns sites deve incluir pelo menos um card. Retorna o painel com id (dash_...), name, cards e carimbos de data e hora. Leia-o com dashboards_get e carregue os números de cada card com dashboards_card. Exige a permissão content.write. O plano define quantos painéis um espaço de trabalho tem: 1 no Free, 3 no Pro, ilimitados no Business. Um painel acima da quantidade é recusado com um erro de validação.
Permissão: content.write
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/dashboards.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/workspaces/:workspace_id/dashboards/:id.json
Excluir um painel personalizado
dashboards_delete
Exclui permanentemente um painel personalizado. Apenas o layout do painel é removido, nenhum dado de análise é tocado, e não há como desfazer. Você precisa de acesso a todos os sites que têm um card no painel, e o painel precisa ter pelo menos um card de um site ao qual você tenha acesso. Retorna o painel excluído. Use dashboards_update para alterar um painel em vez disso. Os ids (dash_...) vêm de dashboards_list. Exige a permissão content.write.
Permissão: content.write
curl -X DELETE https://privatusanalytics.com/workspaces/:workspace_id/dashboards/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/workspaces/:workspace_id/dashboards.json
Listar painéis personalizados
dashboards_list
Lista os painéis personalizados de um espaço de trabalho, ordenados por nome. Cada item tem id (dash_...), name, cards e carimbos de data e hora, no mesmo formato de dashboards_get. Um token limitado a alguns sites só vê os painéis que incluem um card de um dos seus sites, e os cards de outros sites são esvaziados para {type, status: no_access}. Paginada com page e per_page (máximo 100). Use dashboards_card para carregar os dados de um card e dashboards_create para adicionar um painel. Para um único site, stats_overview dá o mesmo tipo de números sem um painel.
Permissão: analytics.read
curl https://privatusanalytics.com/workspaces/:workspace_id/dashboards.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/workspaces/:workspace_id/dashboards/:id.json
Obter um painel personalizado e seus cartões
dashboards_get
Retorna um painel personalizado: id (dash_...), name, cards e created_at e updated_at. Cada card é {type, site_id, title, params} (type é metric, chart, breakdown, goal, live, funnel, uptime, vitals ou subscriptions). Um card em um site que você não pode acessar é retornado como {type, status: no_access}, sem outros campos. Isso retorna apenas o layout, não os números. Carregue os números de um card com dashboards_card, usando a posição do card contada a partir de 0. Os ids vêm de dashboards_list. Um painel acima da quantidade do plano (1 no Free, 3 no Pro) é mantido e bloqueado: ele responde 402 plan_limit até o espaço de trabalho fazer upgrade ou excluir outro.
Permissão: analytics.read
curl https://privatusanalytics.com/workspaces/:workspace_id/dashboards/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/workspaces/:workspace_id/dashboards/:id.json
Renomear um painel personalizado ou substituir seus cartões
dashboards_update
Renomeia um painel personalizado e/ou substitui toda a sua lista de cards. Apenas os campos enviados mudam, e name é ignorado quando vazio. Enviar cards substitui todos os cards, então envie a lista completa na ordem desejada, tirada de dashboards_get e editada. O formato do card e os params por tipo são os mesmos de dashboards_create (máximo de 40 cards). Um card exibido como {type, status: no_access} pertence a um site que você não pode abrir. Envie-o de volta sem alterações para mantê-lo, ele não pode ser editado e o último card desse site não pode ser removido. Um token limitado a alguns sites não pode deixar o painel vazio. Retorna o painel atualizado. Exige a permissão content.write.
Permissão: content.write
curl -X PATCH https://privatusanalytics.com/workspaces/:workspace_id/dashboards/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Pedidos de depoimento
POST
/requests/resubscribe/:token.json
Confirme que voltará a receber pedidos de depoimento
testimonial_request_resubscribes_confirm
O POST por trás do botão da página de confirmação. Ele desfaz o cancelamento, então o endereço pode voltar a receber pedidos.
Permissão: public
· Somente HTTP (não é uma ferramenta MCP)
curl -X POST https://privatusanalytics.com/requests/resubscribe/:token.json \
-H "Content-Type: application/json" -d '{…}'
POST
/requests/resubscribe.json
Peça o e-mail que permite a um endereço voltar a receber pedidos
testimonial_request_resubscribes_create
Envia um e-mail de confirmação ao próprio endereço, quando ele tinha cancelado. A resposta é a mesma, tenha ele cancelado ou não.
Permissão: public
· Somente HTTP (não é uma ferramenta MCP)
curl -X POST https://privatusanalytics.com/requests/resubscribe.json \
-H "Content-Type: application/json" -d '{…}'
POST
/requests/unsubscribe/:token.json
Cancele a inscrição de um endereço nos pedidos de depoimento
testimonial_request_unsubscribes_create
O POST por trás do botão da página de cancelamento e o que o botão de cancelamento do próprio app de e-mail chama. O token vem do link no e-mail.
Permissão: public
· Somente HTTP (não é uma ferramenta MCP)
curl -X POST https://privatusanalytics.com/requests/unsubscribe/:token.json \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials/requests.json
Inicie um pedido como rascunho
testimonial_requests_create
Cria um rascunho com o seu e-mail e os seus destinatários. Nada é enviado até testimonial_requests_send. O que ficar de fora começa de um padrão: o e-mail, um lembrete após 5 dias, o nome do site como remetente e você como endereço de resposta. Cada destinatário é guardado como queued, ou como skipped com o motivo.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/requests.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/testimonials/requests/:id.json
Exclua um rascunho
testimonial_requests_delete
Só um pedido que nunca foi enviado pode ser excluído. Um pedido enviado é mantido como registro do e-mail que foi enviado. Via MCP, a ferramenta não altera nada e responde com a página do app em que uma pessoa faz isso.
Permissão: content.write
· Somente HTTP (não é uma ferramenta MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/requests/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials/requests/:id/duplicate.json
Copie um pedido para um novo rascunho
testimonial_requests_duplicate
A cópia tem o mesmo formulário e e-mail, e ainda nenhum destinatário.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/requests/:id/duplicate.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/requests.json
Liste os pedidos de um site
testimonial_requests_list
Mais recentes primeiro, cada um com o seu e-mail e as suas contagens de funil. Filtre por status, formulário ou período.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/requests.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/testimonials/requests/:id/preview.json
Veja um e-mail de um pedido como o seu primeiro destinatário o recebe
testimonial_requests_preview
O remetente, o assunto e o corpo com os campos de mesclagem preenchidos. Nada é enviado. step 0 é o primeiro e-mail, de 1 a 3 são os lembretes.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/requests/:id/preview.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/testimonials/requests/:id/resume.json
Retome um pedido parado
testimonial_requests_resume
Continua de onde parou. Um lembrete que venceu enquanto estava parado é reprogramado a partir de agora, então nada sai em bloco. Isto envia e-mails a pessoas de fora do workspace, então o membro é avisado por e-mail de que um assistente o retomou.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/requests/:id/resume.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials/requests/:id/send.json
Envie um pedido, agora ou em um horário
testimonial_requests_send
Exige confirm_relationship: true. Os destinatários na fila são verificados mais uma vez, depois os primeiros e-mails saem (ou esperam por send_at). Os lembretes vão para as pessoas que não responderam. Os e-mails de pedido são enviados pelo provedor de e-mail do próprio site (Configurações > Envio de e-mails, Business e acima), então um site sem uma conexão funcionando recebe 422 no_email_connection ou email_connection_paused, e outro plano recebe 402 plan_limit. Todo e-mail conta no limite mensal de e-mails de pedido do site (10.000, a menos que definamos outro). No limite nada é descartado: as pessoas continuam na fila e o envio continua no dia 1. Isto envia e-mails a pessoas de fora do workspace, então o membro é avisado por e-mail de que um assistente o enviou.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/requests/:id/send.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials/requests/:id/send_test.json
Envie um e-mail de um pedido para o seu próprio endereço
testimonial_requests_send_test
Vai apenas para o endereço de quem chama, pelo provedor de e-mail do próprio site como os reais (422 no_email_connection sem um). Não tem link pessoal nem contador de aberturas e não conta no limite mensal do site.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/requests/:id/send_test.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/requests/:id.json
Obtenha um pedido com o seu e-mail, lembretes e contagens de funil
testimonial_requests_get
Retorna o e-mail, os lembretes, o status e as contagens de funil (sent, opened, clicked, submitted, bounced, unsubscribed) de um pedido.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/requests/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/testimonials/requests/:id/stop.json
Pare um pedido
testimonial_requests_stop
Cancela de imediato todo e-mail ainda não enviado. Nada do que já foi enviado é afetado, e testimonial_requests_resume continua de onde parou.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/requests/:id/stop.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
PATCH
/sites/:site_id/testimonials/requests/:id.json
Altere o nome, o formulário ou o e-mail de um pedido
testimonial_requests_update
Permitido a qualquer momento. Uma mudança vale para todo e-mail ainda não enviado. Alterar o atraso de um lembrete reprograma os lembretes que estão esperando.
Permissão: content.write
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/requests/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Pedidos de domínio personalizado dos depoimentos
POST
/sites/:site_id/testimonials/settings/custom_domain.json
Peça um domínio personalizado para um mural ou para formulários
testimonial_custom_domain_requests_create
Os domínios personalizados dos depoimentos são configurados à mão pela equipe do Privatus Analytics. Isto guarda o pedido e avisa a equipe, que envia por e-mail o registro DNS a adicionar. O hostname não funciona até que o status do pedido seja active. Business e acima: os outros planos recebem 402 plan_limit.
Permissão: sites.manage
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/settings/custom_domain.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/testimonials/settings/custom_domain.json
Retire um pedido de domínio personalizado, pelo seu hostname
testimonial_custom_domain_requests_delete
Só um pedido que a equipe ainda não começou (status requested) pode ser retirado. Um que está em andamento responde com wrong_state. Via MCP, a ferramenta não altera nada e responde com a página do app em que uma pessoa faz isso.
Permissão: sites.manage
· Somente HTTP (não é uma ferramenta MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/settings/custom_domain.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/settings/custom_domain.json
Liste os pedidos de domínio personalizado de um site
testimonial_custom_domain_requests_list
Todo pedido de um hostname em um mural ou em formulários, os mais novos primeiro, com o seu status. O hostname só funciona quando status é active. Funciona em todos os planos, então pedidos anteriores ainda podem ser lidos.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/settings/custom_domain.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
Pedidos de remoção
POST
/sites/:site_id/testimonials/removal_requests/:id/dismiss.json
Dispense um pedido de remoção
testimonial_removal_requests_dismiss
Encerra o pedido com uma nota e deixa o depoimento onde é exibido. Nada é excluído e nenhum e-mail é enviado à pessoa que pediu. A nota é obrigatória. Um pedido que já foi decidido responde com 422.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/removal_requests/:id/dismiss.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/removal_requests.json
Liste os pedidos de remoção de um site
testimonial_removal_requests_list
Pedidos abertos, a menos que se peça outro status. O e-mail que a pessoa digitou só é devolvido a quem pode alterar conteúdo.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/removal_requests.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/testimonials/removal_requests/:id/resolve.json
Decida um pedido de remoção
testimonial_removal_requests_resolve
trash move o depoimento para a lixeira, o que o tira de todo widget, mural e página pública de uma vez e pode ser desfeito por 30 dias. dismiss o deixa sendo exibido e exige uma nota.
Permissão: content.write
· Somente HTTP (não é uma ferramenta MCP)
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/removal_requests/:id/resolve.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/removal_requests/:id.json
Obtenha um pedido de remoção
testimonial_removal_requests_get
Um pedido com o depoimento a que se refere, a nota que a pessoa deixou, se o e-mail que digitou corresponde ao e-mail do depoimento, quantas vezes pediu e a decisão, quando houver. O e-mail em si só é devolvido a quem tem content.write.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/removal_requests/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
Pesquisas
POST
/sites/:site_id/surveys.json
Criar uma pesquisa
surveys_create
Cria uma pesquisa no site sem cookies para um site. Ela não coleta nada até seu status ser active, então crie-a primeiro como draft ou passe status active para começar na hora. São obrigatórios name (interno, os visitantes nunca o veem, máx. 120 caracteres) e questions (de 1 a 5 linhas em ordem). Cada pergunta é um objeto com key (opcional, um id estável de letras minúsculas, dígitos e sublinhados, gerado quando omitido), kind (text, choice, multi, rating, nps ou yes_no), prompt (obrigatório, máx. 200 caracteres), required (booleano), choices (uma lista de até 10 opções, apenas para choice e multi) e scale (3, 5, 7 ou 10, apenas para rating, padrão 5). O NPS sempre usa de 0 a 10. A segmentação é trigger_kind (immediate, delay, scroll, exit ou manual) com delay_seconds (de 0 a 600, padrão 10, apenas para delay) e scroll_percent (de 1 a 100, padrão 50, apenas para scroll), paths (linhas de match_type exact, prefix ou glob e pattern, vazio significa todas as páginas), devices (desktop, mobile, tablet, vazio significa todos), position (bottom_right, bottom_left ou center), sample_rate (de 1 a 100 por cento dos visitantes), thank_you (máx. 200 caracteres), starts_on e ends_on (YYYY-MM-DD). As pesquisas não podem pedir um endereço de e-mail e as respostas escritas têm os dados pessoais removidos. O plano Free permite 1 pesquisa por espaço de trabalho e um número limitado de respostas por mês, os planos pagos são ilimitados. Exige a permissão content.write. Retorna a pesquisa com id (svy_...). Leia as respostas com surveys_get.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/surveys.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/surveys/:id.json
Excluir uma pesquisa com suas respostas
surveys_delete
Exclui permanentemente uma pesquisa junto com todas as suas respostas. Isso não pode ser desfeito e os resultados se perdem. Use surveys_pause em vez disso se você só quer parar de coletar. O id vem de surveys_list e o site_id é obrigatório. Exige a permissão content.write. Retorna a pesquisa excluída.
Permissão: content.write
· Somente HTTP (não é uma ferramenta MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/surveys/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/surveys.json
Listar as pesquisas de um site com o número de respostas
surveys_list
Lista as pesquisas de um site, das mais recentes para as mais antigas, com suas configurações e contagens de respostas. Filtre com status (draft, active, paused ou all, padrão all). Paginada com page e per_page (padrão 25, até 100). Cada pesquisa tem id (svy_...), name, status, questions, configurações de segmentação, starts_on, ends_on, created_at, updated_at e stats (contagens de responses, completed e this_month). Use surveys_get para as respostas e os resultados de uma pesquisa.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/surveys.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/surveys/:id/pause.json
Parar de coletar respostas e manter as já dadas
surveys_pause
Pausa uma pesquisa para que ela deixe de ser oferecida aos visitantes na hora. As respostas já coletadas são mantidas e exibidas em surveys_get, e surveys_start a retoma. Use-a em vez de surveys_delete quando você só quer parar de coletar. O id vem de surveys_list e o site_id é obrigatório. Exige a permissão content.write. Retorna a pesquisa com status paused.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/surveys/:id/pause.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/surveys/:id.json
Resultados de uma pesquisa em um período, detalhados por pergunta
surveys_get
Retorna o relatório de resultados de uma pesquisa em um período, não apenas suas configurações (use surveys_list para configurações e contagens). Escolha a predefinição period (padrão 30d) ou period custom com from e to. A resposta tem survey (suas configurações), period (from e to como horários ISO 8601), responses (pessoas que responderam pelo menos uma pergunta), completed (pessoas que responderam a última pergunta), questions (uma entrada por pergunta com key, kind, prompt e a contagem de answers, mais o detalhe por tipo) e pages, devices e countries (até 10 linhas cada de value e count). O detalhe por tipo é texts (até 100 respostas escritas mais recentes com text e at) para text, choices (value, count, share como porcentagem com uma casa decimal, offered) para choice, multi e yes_no, average (null sem respostas), scale e distribution para rating, e score (NPS de -100 a 100, null sem respostas), promoters (9 e 10), passives (7 e 8), detractors (0 a 6) e distribution para nps. Use surveys_themes para resumir as respostas escritas.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/surveys/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/surveys/:id/start.json
Começar a coletar respostas
surveys_start
Define uma pesquisa como active para que ela possa ser oferecida aos visitantes. Ela só aparece quando a data atual está entre starts_on e ends_on (quando definidos), a página corresponde aos seus paths e devices, e a cota mensal de respostas do plano não está esgotada. Use-a para uma pesquisa em rascunho ou pausada. O id vem de surveys_list e o site_id é obrigatório. Exige a permissão content.write. Retorna a pesquisa com status active. Pare-a de novo com surveys_pause.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/surveys/:id/start.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/surveys/:id/themes.json
Agrupar as respostas de texto livre de uma pergunta em temas (plano Business)
surveys_themes
Usa IA para agrupar em temas as respostas escritas a uma pergunta de texto livre. Somente no plano Business. Escolha-a depois que surveys_get mostrar uma pergunta de texto com respostas suficientes e passe question_key (a key de uma pergunta do tipo text de surveys_get). Ela exige pelo menos 5 respostas escritas e usa as 300 mais recentes. O resultado lista até 12 temas, cada um com label, count, sentiment (positive, neutral ou negative) e example (uma resposta representativa, pode ser nula), mais answers (quantas respostas foram resumidas) e generated_at. Cada nova geração usa uma pergunta da cota mensal de IA do espaço de trabalho, que é devolvida se ela falhar. O resultado fica em cache em relação às respostas, então chamar de novo sem respostas novas não custa nada. Falha com um erro de validação quando o plano não a inclui, a cota está esgotada, a IA não está configurada ou há respostas de menos.
Permissão: analytics.read
curl -X POST https://privatusanalytics.com/sites/:site_id/surveys/:id/themes.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
PATCH
/sites/:site_id/surveys/:id.json
Atualizar uma pesquisa
surveys_update
Altera uma pesquisa. Apenas as entradas enviadas mudam. As entradas e os limites são os mesmos de surveys_create, com status draft, active ou paused. Quando você envia questions a lista inteira é substituída, então inclua todas as perguntas que quiser manter e mantenha cada key existente para manter as respostas coletadas (reescrever um prompt com a mesma key não divide os resultados). As perguntas que você deixar de fora deixam de aparecer nos resultados. As mudanças na segmentação valem para os visitantes imediatamente. O id vem de surveys_list e o site_id é obrigatório. Exige a permissão content.write. Retorna a pesquisa atualizada.
Permissão: content.write
curl -X PATCH https://privatusanalytics.com/sites/:site_id/surveys/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Pessoas dos depoimentos
POST
/sites/:site_id/testimonials/people/:id/ask_again.json
Inicie um pedido com esta pessoa como único destinatário
testimonial_people_ask_again
Usa o formulário que ela usou por último, ou o formulário inicial. Nada é enviado até que o pedido seja enviado. O servidor responde com 422 e o código no_email, bounced ou unsubscribed quando a pessoa não pode receber o pedido, e requests_unavailable enquanto os pedidos não estiverem disponíveis.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/people/:id/ask_again.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials/people.json
Adicione uma pessoa a um site
testimonial_people_create
name é obrigatório (até 120 caracteres). email nunca é exibido publicamente: ele agrupa depoimentos posteriores sob esta pessoa e permite que o site a pergunte de novo, e um endereço que outra pessoa do site já tem é recusado. avatar_media_id é o id (med_...) de uma imagem já enviada ao site. Adicionar uma pessoa não adiciona nenhum depoimento.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/people.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/testimonials/people/:id/permanent.json
Exclua uma pessoa de vez, com tudo o que ela disse, os arquivos e o histórico de pedidos
testimonial_people_delete_permanently
Para um pedido de apagamento. Isso não pode ser desfeito. Exige confirm, o nome ou o id da pessoa, e deixa uma entrada de auditoria que não contém nem o nome nem as palavras.
Permissão: sites.manage
· Somente HTTP (não é uma ferramenta MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/people/:id/permanent.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/people.json
Liste as pessoas de um site, filtradas e ordenadas
testimonial_people_list
Cada pessoa vem com a sua contagem de depoimentos, quantos estão aprovados, a nota média e o último pedido com o resultado. O e-mail é null, a menos que quem chama tenha content.write, e has_email continua dizendo se há um registrado.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/people.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/testimonials/people/:id/merge.json
Una outros registros da mesma pessoa a este
testimonial_people_merge
A pessoa do caminho permanece. Tudo o que os outros disseram e todo pedido enviado a eles passa para ela, e os outros são removidos. Um campo que esta pessoa tem em branco é preenchido a partir dos outros, do mais antigo ao mais novo, e use nomeia aqueles cujo valor vence em um campo. A resposta traz meta.undo_id, que testimonial_undo_records_undo aceita por 7 dias.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/people/:id/merge.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/people/:id.json
Obtenha uma pessoa com o que lhe foi pedido e as pessoas que parecem ser a mesma
testimonial_people_get
Os depoimentos dela são testimonials_list com person_id. can_ask e cannot_ask_reason dizem se testimonial_people_ask_again seria aceito.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/people/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/testimonials/people/:id.json
Edite uma pessoa. Só os campos enviados mudam
testimonial_people_update
Um valor vazio limpa um campo, exceto o nome. Um e-mail que outra pessoa do site já tem é recusado. A página da empresa em que uma pessoa é listada acompanha o nome e o site da empresa.
Permissão: content.write
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/people/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Planos
GET
/plans.json
Listar planos, preços e limites
plans_list
Lista os planos públicos (free, pro, business e enterprise) com seus limites e faixas de preço, para você escolher valores válidos para billing_checkout, billing_preview e billing_change_plan. Cada plano tem name, events (eventos por mês incluídos, null para planos em faixas ou personalizados), badge_bonus (eventos mensais extras do selo, apenas no Free, caso contrário null), limits (um objeto com os limites do plano, como sites, vagas de membros, retenção do histórico em meses, metas por site, perguntas de IA e requisições de API por hora), tiers (cada uma com eventos por mês e o preço mensal e anual em USD inteiros, incluindo IVA ou imposto sobre vendas) e contact_sales (true para planos personalizados). O objeto meta acrescenta currency, uma observação sobre o preço anual, counted (o que conta como evento cobrável) e not_counted. Para o plano do próprio espaço de trabalho, use billing_get. Pública, sem necessidade de autenticação.
Permissão: public
curl https://privatusanalytics.com/plans.json
Posições de anúncio
POST
/sites/:site_id/experiments/ads.json
Cria uma posição de anúncio
ad_placements_create
Cria um espaço de um tamanho no site. Envie size (um tamanho comum como medium_rectangle ou leaderboard) ou width e height em pixels. key é o nome pelo qual a tag no site a identifica e é gerada a partir do nome quando omitida. Depois adicione criativos com ad_creatives_create e coloque no site a tag de ad_placements_embed. Exige content.write.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/experiments/ads.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/experiments/ads/:id.json
Exclui uma posição de anúncio com seus criativos
ad_placements_delete
Exclui permanentemente uma posição com seus criativos e as imagens deles, seus experimentos de anúncio e os resultados, e seus links de patrocinador. A tag no site então não desenha nada. A ferramenta MCP não a executa e responde com human_only e a página onde uma pessoa a exclui. Exige content.write.
Permissão: content.write
· Somente HTTP (não é uma ferramenta MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/experiments/ads/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/experiments/ads/:id/embed.json
Obtém a tag que mostra uma posição no site
ad_placements_embed
O script carregador (uma vez por página) e o espaço desta posição, como html para colar. O espaço mantém seu tamanho antes de o carregador executar. Exige analytics.read.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/experiments/ads/:id/embed.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/experiments/ads.json
Lista as posições de anúncio de um site com os últimos 30 dias
ad_placements_list
Cada posição com sua chave, tamanho, quantos criativos tem e estatísticas (impressions, viewable impressions, clicks e ctr, a taxa de cliques por impressão visível) nos últimos 30 dias. Exige analytics.read.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/experiments/ads.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/experiments/ads/:id.json
Obtém uma posição com os números de cada criativo
ad_placements_get
A posição, seus criativos com as estatísticas do período (7d, 30d ou 90d) e os números da posição dia a dia. humans_only mantém o que o bot score classifica como provavelmente humano (Pro e superiores). Exige analytics.read.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/experiments/ads/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/experiments/ads/:id.json
Altera uma posição de anúncio
ad_placements_update
Altera o nome, a chave, o tamanho ou o rótulo. Só as entradas enviadas mudam. Uma nova chave precisa da nova tag no site. Exige content.write.
Permissão: content.write
curl -X PATCH https://privatusanalytics.com/sites/:site_id/experiments/ads/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Programa de afiliados
GET
/account/affiliate/commissions.json
Listar suas comissões de afiliado
affiliate_commissions_list
Comissões, estornos por reembolso e chargeback e reversões, das mais recentes para as mais antigas. Os valores estão em centavos.
Permissão: member
curl https://privatusanalytics.com/account/affiliate/commissions.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/account/affiliate/signup-box.json
Obter o código da sua caixa de cadastro de afiliado e os resultados
affiliate_signup_box_get
O código de incorporação da sua caixa de cadastro (um script e um iframe simples) para o tema escolhido, os atributos que preenchem o formulário, os eventos que o script dispara na sua página e os números da caixa: cadastros aguardando confirmação, cadastros confirmados e clientes pagantes. available é false até a sua candidatura de afiliado ser aprovada.
Permissão: member
curl https://privatusanalytics.com/account/affiliate/signup-box.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/account/affiliate.json
Obter seu status de afiliado, link de indicação e estatísticas
affiliate_get
O status da sua candidatura de afiliado, o link de indicação, os cadastros e clientes pagantes que você indicou e os saldos por moeda (em retenção, a pagar, pago). status é none quando você ainda não se candidatou.
Permissão: member
curl https://privatusanalytics.com/account/affiliate.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
Propriedades personalizadas dos depoimentos
POST
/sites/:site_id/testimonials/settings/properties.json
Adicione uma propriedade personalizada a um site
testimonial_properties_create
Um site guarda até 20 propriedades ativas. A chave é fixa depois de criada, porque links de formulário, regras e a API a usam. Deixe-a de fora e ela é sugerida a partir do rótulo.
Permissão: sites.manage
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/settings/properties.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/testimonials/settings/properties/:id.json
Exclua de vez uma propriedade personalizada e os seus valores
testimonial_properties_destroy
Isso não pode ser desfeito. Remove a propriedade e o seu valor de todo depoimento. confirm é a chave. Uma propriedade usada por uma coleção inteligente ou por uma regra de marcação automática não pode ser excluída enquanto estiver em uso. Arquivar é a forma comum de aposentar uma.
Permissão: sites.manage
· Somente HTTP (não é uma ferramenta MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/settings/properties/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/settings/properties.json
Liste as propriedades personalizadas de um site, na ordem de exibição
testimonial_properties_list
Cada uma diz a sua chave, tipo e opções, quantos depoimentos têm um valor (filled), se o seu tipo ainda pode mudar e quais coleções inteligentes e regras de marcação automática a usam.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/settings/properties.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/testimonials/settings/properties/:id.json
Altere, reordene, arquive ou traga de volta uma propriedade personalizada
testimonial_properties_update
Só as entradas que você envia alteram algo. Renomear uma opção a renomeia em todo depoimento que a tem. Uma propriedade usada por uma coleção inteligente ou por uma regra de marcação automática não pode ser arquivada enquanto estiver em uso.
Permissão: sites.manage
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/settings/properties/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Páginas de status
GET
/status/:slug/confirm/:token.json
Confirmar uma inscrição pelo link enviado por e-mail
public_status_pages_confirm
Permissão: public
· Somente HTTP (não é uma ferramenta MCP)
curl https://privatusanalytics.com/status/:slug/confirm/:token.json
GET
/status/:slug.json
Página de status pública: status atual, barras de disponibilidade de 90 dias, incidentes e publicações
public_status_pages_get
Permissão: public
· Somente HTTP (não é uma ferramenta MCP)
curl https://privatusanalytics.com/status/:slug.json
POST
/status/:slug/subscribers.json
Inscrever um endereço de e-mail (confirmação dupla)
public_status_pages_subscribe
Os clientes de navegador enviam um token do Cloudflare Turnstile como `cf-turnstile-response`. As requisições com um token de API não precisam dele.
Permissão: public
· Somente HTTP (não é uma ferramenta MCP)
curl -X POST https://privatusanalytics.com/status/:slug/subscribers.json \
-H "Content-Type: application/json" -d '{…}'
POST
/status/:slug/unsubscribe/:token.json
Cancelar a inscrição com o token enviado por e-mail
public_status_pages_unsubscribe
Permissão: public
· Somente HTTP (não é uma ferramenta MCP)
curl -X POST https://privatusanalytics.com/status/:slug/unsubscribe/:token.json \
-H "Content-Type: application/json" -d '{…}'
POST
/status_pages/:status_page_id/posts.json
Publicar uma atualização de incidente (envia e-mail aos assinantes)
status_page_posts_create
Publica uma atualização de incidente em uma página de status e, por padrão, envia e-mail aos seus assinantes confirmados. Escolha-a para anunciar ou atualizar um incidente, e use status_page_posts_update para fazer avançar um incidente existente (por exemplo, para resolved) em vez de criar uma nova publicação. É obrigatório title (máx. 200 caracteres). status é um entre investigating (padrão), identified, monitoring ou resolved. body é texto simples (máx. 10.000 caracteres), posted_at é um horário ISO 8601 que assume por padrão agora, e notify (padrão true) controla o e-mail. Os e-mails só são enviados para uma página publicada e têm limite de frequência por página, acima do limite a publicação continua publicada mas ninguém recebe e-mail. O status_page_id vem de status_pages_list. Exige a permissão uptime.manage. Retorna a publicação com id (spp_...), title, body, status, posted_at e updated_at.
Permissão: uptime.manage
curl -X POST https://privatusanalytics.com/status_pages/:status_page_id/posts.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/status_pages/:status_page_id/posts/:id.json
Excluir uma publicação da página de status
status_page_posts_delete
Exclui permanentemente uma publicação de incidente de uma página de status. Ela desaparece da página pública na hora e isso não pode ser desfeito. Nenhum e-mail é enviado. O id vem de status_page_posts_list. Exige a permissão uptime.manage. Retorna a publicação excluída.
Permissão: uptime.manage
curl -X DELETE https://privatusanalytics.com/status_pages/:status_page_id/posts/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/status_pages/:status_page_id/posts.json
Listar publicações de uma página de status
status_page_posts_list
Lista as publicações de incidentes de uma página de status, das mais recentes para as mais antigas por posted_at. Use-a para encontrar o id de uma publicação ou ver o histórico de incidentes. Filtre opcionalmente por status (investigating, identified, monitoring ou resolved). Paginada com page e per_page (até 100). Cada publicação tem id (spp_...), title, body (null quando vazio), status, posted_at e updated_at. O status_page_id vem de status_pages_list.
Permissão: analytics.read
curl https://privatusanalytics.com/status_pages/:status_page_id/posts.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/status_pages/:status_page_id/posts/:id.json
Editar uma publicação da página de status
status_page_posts_update
Edita uma publicação de incidente. Apenas as entradas enviadas mudam, então envie só status para resolver um incidente. Os assinantes só recebem e-mail quando o status realmente muda e notify não é false (padrão true). Editar apenas o título ou o corpo não envia e-mail. Os e-mails vão para os assinantes confirmados de uma página publicada e têm limite de frequência por página. Os valores de status válidos são investigating, identified, monitoring e resolved. O id vem de status_page_posts_list. Exige a permissão uptime.manage. Retorna a publicação atualizada.
Permissão: uptime.manage
curl -X PATCH https://privatusanalytics.com/status_pages/:status_page_id/posts/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/status_pages/:status_page_id/subscribers/:id.json
Remover um assinante
status_page_subscribers_delete
Remove um assinante de e-mail de uma página de status para que ele pare de receber e-mails de incidentes e de disponibilidade. Isso não pode ser desfeito, mas a pessoa pode se inscrever de novo na página pública. O id é o id do assinante de status_page_subscribers_list (um UUID simples, não um id com prefixo). Exige a permissão uptime.manage. Retorna o assinante removido.
Permissão: uptime.manage
curl -X DELETE https://privatusanalytics.com/status_pages/:status_page_id/subscribers/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/status_pages/:status_page_id/subscribers.json
Listar assinantes de uma página de status
status_page_subscribers_list
Lista os assinantes de e-mail de uma página de status, ordenados por e-mail. Use confirmed true para ver apenas as pessoas que confirmaram o endereço (só elas recebem e-mails) ou confirmed false para as pendentes. Paginada com page e per_page (até 100). Cada item tem id (um UUID, usado por status_page_subscribers_delete), email, confirmed_at (null enquanto pendente) e created_at. O status_page_id vem de status_pages_list. Exige a permissão uptime.manage e retorna dados pessoais (endereços de e-mail). Exige o plano Business ou Enterprise (caso contrário, 402 plan_limit).
Permissão: uptime.manage
curl https://privatusanalytics.com/status_pages/:status_page_id/subscribers.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/workspaces/:workspace_id/status_pages.json
Criar uma página de status
status_pages_create
Cria uma página de status pública para um espaço de trabalho que mostra verificações de disponibilidade escolhidas, publicações de incidentes e uma inscrição por e-mail. É obrigatório name (máx. 100 caracteres). slug (letras minúsculas, dígitos e hifens, único entre todos os espaços de trabalho) é derivado do nome por padrão e a página é servida em /status/<slug>. check_ids lista as verificações de disponibilidade a mostrar (ids upc_... de uptime_checks_list) e só são aceitas verificações criadas com public true. published assume por padrão true, então a página fica visível para todos imediatamente. A identidade visual opcional é description (máx. 2.000 caracteres), logo_url (deve ser https), brand_color (hex como #06755b) e custom_domain (um hostname para o qual você aponta um CNAME ao app, único). Use status_page_posts_create para publicar incidentes depois. Exige a permissão uptime.manage. Retorna a página com id (sp_...), slug, check_ids e subscribers (quantidade de assinantes confirmados). O plano define quantas páginas um espaço de trabalho tem: nenhuma no Free (402 plan_limit), 1 no Pro e 10 no Business. Um custom_domain e assinantes por e-mail exigem o plano Business ou Enterprise. As páginas acima da quantidade do plano são mantidas e ficam fora do ar.
Permissão: uptime.manage
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/status_pages.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/status_pages/:id.json
Excluir uma página de status
status_pages_delete
Exclui permanentemente uma página de status junto com todas as suas publicações de incidentes e assinantes. A página pública e seu domínio personalizado param de funcionar na hora e isso não pode ser desfeito. As próprias verificações de disponibilidade não são excluídas. O id vem de status_pages_list. Exige a permissão uptime.manage. Retorna a página excluída.
Permissão: uptime.manage
curl -X DELETE https://privatusanalytics.com/status_pages/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/workspaces/:workspace_id/status_pages.json
Listar páginas de status
status_pages_list
Lista as páginas de status de um espaço de trabalho ordenadas por nome. Use query para corresponder a parte de um nome ou slug. Quando quem chama é limitado a alguns sites, apenas as páginas cujas verificações estão todas dentro desses sites são retornadas. Paginada com page e per_page (até 100). Cada item tem os campos descritos em status_pages_get. Exige o workspace_id de workspaces_list.
Permissão: analytics.read
curl https://privatusanalytics.com/workspaces/:workspace_id/status_pages.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/status_pages/:id.json
Obter uma página de status
status_pages_get
Retorna uma página de status com suas configurações. Os campos são id (sp_...), workspace_id, name, slug, custom_domain (null quando não há), description, logo_url, brand_color, published, check_ids (ids das verificações de disponibilidade exibidas na página), subscribers (quantidade de assinantes de e-mail confirmados) e created_at. Use status_page_posts_list para seus incidentes e status_page_subscribers_list para as pessoas. O id vem de status_pages_list.
Permissão: analytics.read
curl https://privatusanalytics.com/status_pages/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/status_pages/:id.json
Alterar uma página de status
status_pages_update
Altera uma página de status. Apenas as entradas enviadas mudam, então envie só published false para tirar a página do ar ou check_ids para substituir as verificações exibidas (a lista inteira é substituída, não mesclada). As entradas e seus limites são os mesmos de status_pages_create. Envie custom_domain como uma string vazia para remover o domínio personalizado. Só podem ser exibidas verificações com public true, e quem tem acesso limitado a alguns sites só pode colocar em uma página verificações desses sites. O id vem de status_pages_list. Exige a permissão uptime.manage. Retorna a página atualizada.
Permissão: uptime.manage
curl -X PATCH https://privatusanalytics.com/status_pages/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Rastreamento
POST
/sites/:site_id/tracking/ingest_key.json
Criar ou trocar a chave de logs de crawlers (exibida uma única vez)
tracking_ingest_key_rotate
Cria uma nova chave secreta de logs de crawlers (que começa com pik_) para um site e substitui qualquer chave existente. A chave autentica o envio de logs de acesso do servidor para o relatório de crawlers de IA (POST /api/logs). Use-a tanto para criar a primeira chave quanto para rotacioná-la. A nova chave funciona na hora e a antiga para de funcionar na hora, então implante a nova chave logo para evitar 401 nos envios de logs. A chave completa é retornada apenas nesta resposta, no campo key, então guarde-a em um cofre de segredos. Depois disso apenas um prefixo curto é mantido e exibido (prefix aqui, ingest_key_prefix no site). Retorna site_id, key e prefix. Exige sites.manage. Use tracking_ingest_key_revoke para remover a chave sem substituí-la.
Permissão: sites.manage
· Somente HTTP (não é uma ferramenta MCP)
curl -X POST https://privatusanalytics.com/sites/:site_id/tracking/ingest_key.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/tracking/ingest_key.json
Revogar a chave de logs de crawlers
tracking_ingest_key_revoke
Remove a chave de logs de crawlers de um site. A partir daí, todo envio de logs feito com essa chave é rejeitado com 401 até você criar uma nova com tracking_ingest_key_rotate. O rastreamento no navegador com o id público do site não é afetado. A chave não pode ser restaurada. Exige sites.manage. Retorna o objeto do site (veja sites_get), em que ingest_key_prefix agora é null.
Permissão: sites.manage
· Somente HTTP (não é uma ferramenta MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/tracking/ingest_key.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/tracking/verify.json
Verificar se o rastreador está instalado no site (tag de script, id do site, CSP e política de referenciador)
tracking_verify
Busca a página do site e verifica se o script de rastreamento do Privatus Analytics está instalado corretamente, e marca o site como verificado quando o script com o id deste site é encontrado. Por padrão ela requisita a página inicial (https://domain/) e url pode indicar outra página, mas apenas no próprio domínio do site, em domínios extras ou em seus subdomínios. O resultado (em data) tem url, status (status HTTP), script_found, site_ids (todos os ids data-site encontrados na página), installed (true quando o id deste site está entre eles), csp e csp_ok (se a Content-Security-Policy da página permite que o rastreador carregue e envie), referrer_policy e referrer_ok (uma política no-referrer faz toda visita aparecer como direta) e checked_at. Ela busca pela internet pública, lê no máximo 2 MB e tem limite de frequência por espaço de trabalho e por host, então responde 429 quando chamada com muita frequência. Se a página estiver inacessível, retorna um erro de validação. Use sites_setup_get para ver se já chegaram eventos. Exige sites.manage.
Permissão: sites.manage
curl -X POST https://privatusanalytics.com/sites/:site_id/tracking/verify.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/tracking/snippet.json
Montar o snippet de rastreamento para as opções escolhidas
tracking_snippet
Monta a tag de script HTML para instalar o rastreamento em um site e a retorna com o id do site como data.site_id e data.snippet. Escolha-a em vez de sites_setup_get quando precisar personalizá-la, e use tracking_verify depois para verificar a página ao vivo. Por padrão todos os módulos do rastreador são carregados e as visualizações de página são automáticas. modules restringe a um subconjunto entre engage (tempo e rolagem), auto (links externos, downloads, formulários, 404), vitals (Web Vitals), clicks (mapas de cliques) e ask (pesquisas no site). manual true desativa a visualização de página automática para você enviá-las por conta própria. spa define o rastreamento de navegação de aplicativos de página única como auto, history, hash ou off. domains limita o rastreamento a esses hostnames, exclude lista globs de caminhos a ignorar, query_params lista parâmetros de consulta extras a manter e mask lista máscaras de caminho do lado do cliente escritas como /u/*->/u/:id. Nada é salvo, o snippet é gerado a partir das entradas a cada vez. Exige analytics.read.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/tracking/snippet.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
Recompensas
POST
/sites/:site_id/testimonials/settings/rewards/:id/copy.json
Copie a recompensa de um formulário para outros formulários do mesmo site
testimonial_rewards_copy
Copia o título, o texto, o código e o estado ligado ou desligado da recompensa deste formulário para cada formulário em form_ids (1 a 100 formulários do mesmo site, fora da lixeira). Uma recompensa que o formulário de destino já tem é substituída. O servidor responde com 422 e o código unknown_ids quando um id não é de um formulário do site, e então nada é copiado.
Permissão: sites.manage
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/settings/rewards/:id/copy.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/settings/rewards.json
Liste a recompensa de cada formulário de um site
testimonial_rewards_list
Uma linha por formulário. Um formulário sem recompensa definida tem enabled false.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/settings/rewards.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/testimonials/settings/rewards/:id.json
Defina a recompensa que um formulário mostra na etapa de agradecimento
testimonial_rewards_update
O id é o id do formulário. O código é um texto que você fornece. O Privatus Analytics não o cria, não o verifica nem o expira.
Permissão: sites.manage
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/settings/rewards/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Regras de canal
POST
/sites/:site_id/channel_rules.json
Adicionar uma regra de canal
channel_rules_create
Adiciona uma regra de canal personalizada no fim da lista, de modo que ela roda depois de todas as regras existentes e a taxonomia integrada só se aplica quando nenhuma regra corresponde. channel é o nome a atribuir (até 32 caracteres, por exemplo Partners). conditions é uma lista não vazia de objetos com field (referrer_host, utm_source, utm_medium, utm_campaign, ref ou path), operator (is, contains, starts_with ou regex) e value. Todas as condições devem corresponder para a regra se aplicar, e a correspondência não diferencia maiúsculas e minúsculas. Uma condição com valor em branco é descartada, e uma regra que fique sem condições é rejeitada. Uma regex que não compila é rejeitada. A regra se aplica às novas visitas em poucos minutos e não altera o histórico. Use channel_rules_move para reordenar e channel_rules_preview para testá-la. Exige sites.manage.
Permissão: sites.manage
curl -X POST https://privatusanalytics.com/sites/:site_id/channel_rules.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/channel_rules/:id.json
Excluir uma regra de canal
channel_rules_delete
Exclui uma regra de canal personalizada, encontrada pelo id em channel_rules_list. As visitas que ela já classificou mantêm seu canal, e as novas visitas passam para a próxima regra correspondente ou para a taxonomia integrada. As demais regras mantêm a ordem. Retorna a regra excluída. Exige sites.manage.
Permissão: sites.manage
curl -X DELETE https://privatusanalytics.com/sites/:site_id/channel_rules/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/channel_rules.json
Listar regras de canal em ordem
channel_rules_list
Lista as regras de canal personalizadas de um site na ordem de avaliação (posição 1 primeiro). As regras rodam de cima para baixo para cada nova visita, e a primeira regra cujas condições correspondem todas decide o canal. Uma visita que não corresponde a nenhuma regra recebe o canal integrado (direct, organic_search, paid_search, email e assim por diante). Cada regra tem id (um UUID), channel (o nome que ela atribui), position (a partir de 1), conditions (uma lista de objetos field, operator e value, que devem corresponder todos) e created_at. As regras afetam apenas visitas registradas depois que a regra existe e nunca reescrevem dados antigos. Use channel_rules_preview para testar uma visita de exemplo. Exige analytics.read.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/channel_rules.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/channel_rules/:id/move.json
Mover uma regra de canal para cima ou para baixo
channel_rules_move
Move uma regra de canal dentro da ordem de avaliação, porque a primeira regra correspondente vence e a ordem decide qual canal uma visita recebe. direction é up ou down (uma posição), ou top ou bottom (até as extremidades). Uma regra que já está na extremidade fica onde está, sem erro. As posições são renumeradas de 1 a n e a regra atualizada é retornada com sua nova posição. Use channel_rules_list antes para ver a ordem atual. Exige sites.manage.
Permissão: sites.manage
curl -X PATCH https://privatusanalytics.com/sites/:site_id/channel_rules/:id/move.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/channel_rules/preview.json
Pré-visualizar o canal para um referenciador e tags UTM de exemplo
channel_rules_preview
Simulação que informa qual canal uma visita de exemplo receberia com as regras atuais do site. Nada é armazenado. Envie qualquer um entre referrer (uma URL ou um hostname simples, os prefixos www e m são ignorados), utm_source, utm_medium, utm_campaign, ref, path (caminho de entrada, como /pricing) e paid_click (true se a URL trazia um id de clique como gclid). O resultado tem channel (o nome do canal vencedor), custom_rule (true quando uma regra personalizada decidiu, false quando foi a taxonomia integrada) e referrer_host (o hostname limpo usado na correspondência). Um referenciador nos próprios domínios do site conta como interno. Use-a após channel_rules_create ou channel_rules_move para confirmar o efeito. Exige analytics.read.
Permissão: analytics.read
curl -X POST https://privatusanalytics.com/sites/:site_id/channel_rules/preview.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
PATCH
/sites/:site_id/channel_rules/:id.json
Alterar uma regra de canal
channel_rules_update
Altera uma regra de canal personalizada, encontrada pelo id em channel_rules_list. Envie channel para renomear o canal que ela atribui e conditions para substituir a lista inteira de condições (a lista é substituída, não mesclada, então envie todas as condições que quiser manter). As entradas omitidas ficam como estão. Os campos das condições, os operadores e a validade da regex são verificados da mesma forma que em channel_rules_create. A alteração se aplica apenas às novas visitas. Para mudar a ordem, use channel_rules_move. Exige sites.manage.
Permissão: sites.manage
curl -X PATCH https://privatusanalytics.com/sites/:site_id/channel_rules/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Regras de tráfego
POST
/sites/:site_id/traffic_rules.json
Adicionar uma regra de tráfego
traffic_rules_create
Adiciona um padrão a uma das listas de bloqueio ou permissão do site. list é uma entre hostnames, paths, referrers, countries, ip_ranges, user_agents ou events. pattern usa * como curinga e a correspondência não diferencia maiúsculas e minúsculas, por exemplo /admin/*, um hostname, um host de referenciador como spam.example, um código de país de duas letras (armazenado em maiúsculas), o nome de um navegador com a versão principal, já que o user agent é reduzido (por exemplo Chrome 120), ou o nome de um evento personalizado. ip_ranges aceitam um endereço IPv4 ou IPv6 ou CIDR (203.0.113.0/24), que deve ser válido. Um padrão pode existir uma vez por lista, e um site pode ter até 500 regras. Se a lista bloqueia ou permite quem corresponde depende do seu modo, que assume por padrão block e é alterado com sites_update. Os acessos correspondentes são descartados na coleta e não são armazenados, e a regra se aplica em poucos minutos apenas aos novos acessos. Exige sites.manage. Exige o plano Pro ou acima (caso contrário, 402 plan_limit).
Permissão: sites.manage
curl -X POST https://privatusanalytics.com/sites/:site_id/traffic_rules.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/traffic_rules/:id.json
Excluir uma regra de tráfego
traffic_rules_delete
Exclui uma regra de tráfego, encontrada pelo id em traffic_rules_list. Os acessos que ela descartava voltam a ser contados a partir daí, e os acessos já descartados se perderam de vez. Observe que excluir o último padrão de uma lista em modo allow faz essa lista deixar de filtrar. Retorna a regra excluída. Exige sites.manage.
Permissão: sites.manage
curl -X DELETE https://privatusanalytics.com/sites/:site_id/traffic_rules/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/traffic_rules.json
Listar regras de tráfego
traffic_rules_list
Lista as regras de tráfego do site, que são listas de bloqueio ou permissão aplicadas na hora da coleta para decidir quais acessos contam. Cada regra tem id (um UUID para atualizar e excluir), list (hostnames, paths, referrers, countries, ip_ranges, user_agents ou events), pattern, label (observação opcional), mode (block ou allow, o modo dessa lista inteira) e created_at. No modo block, um acesso que corresponde a qualquer padrão da lista é descartado, no modo allow um acesso que não corresponde a nenhum é descartado, e uma lista vazia não filtra nada. Filtre com list. O modo de uma lista não é definido aqui, mas com sites_update usando traffic_rule_modes. Use traffic_rules_test para conferir um acesso de exemplo. Exige analytics.read.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/traffic_rules.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/traffic_rules/test.json
Testar se um hit seria contado com as regras atuais do site
traffic_rules_test
Simulação que informa se um acesso de exemplo seria contado com as regras de tráfego atuais do site. Nada é armazenado. Envie qualquer um entre url (uma URL de página completa, seu host e caminho são verificados), referrer (URL ou hostname), country (código de duas letras), ip (verificado contra ip_ranges, nunca armazenado), user_agent (uma string User-Agent completa, reduzida a navegador e versão principal) e event (o nome de um evento personalizado). Os valores que você omitir não são verificados. O resultado tem counted (true se o acesso seria registrado), blocked_by (a lista que o descartou, ou null), mode (block ou allow para essa lista, ou null) e values (os valores normalizados que foram verificados). As regras são lidas ao vivo, então uma nova regra aparece na hora. Exige analytics.read. Exige o plano Pro ou acima (caso contrário, 402 plan_limit).
Permissão: analytics.read
curl -X POST https://privatusanalytics.com/sites/:site_id/traffic_rules/test.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
PATCH
/sites/:site_id/traffic_rules/:id.json
Alterar uma regra de tráfego
traffic_rules_update
Altera o padrão ou o rótulo de uma regra de tráfego, encontrada pelo id em traffic_rules_list. Apenas as entradas enviadas mudam. A lista não pode ser alterada, exclua e recrie a regra para movê-la para outra lista. O padrão deve continuar válido para a sua lista (um CIDR para ip_ranges) e único dentro dela. Envie um label vazio para limpá-lo. Vale apenas para os novos acessos. Exige sites.manage. Exige o plano Pro ou acima (caso contrário, 402 plan_limit).
Permissão: sites.manage
curl -X PATCH https://privatusanalytics.com/sites/:site_id/traffic_rules/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Relatório de patrocinador
GET
/sponsor/:token.json
Um relatório de patrocinador, pelo token do link
ad_reports_get
Permissão: public
· Somente HTTP (não é uma ferramenta MCP)
curl https://privatusanalytics.com/sponsor/:token.json
Relatórios de patrocinador
POST
/sites/:site_id/experiments/ads/:ad_placement_id/reports.json
Cria um link de relatório de patrocinador para uma posição
ad_report_links_create
Um link somente leitura para os números da posição, para todos os criativos dela ou os listados em creative_ids, para alguém sem conta. Via MCP o membro recebe um e-mail avisando que um link foi criado. Pro e superiores. Exige content.write. Retorna o link com sua url.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/experiments/ads/:ad_placement_id/reports.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/experiments/ads/:ad_placement_id/reports/:id.json
Exclui um link de relatório de patrocinador
ad_report_links_delete
O endereço deixa de funcionar na hora. A ferramenta MCP não a executa e responde com human_only e a página onde uma pessoa o exclui. Exige content.write.
Permissão: content.write
· Somente HTTP (não é uma ferramenta MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/experiments/ads/:ad_placement_id/reports/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/experiments/ads/:ad_placement_id/reports.json
Lista os links de relatório de patrocinador de uma posição
ad_report_links_list
Os links, com seu endereço e quando expiram. Exige analytics.read.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/experiments/ads/:ad_placement_id/reports.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
Relatórios por e-mail
DELETE
/recipients/:id.json
Remover um destinatário de um relatório por e-mail
email_report_recipients_delete
Remove um endereço de um relatório por e-mail (id do destinatário, de email_report_recipients_list). O endereço deixa de receber relatórios e sua linha é excluída. Se o endereço tinha cancelado a inscrição por conta própria, a recusa continua registrada, então removê-lo não permite que alguém o convide de novo. Para alterar muitos endereços de uma vez, envie a lista completa por email_reports_update. Retorna o destinatário removido.
Permissão: content.write
curl -X DELETE https://privatusanalytics.com/recipients/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/reports/:report_id/recipients.json
Listar os destinatários de um relatório por e-mail com o status de cada um
email_report_recipients_list
Status: active (recebe relatórios), pending (convidado, ainda não aceitou), declined ou unsubscribed. Adicione ou remova endereços pela lista de destinatários do relatório.
Permissão: analytics.read
curl https://privatusanalytics.com/reports/:report_id/recipients.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/recipients/:id/resend.json
Reenviar um convite de relatório pendente
email_report_recipients_resend
Envia o convite de novo com links novos. Permitido uma vez a cada 7 dias por endereço e por relatório.
Permissão: content.write
curl -X POST https://privatusanalytics.com/recipients/:id/resend.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/workspaces/:workspace_id/reports.json
Criar um relatório por e-mail
email_reports_create
Cria um relatório de análises agendado por e-mail que cobre um ou mais sites (o caminho recebe workspace_id). São obrigatórios name e site_ids (ids pa_...). frequency é daily, weekly (padrão, enviado em um dia útil) ou monthly (no dia 1 do mês), hour é a hora do dia de 0 a 23 no fuso horário do espaço de trabalho (padrão 8) e weekday vai de 0 para domingo a 6 para sábado (padrão 1, usado apenas por relatórios semanais). blocks escolhe o conteúdo entre kpis, chart, pages, sources, goals, campaigns, vitals, uptime, testimonials e subscriptions (padrão kpis, chart, pages, sources, goals, testimonials, subscriptions). subscriptions mostra o MRR e o que o moveu no período, para um site com provedor de pagamento conectado. recipients é uma lista de endereços de e-mail (até 50). Os membros do espaço de trabalho ficam ativos na hora, qualquer outro endereço fica pendente e recebe um e-mail de convite, e só recebe relatórios depois de aceitá-lo. Endereços que optaram por sair são recusados. Se recipients for omitido, o usuário que chama é adicionado. Um relatório ativado precisa de pelo menos um destinatário. O plano Free permite 3 relatórios, os planos pagos são ilimitados. Retorna o relatório com next_run_at. Use email_reports_send_test para visualizá-lo.
Permissão: content.write
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/reports.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/reports/:id/deliveries.json
Log de entregas de um relatório por e-mail
email_reports_deliveries
Lista o log de envios de um relatório por e-mail, dos mais recentes para os mais antigos e paginados. Cada entrada tem status (sent para um envio agendado, test, failed ou skipped), recipients_count, error (o motivo de uma falha, caso contrário null) e sent_at. Filtre com status. Use-a para confirmar que um relatório agendado foi enviado ou para ver por que falhou. Use email_reports_send_test para disparar um e-mail de teste.
Permissão: analytics.read
curl https://privatusanalytics.com/reports/:id/deliveries.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
DELETE
/reports/:id.json
Excluir um relatório por e-mail
email_reports_delete
Exclui permanentemente um relatório por e-mail junto com seus destinatários e o log de envios. Isso não pode ser desfeito e nenhum outro e-mail é enviado. Para parar de enviar mas manter o relatório, use email_reports_update com enabled false. O id (rep_...) vem de email_reports_list. Retorna o relatório excluído.
Permissão: content.write
curl -X DELETE https://privatusanalytics.com/reports/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/workspaces/:workspace_id/reports.json
Listar relatórios por e-mail
email_reports_list
Lista os relatórios por e-mail agendados de um espaço de trabalho (o caminho recebe workspace_id), ordenados por nome e paginados. Cada relatório tem id (rep_...), name, site_ids, frequency, hour, weekday, recipients (todos os endereços do relatório), recipient_details (id, email, status, invited_at, expires_at, confirmed_at de cada um), blocks, attach_pdf, intro, enabled, last_sent_at, next_run_at e created_at. Filtre por frequency (daily, weekly ou monthly). Quem tem acesso limitado a alguns sites só vê relatórios cujos sites são todos seus. Apenas destinatários com status active realmente recebem relatórios. Use email_reports_deliveries para o log de envios.
Permissão: analytics.read
curl https://privatusanalytics.com/workspaces/:workspace_id/reports.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/reports/:id/send_test.json
Enviar um relatório por e-mail agora como teste
email_reports_send_test
Envia o relatório para um endereço agora mesmo como teste, sem alterar o agendamento nem last_sent_at. Envia um e-mail de verdade, então use-a apenas quando o usuário quiser isso. recipient assume por padrão o usuário que chama e só pode ser quem chama, outro membro do espaço de trabalho ou um destinatário ativo do relatório. Para qualquer outro endereço, o teste vai para quem chama. Os envios de teste têm limite de frequência por espaço de trabalho e por endereço externo, e um envio recusado retorna um erro de limite de frequência. Retorna a entrega com status (test, ou failed com o motivo em error), recipients_count e sent_at. Use email_reports_deliveries para o log completo.
Permissão: content.write
curl -X POST https://privatusanalytics.com/reports/:id/send_test.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/reports/:id.json
Obter um relatório por e-mail
email_reports_get
Retorna um relatório por e-mail pelo id (rep_..., de email_reports_list). A resposta tem name, site_ids, frequency, hour, weekday, recipients, recipient_details com cada endereço e seu status de adesão, blocks, attach_pdf, intro, enabled, last_sent_at e next_run_at (carimbos de data e hora em UTC). recipients lista todos os endereços, incluindo os pendentes, e apenas os endereços com status active em recipient_details recebem relatórios. Use email_reports_deliveries para ver o que foi enviado.
Permissão: analytics.read
curl https://privatusanalytics.com/reports/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/reports/:id.json
Atualizar um relatório por e-mail
email_reports_update
Altera um relatório por e-mail (id de email_reports_list). Apenas as entradas enviadas mudam. Enviar recipients substitui a lista inteira. Os endereços que você tirar são removidos, os novos seguem as mesmas regras de adesão de email_reports_create (os membros ficam ativos na hora, os demais recebem um e-mail de convite) e os endereços que já estão no relatório mantêm o status. Alterar frequency, hour, weekday ou enabled recalcula next_run_at. Defina enabled como false para pausar. Use email_report_recipients_list para ver o status de adesão e email_report_recipients_resend ou email_report_recipients_delete para gerenciar endereços individuais.
Permissão: content.write
curl -X PATCH https://privatusanalytics.com/reports/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/reports/invites/:token/accept.json
Aceitar um convite de relatório
report_invites_accept
Permissão: public
· Somente HTTP (não é uma ferramenta MCP)
curl -X POST https://privatusanalytics.com/reports/invites/:token/accept.json \
-H "Content-Type: application/json" -d '{…}'
POST
/reports/invites/:token/decline.json
Recusar um convite de relatório
report_invites_decline
Permissão: public
· Somente HTTP (não é uma ferramenta MCP)
curl -X POST https://privatusanalytics.com/reports/invites/:token/decline.json \
-H "Content-Type: application/json" -d '{…}'
POST
/reports/resubscribe/:token.json
Voltar a receber relatórios depois de cancelar a inscrição
report_resubscribes_confirm
Permissão: public
· Somente HTTP (não é uma ferramenta MCP)
curl -X POST https://privatusanalytics.com/reports/resubscribe/:token.json \
-H "Content-Type: application/json" -d '{…}'
POST
/reports/unsubscribe/:token/resubscribe.json
Enviar a um endereço um link para voltar a receber relatórios
report_resubscribes_create
Permissão: public
· Somente HTTP (não é uma ferramenta MCP)
curl -X POST https://privatusanalytics.com/reports/unsubscribe/:token/resubscribe.json \
-H "Content-Type: application/json" -d '{…}'
POST
/reports/unsubscribe/:token.json
Cancelar a inscrição de um endereço em um relatório por e-mail
report_unsubscribes_create
Permissão: public
· Somente HTTP (não é uma ferramenta MCP)
curl -X POST https://privatusanalytics.com/reports/unsubscribe/:token.json \
-H "Content-Type: application/json" -d '{…}'
SCIM
POST
/scim/v2/Users.json
Provisionar um usuário
scim_users_create
Permissão: public
· Somente HTTP (não é uma ferramenta MCP)
curl -X POST https://privatusanalytics.com/scim/v2/Users.json \
-H "Content-Type: application/json" -d '{…}'
DELETE
/scim/v2/Users/:id.json
Desprovisionar um usuário
scim_users_delete
Permissão: public
· Somente HTTP (não é uma ferramenta MCP)
curl -X DELETE https://privatusanalytics.com/scim/v2/Users/:id.json \
-H "Content-Type: application/json" -d '{…}'
GET
/scim/v2/Users.json
Listar usuários provisionados
scim_users_list
Permissão: public
· Somente HTTP (não é uma ferramenta MCP)
curl https://privatusanalytics.com/scim/v2/Users.json
GET
/scim/v2/Users/:id.json
Obter um usuário provisionado
scim_users_get
Permissão: public
· Somente HTTP (não é uma ferramenta MCP)
curl https://privatusanalytics.com/scim/v2/Users/:id.json
PATCH
/scim/v2/Users/:id.json
Atualizar um usuário (PATCH active, name)
scim_users_update
Permissão: public
· Somente HTTP (não é uma ferramenta MCP)
curl -X PATCH https://privatusanalytics.com/scim/v2/Users/:id.json \
-H "Content-Type: application/json" -d '{…}'
SSO
POST
/workspaces/:workspace_id/sso/activate.json
Ativar uma configuração de SSO testada
sso_activate
Ativa o SSO para o espaço de trabalho. A configuração já deve ter status tested, o que acontece depois de um login de teste bem-sucedido (iniciado na página de configurações de SSO do espaço de trabalho no app, ele exige login no navegador e não pode ser executado daqui), ou já estar active. Apenas no plano Business. Depois da ativação, os membros podem entrar com SSO, e definir enforced por sso_update passa a exigir SSO em todo login. Falha quando a configuração não foi testada ou quando o plano não tem SSO. Exige workspace.manage. Retorna a configuração com status active (veja sso_get).
Permissão: workspace.manage
· Somente HTTP (não é uma ferramenta MCP)
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/sso/activate.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/workspaces/:workspace_id/sso/deactivate.json
Desativar o SSO (volta para rascunho)
sso_deactivate
Desativa o SSO devolvendo a configuração para draft e limpando enforced, de modo que os membros voltam aos outros métodos de login do espaço de trabalho. Os detalhes do provedor são mantidos. Reativar exige um novo login de teste e sso_activate. Antes, certifique-se de que os membros têm outra forma de entrar. Funciona em qualquer plano. Exige workspace.manage. Retorna a configuração com status draft (veja sso_get).
Permissão: workspace.manage
· Somente HTTP (não é uma ferramenta MCP)
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/sso/deactivate.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/workspaces/:workspace_id/sso/scim_token.json
Gerar um novo token SCIM (exibido uma única vez)
sso_scim_token
Permissão: workspace.manage
· Somente HTTP (não é uma ferramenta MCP)
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/sso/scim_token.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/workspaces/:workspace_id/sso.json
Obter as configurações de SSO
sso_get
Retorna a configuração de login único (SSO) do espaço de trabalho, ou um rascunho vazio quando não existe nenhuma. Os campos são protocol (saml ou oidc), status (draft, testing, tested ou active), enforced (os membros devem entrar por SSO), domains (domínios de e-mail que usam este SSO), idp_sso_url e idp_entity_id para SAML, oidc_issuer e oidc_client_id para OIDC, default_role e jit_provisioning (criar membros no primeiro login por SSO) e scim_enabled. Os segredos nunca são retornados, apenas os booleanos idp_cert_present e oidc_client_secret_present. O SSO é um recurso do plano Business. Exige workspace.manage.
Permissão: workspace.manage
curl https://privatusanalytics.com/workspaces/:workspace_id/sso.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/workspaces/:workspace_id/sso.json
Criar ou atualizar as configurações de SSO
sso_update
Cria ou edita as configurações de SSO do espaço de trabalho. Apenas no plano Business. Apenas as entradas enviadas mudam. Para SAML, envie protocol saml com idp_sso_url, idp_entity_id e idp_cert (texto PEM). Para OIDC, envie protocol oidc com oidc_issuer, oidc_client_id e oidc_client_secret, que é somente de escrita e um valor vazio mantém o segredo existente. domains lista os domínios de e-mail que usam este SSO. default_role é a função dada aos membros criados pelo provisionamento no primeiro login ou pelo SCIM (não owner nem custom) e você só pode definir uma função que você mesmo poderia conceder. Alterar qualquer detalhe do provedor de identidade devolve uma configuração active ou tested para draft e desativa enforced, então ela precisa ser testada de novo antes de sso_activate funcionar. enforced true só é aceito enquanto status é active. Exige workspace.manage. Retorna a configuração (veja sso_get).
Permissão: workspace.manage
· Somente HTTP (não é uma ferramenta MCP)
curl -X PATCH https://privatusanalytics.com/workspaces/:workspace_id/sso.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Segmentos
POST
/sites/:site_id/segments.json
Salvar filtros como um segmento
segments_create
Salva um conjunto de filtros como um segmento nomeado que pode ser reutilizado em qualquer ferramenta de estatísticas por meio de segment_id. Passe name e filters (todas as condições devem corresponder, e um grupo {any: [...]} corresponde quando uma de várias corresponde, veja a entrada filters para os nomes de dimensões e os operadores). Os filtros são verificados, então uma dimensão desconhecida ou um valor inválido retorna um 422 com uma mensagem por linha. Use segments_preview antes para conferir o que um conjunto de filtros abrange. shared é true por padrão e torna o segmento visível para todos com acesso ao site, e false o mantém privado para você. Retorna o segmento com id (seg_...), site_id, name, description, filters, summary (uma descrição em linguagem simples), shared, mine e carimbos de data e hora. Exige a permissão content.write.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/segments.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/segments/:id.json
Excluir um segmento
segments_delete
Exclui permanentemente um segmento salvo. Os painéis e links que o usam voltam a mostrar todo o tráfego. Nenhum dado de análise é tocado e não há como desfazer. Retorna o segmento excluído. Os ids (seg_...) vêm de segments_list. Exige a permissão content.write.
Permissão: content.write
curl -X DELETE https://privatusanalytics.com/sites/:site_id/segments/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/segments.json
Listar segmentos que você pode usar em um site
segments_list
Lista os segmentos salvos de um site, ordenados por nome: os compartilhados mais os seus próprios privados. Cada segmento tem id (seg_...), site_id, name, description, filters, summary, shared, mine e carimbos de data e hora. Passe um id como segment_id para qualquer ferramenta de estatísticas (stats_aggregate, stats_breakdown, funnels_get e outras) para aplicar os filtros do segmento. Paginada pelos parâmetros de página padrão. Use segments_create para adicionar um.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/segments.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/segments/preview.json
Descrever filtros em linguagem natural e contar os visitantes correspondentes nos últimos 30 dias
segments_preview
Verifica um conjunto de filtros sem salvar nada. Retorna summary (os filtros em linguagem simples), visitors (quantos visitantes corresponderam nos últimos 30 dias, null quando os filtros são inválidos), period (sempre 30d) e filters (a forma limpa e canônica que seria armazenada). Os filtros usam o mesmo formato de segments_create, incluindo grupos {any: [...]} e nomes por extenso opcionais para países, canais e metas, que são convertidos em códigos e ids. Filtros inválidos retornam um 422 que indica a linha. Use-a para experimentar filtros antes de segments_create, e stats_aggregate com filters para números em outro período.
Permissão: analytics.read
curl -X POST https://privatusanalytics.com/sites/:site_id/segments/preview.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/segments/:id.json
Obter um segmento
segments_get
Retorna um segmento salvo: id (seg_...), site_id, name, description, filters (as condições armazenadas), summary (uma descrição em linguagem simples, como Visitors from the United States on mobile), shared (visível para todos com acesso ao site), mine (true quando você o criou) e carimbos de data e hora. Você pode ler os segmentos compartilhados e os seus próprios privados. Os ids vêm de segments_list. Para contar quantos visitantes um conjunto de filtros abrange, use segments_preview.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/segments/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/segments/:id.json
Renomear um segmento ou alterar seus filtros ou compartilhamento
segments_update
Renomeia um segmento, substitui seus filtros ou altera quem pode vê-lo. Apenas as entradas enviadas mudam. Enviar filters substitui todos os filtros existentes, no mesmo formato e com as mesmas verificações de segments_create. shared false o torna privado para quem o criou. description pode ser limpa enviando-a vazia. Tudo o que usa o segmento, como chamadas de estatísticas com seu segment_id, muda imediatamente. Retorna o segmento. Os ids vêm de segments_list. Exige a permissão content.write.
Permissão: content.write
curl -X PATCH https://privatusanalytics.com/sites/:site_id/segments/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Sincronização com data warehouse
POST
/workspaces/:workspace_id/warehouses.json
Adicionar um destino de data warehouse
warehouse_destinations_create
Adiciona um destino de data warehouse que recebe os eventos brutos de cada dia (somente no plano Business). Diariamente às 02:00 UTC o dia UTC anterior é enviado, a primeira execução é na próxima 02:00 UTC, e uma execução que falhou é repetida uma hora depois. kind deve ser informado e decide as configurações obrigatórias. s3 (também GCS, R2 e MinIO por endpoint) exige bucket, access_key_id e secret_access_key, com region, prefix e endpoint opcionais (https, apenas hosts públicos). bigquery exige service_account_json, dataset e table, com project_id opcional. snowflake exige account, user, private_key (RSA em PEM), database, schema e table, com warehouse e role opcionais. azure exige sas_url (um link SAS https de contêiner de blob com permissão de escrita), com prefix opcional. Os segredos (secret_access_key, service_account_json, private_key, sas_url) são somente de escrita e nunca são retornados. site_ids limita os sites (ids pa_...), vazio significa todos os sites, e um membro ou token limitado a alguns sites deve nomeá-los. As propriedades de evento só são enviadas quando marcadas como seguras para exportação (veja event_properties_list). Exige a permissão workspace.manage. Retorna o destino com id (whd_...), um destino mascarado e configured (os nomes das configurações preenchidas).
Permissão: workspace.manage
· Somente HTTP (não é uma ferramenta MCP)
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/warehouses.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/warehouses/:id.json
Excluir um destino de data warehouse
warehouse_destinations_delete
Exclui um destino de data warehouse para que nada mais seja enviado. Os dados que já foram enviados permanecem no seu bucket ou warehouse, e isso não pode ser desfeito, embora você possa adicionar o destino de novo (o histórico não é reenviado automaticamente). Qualquer sincronização manual ainda na fila não é recolhida. O id vem de warehouse_destinations_list. Exige a permissão workspace.manage. Retorna o destino excluído.
Permissão: workspace.manage
· Somente HTTP (não é uma ferramenta MCP)
curl -X DELETE https://privatusanalytics.com/warehouses/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/workspaces/:workspace_id/warehouses.json
Listar destinos de data warehouse
warehouse_destinations_list
Lista os destinos de data warehouse de um espaço de trabalho ordenados por nome, opcionalmente apenas um tipo (s3, bigquery, snowflake ou azure). Um membro ou token limitado a alguns sites só vê destinos cujos sites estão todos entre os seus, e os destinos que enviam todos os sites ficam ocultos para eles. Paginada com page e per_page (até 100). Cada item tem os campos descritos em warehouse_destinations_get. Exige o workspace_id de workspaces_list e a permissão workspace.manage.
Permissão: workspace.manage
curl https://privatusanalytics.com/workspaces/:workspace_id/warehouses.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/warehouses/:id.json
Obter um destino de data warehouse (sem segredos)
warehouse_destinations_get
Retorna um destino de data warehouse sem credenciais. Os campos são id (whd_...), kind (s3, bigquery, snowflake ou azure), name, target (um resumo mascarado como s3://bucket/prefix), configured (nomes das configurações preenchidas, os segredos aparecem apenas pelo nome), site_ids (vazio significa todos os sites), schedule (daily), schema_version (o layout de linha enviado), last_run_at, next_run_at, last_error (null quando a última execução funcionou) e created_at. O id vem de warehouse_destinations_list. Confira last_error depois de warehouse_destinations_sync para ver como foi uma sincronização.
Permissão: workspace.manage
curl https://privatusanalytics.com/warehouses/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/warehouses/:id/sync.json
Enfileirar agora a sincronização de um dia
warehouse_destinations_sync
Enfileira um envio imediato de um dia UTC de eventos brutos para um destino, fora do agendamento diário. Somente no plano Business. date (YYYY-MM-DD) deve ser anterior a hoje em UTC e assume por padrão ontem. Ela envia esse dia para todos os sites do destino, então evite sincronizar um dia que já foi enviado, e as sincronizações manuais são limitadas a 30 por hora por espaço de trabalho. A chamada retorna 202 com o destino na hora e o envio roda em segundo plano. Consulte warehouse_destinations_get e leia last_run_at e last_error para ver o resultado. O id vem de warehouse_destinations_list. Exige a permissão workspace.manage.
Permissão: workspace.manage
· Somente HTTP (não é uma ferramenta MCP)
curl -X POST https://privatusanalytics.com/warehouses/:id/sync.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
PATCH
/warehouses/:id.json
Atualizar um destino de data warehouse (segredos em branco são mantidos)
warehouse_destinations_update
Altera um destino de data warehouse (somente no plano Business). Apenas as entradas enviadas mudam e kind não pode ser alterado. Um segredo em branco mantém o valor armazenado, então você pode editar outras configurações sem enviar as credenciais de novo. As configurações são validadas para o tipo do destino como em warehouse_destinations_create. Enviar site_ids substitui a lista de sites. Quando o alvo muda (outro bucket, dataset, tabela, banco de dados ou similar), o progresso dos dias não concluídos recomeça, então esses dias são enviados de novo para o novo lugar. O id vem de warehouse_destinations_list. Exige a permissão workspace.manage. Retorna o destino atualizado.
Permissão: workspace.manage
· Somente HTTP (não é uma ferramenta MCP)
curl -X PATCH https://privatusanalytics.com/warehouses/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Site institucional
GET
/blog.json
Liste os posts do blog
blog_list
Lista os posts do blog do Privatus Analytics, do mais recente ao mais antigo, com slug, title, kicker, rubric (o resumo de uma frase), description, path e datas, e sem corpo. Para ler um, use blog_get com o seu slug. Paginado com page e per_page (máximo de 100). Público, sem necessidade de autenticação.
Permissão: public
curl https://privatusanalytics.com/blog.json
GET
/blog/:slug.json
Leia um post do blog (Markdown e HTML)
blog_get
Retorna um post do blog pelo seu slug (de blog_list, a última parte de /blog/<slug>) com os seus títulos, o corpo em Markdown e o HTML renderizado. Os posts são escritos em inglês. Público, sem necessidade de autenticação.
Permissão: public
curl https://privatusanalytics.com/blog/:slug.json
GET
/changelog.json
Listar entradas do changelog
changelog_list
Novidades publicadas do produto, das mais recentes para as mais antigas. Também disponível como RSS em /changelog.rss.
Permissão: public
curl https://privatusanalytics.com/changelog.json
POST
/contact.json
Enviar uma mensagem para a equipe do Privatus Analytics
contact_create
Os clientes de navegador enviam um token do Cloudflare Turnstile como `cf-turnstile-response`. As requisições com um token de API não precisam dele.
Permissão: public
· Somente HTTP (não é uma ferramenta MCP)
curl -X POST https://privatusanalytics.com/contact.json \
-H "Content-Type: application/json" -d '{…}'
POST
/newsletter/confirm.json
Confirmar uma inscrição na newsletter (token assinado)
newsletter_confirm
Permissão: public
· Somente HTTP (não é uma ferramenta MCP)
curl -X POST https://privatusanalytics.com/newsletter/confirm.json \
-H "Content-Type: application/json" -d '{…}'
POST
/newsletter.json
Inscrever um e-mail na newsletter
newsletter_subscribe
Os clientes de navegador enviam um token do Cloudflare Turnstile como `cf-turnstile-response`. As requisições com um token de API não precisam dele.
Permissão: public
· Somente HTTP (não é uma ferramenta MCP)
curl -X POST https://privatusanalytics.com/newsletter.json \
-H "Content-Type: application/json" -d '{…}'
POST
/newsletter/unsubscribe.json
Cancelar a inscrição com um token de link assinado
newsletter_unsubscribe
Permissão: public
· Somente HTTP (não é uma ferramenta MCP)
curl -X POST https://privatusanalytics.com/newsletter/unsubscribe.json \
-H "Content-Type: application/json" -d '{…}'
GET
/pricing.json
Obter planos, preços e limites dos planos
pricing_get
Os mesmos dados da página de preços: a escada de eventos, cada limite dos planos e o que conta como evento. Passe events para obter a faixa correspondente.
Permissão: public
curl https://privatusanalytics.com/pricing.json
GET
/status.json
Obter o status atual do sistema
status_get
Saúde do banco de dados, do Redis e dos jobs em segundo plano, verificada no máximo a cada 15 segundos.
Permissão: public
curl https://privatusanalytics.com/status.json
GET
/tools/consent-gap.json
Estimar o tráfego perdido por análises baseadas em consentimento
tools_consent_gap
Calculadora gratuita que estima quanto tráfego uma ferramenta de análise com consentimento de cookies deixa de captar em comparação com o rastreamento sem cookies. É um modelo simples, não uma medição. As entradas são monthly_visitors (um número inteiro acima de 0), consent_rate (porcentagem de visitantes que aceitam o banner, de 0 a 100) e adblock_share (porcentagem cujos bloqueadores impedem o script, de 0 a 100, padrão 25). Retorna as entradas mais measured_with_consent (visitantes que a ferramenta com consentimento vê), missed (visitantes que ela não vê), missed_percent (uma casa decimal), measured_cookieless (visitantes alcançáveis sem um banner) e recovered_by_cookieless (visitantes ganhos em relação ao rastreamento com consentimento). Todas as contagens de visitantes são números inteiros. Não faz nenhuma requisição e não usa dados da conta. Pública, sem necessidade de autenticação.
Permissão: public
curl https://privatusanalytics.com/tools/consent-gap.json
GET
/tools/header-checker.json
Verificar o Referrer-Policy e o CSP de uma página para análises
tools_header_check
Busca uma página pública e verifica os cabeçalhos de resposta que afetam as análises. Use-a quando faltarem dados de rastreamento ou as origens de referência parecerem erradas. Ela examina Referrer-Policy, as diretivas script-src e connect-src da Content-Security-Policy (se o Privatus Analytics pode carregar e enviar dados), Permissions-Policy e o número de cabeçalhos Set-Cookie. Retorna url (a URL final após até 3 redirecionamentos), status (status HTTP) e findings, cada um com check, value (pode ser nulo), level (ok, warn ou info) e uma observação em linguagem simples. A URL deve ser http ou https e pública, endereços privados e internos são recusados, apenas o primeiro 1 MB é lido e a busca expira após 5 segundos. Limitada a 10 chamadas por minuto por cliente. Pública, sem necessidade de autenticação.
Permissão: public
curl https://privatusanalytics.com/tools/header-checker.json
GET
/tools/privacy-policy-generator.json
Redigir um parágrafo de política de privacidade para o Privatus Analytics
tools_privacy_policy
Redige um parágrafo de política de privacidade que descreve como o Privatus Analytics coleta dados no site do cliente (sem cookies, sem dados pessoais armazenados, localização apenas por país). É um ponto de partida, não aconselhamento jurídico. As entradas são site_name (até 120 caracteres), contact_email (opcional, acrescenta uma frase de contato) e honors_gpc (padrão true, acrescenta uma frase dizendo que Do Not Track e Global Privacy Control são respeitados). Retorna site_name, paragraphs (array de strings), text (os parágrafos unidos por linhas em branco, com o endereço do Privatus Analytics entre parênteses depois do nome) e html (os parágrafos como elementos <p>, com o nome como link simples). O texto é escrito no idioma da requisição, inglês por padrão. Não faz nenhuma alteração em nenhuma conta. Pública, sem necessidade de autenticação.
Permissão: public
curl https://privatusanalytics.com/tools/privacy-policy-generator.json
GET
/tools/qr-code.json
Gerar um QR code em SVG
tools_qr_code
Gera um código QR como imagem SVG para impressão ou pôsteres. Combine-o com um link que tenha parâmetros UTM de tools_utm_builder. As entradas são text (a URL ou o texto, até 1.000 caracteres) e level (correção de erros l, m, q ou h, padrão m, um nível mais alto sobrevive a mais danos mas exige um código mais denso). Retorna text, level, size (módulos por lado) e svg (um documento SVG independente, preto sobre branco). Um texto longo demais para o nível escolhido é rejeitado. Para códigos QR de links curtos rastreados, use links_qr. Pública, sem necessidade de autenticação.
Permissão: public
curl https://privatusanalytics.com/tools/qr-code.json
GET
/tools/tracker-scanner.json
Listar cookies e rastreadores conhecidos em uma página
tools_tracker_scan
Busca uma página pública e lista os cookies que ela define e os rastreadores de terceiros conhecidos que ela referencia. Use-a para uma verificação rápida do que uma página carrega antes de escolher uma abordagem de consentimento. É uma varredura estática apenas do HTML e dos cabeçalhos de resposta, não executa JavaScript, então cookies definidos por scripts e tags carregadas depois por um gerenciador de tags passam despercebidos. Retorna url (URL final após até 3 redirecionamentos), status, truncated (true quando apenas o primeiro 1 MB foi lido), cookies (name, domain, path, expires, secure, http_only e same_site, os valores nunca são retornados), trackers (name, category, match e evidence, em que category é advertising, analytics, session_recording, tag_manager, marketing ou privacy_analytics) e third_party_hosts (nomes de host ordenados de outros sites). A URL deve ser http ou https pública, com tempo limite de busca de 5 segundos, e as chamadas são limitadas a 10 por minuto por cliente. Pública, sem necessidade de autenticação.
Permissão: public
curl https://privatusanalytics.com/tools/tracker-scanner.json
GET
/tools/utm-builder.json
Montar uma URL de campanha com parâmetros UTM
tools_utm_builder
Monta uma URL de campanha com parâmetros UTM e sinaliza erros comuns. As entradas são url (deve ser http ou https), source, medium e campaign (todos obrigatórios) e term e content opcionais. Os parâmetros utm_ já existentes na URL são substituídos e os outros parâmetros de consulta são mantidos. Retorna url (o link pronto), params (os valores utm_ que foram adicionados, os em branco ficam de fora) e warnings (strings para valores com letras maiúsculas, espaços, ou texto que parece um endereço de e-mail ou um número longo, que nunca deveriam estar em uma URL). Use valores em minúsculas e sem espaços para que a mesma campanha não seja dividida em várias linhas nos relatórios. Não salva nada. Pública, sem necessidade de autenticação.
Permissão: public
curl https://privatusanalytics.com/tools/utm-builder.json
POST
/waitlist.json
Entrar em uma lista de espera (hospedagem na UE)
waitlist_join
Os clientes de navegador enviam um token do Cloudflare Turnstile como `cf-turnstile-response`. As requisições com um token de API não precisam dele.
Permissão: public
· Somente HTTP (não é uma ferramenta MCP)
curl -X POST https://privatusanalytics.com/waitlist.json \
-H "Content-Type: application/json" -d '{…}'
Sites
POST
/sites/:site_id/data_reset.json
Excluir todos os eventos e visitas em um intervalo de datas (roda em segundo plano, não pode ser desfeito)
sites_reset_data
Exclui de forma irreversível as visualizações de página, os eventos personalizados e as visitas de um site em um intervalo de datas, e não pode ser desfeito. Use-a para limpar tráfego de teste ou remover um período ruim. Ela não exclui o site, suas metas nem suas configurações (use sites_delete para o site). from e to são datas YYYY-MM-DD, ambas inclusivas e lidas no fuso horário do site, e to não pode ser anterior a from. confirm deve ser o domínio do site exatamente como mostrado por sites_get (maiúsculas e minúsculas não importam). A requisição é aceita e retorna na hora com status queued, site_id, from e to. A exclusão roda em segundo plano, em lotes, então os números nas ferramentas de estatísticas podem levar um pouco para se estabilizar, e não há endpoint de status para consultar, confira as ferramentas de estatísticas até o intervalo ficar vazio. A ação é registrada no log de auditoria. Exige a permissão sites.manage.
Permissão: sites.manage
· Somente HTTP (não é uma ferramenta MCP)
curl -X POST https://privatusanalytics.com/sites/:site_id/data_reset.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/filter_stats.json
Resumo do tráfego filtrado: bots, regras de tráfego ou remoções de PII por motivo e país (somente contagens)
sites_filter_stats
Contagens de acessos que foram descartados ou limpos antes do armazenamento, nos últimos dias. Use-a para ver quanto tráfego de bots, tráfego bloqueado por regras ou redação um site tem. Escolha kind com bot (acessos descartados como bots), rule (acessos descartados por regras de tráfego) ou redaction (valores ocultados pelo removedor de dados pessoais). Retorna kind, days, total, by_reason, by_country e by_day. by_reason e by_country são listas de {value, count} (até 50, do maior para o menor, value null quando desconhecido) e by_day é uma lista de {date, count}. days é limitado entre 1 e 395 e assume por padrão 30. São apenas contagens agregadas. Nenhum endereço IP, user agent ou valor ocultado é armazenado, então nada pode ser associado a uma pessoa. Esses acessos não contam como eventos para a cobrança. Use traffic_rules_list para ver ou alterar as regras.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/filter_stats.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/access.json
Listar membros e se eles podem ver este site
sites_access_list
Mostra quais membros do espaço de trabalho podem ver um site. Todos os membros do espaço de trabalho são listados na ordem de entrada, sem paginação. Os campos são membership_id (o uuid usado por sites_access_update), email, name, role, access (true quando o membro pode ver este site) e locked (true para proprietários e admins, que sempre têm acesso e não podem ser alterados). Os demais membros têm acesso quando têm todos os sites ou uma concessão explícita para este site. Use members_list para ver a lista completa de sites de um membro. Exige members.manage.
Permissão: members.manage
curl https://privatusanalytics.com/sites/:site_id/access.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/access.json
Conceder ou remover o acesso de um membro a este site
sites_access_update
Concede ou remove o acesso de um membro a um site. membership_id vem de sites_access_list (ou members_list) e access é true para conceder ou false para remover. Proprietários e admins sempre têm acesso e não podem ser alterados. Remover o acesso de um membro que tinha todos os sites o passa para uma lista explícita com todos os outros sites do espaço de trabalho e desativa seu include_future_sites, de modo que ele não receberá os sites criados depois. Conceder a alguém que já tem todos os sites não altera nada. Você não pode alterar um membro que tem permissões que você não tem ou sites além dos seus. Exige members.manage. Retorna a linha desse membro no mesmo formato de sites_access_list.
Permissão: members.manage
· Somente HTTP (não é uma ferramenta MCP)
curl -X PATCH https://privatusanalytics.com/sites/:site_id/access.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/favorite.json
Marcar um site com estrela (fixado primeiro em Todos os sites)
sites_favorite
Marca um site com estrela para o usuário que chama, para que ele seja listado primeiro por sites_list e na página Todos os sites. Afeta apenas quem chama, nunca outros membros, e marcar um site que já tem estrela não altera nada. A chamada não precisa de nenhuma entrada além do id do site. Use sites_unfavorite para remover a estrela. Exige analytics.read. Retorna o site (veja sites_get), com favorite true.
Permissão: analytics.read
curl -X POST https://privatusanalytics.com/sites/:site_id/favorite.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/favorite.json
Remover a estrela de um site
sites_unfavorite
Remove a estrela do usuário que chama de um site, para que ele deixe de ser fixado primeiro em sites_list. Afeta apenas quem chama e não faz nada se o site não tinha estrela. Use sites_favorite para marcá-lo de novo. Exige analytics.read. Retorna o site (veja sites_get), com favorite false.
Permissão: analytics.read
curl -X DELETE https://privatusanalytics.com/sites/:site_id/favorite.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/setup.json
Status da instalação e snippet de um site
sites_setup_get
Retorna o que é necessário para instalar o rastreamento em um site e se já chegaram dados. Os campos são site_id, snippet (a tag de script HTML pronta para colar, com todos os módulos do rastreador ativados), receiving_data (true assim que o primeiro evento foi recebido) e first_event_at (ISO 8601, null até então). Consulte-a depois da instalação para ver se os eventos estão chegando. Use tracking_snippet quando quiser um snippet personalizado (módulos escolhidos, visualizações de página manuais, modo SPA, máscaras) e tracking_verify para buscar a página ao vivo e verificar se o script está presente. Exige analytics.read.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/setup.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/transfers/:token/accept.json
Aceitar a transferência de um site para um dos seus espaços de trabalho
site_transfers_accept
Aceita um convite de transferência de site e move o site para um dos espaços de trabalho de quem chama. O parâmetro de caminho token vem do link do convite, e workspace_id é o espaço de trabalho de destino (ws_...) no qual quem chama tem sites.manage. O e-mail de quem chama deve corresponder ao endereço para o qual o convite foi enviado, e o destino não pode ser o espaço de trabalho de onde o site veio. O site mantém seu id, suas configurações, metas e dados, mas as concessões de acesso por membro são limpas e seus links compartilhados passam para o novo espaço de trabalho. Falha quando o convite não está mais pendente ou expirou, quando o destino está no limite de sites do seu plano, ou quando ele já tem um site ativo com o mesmo domínio. A mudança não pode ser desfeita, a não ser transferindo de volta. Um token que faz esta chamada deve pertencer ao espaço de trabalho de destino e ter sites.manage. Retorna a transferência com status accepted.
Permissão: public
· Somente HTTP (não é uma ferramenta MCP)
curl -X POST https://privatusanalytics.com/transfers/:token/accept.json \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/transfer.json
Iniciar a transferência de um site para outro espaço de trabalho (envia e-mail ao destinatário)
sites_transfer_start
Inicia a mudança de um site para outro espaço de trabalho enviando ao destinatário, por e-mail, um link de convite válido por 7 dias. Nada se move até que o destinatário entre com esse e-mail e aceite (site_transfers_accept), então o site fica aqui até lá. Iniciar uma nova transferência cancela qualquer transferência pendente anterior do mesmo site. email deve ser um endereço válido e o destinatário escolhe o espaço de trabalho de destino. Os e-mails de transferência têm limite de frequência. Use sites_transfer_cancel para retirá-la. Exige sites.manage. Retorna a transferência com site_id, site_domain, from_workspace, to_email, status pending e expires_at.
Permissão: sites.manage
· Somente HTTP (não é uma ferramenta MCP)
curl -X POST https://privatusanalytics.com/sites/:site_id/transfer.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/transfer.json
Cancelar uma transferência de site pendente
sites_transfer_cancel
Cancela o convite de transferência pendente do site para que seu link deixe de funcionar. Falha com um erro de validação quando não há transferência pendente. Uma transferência que já foi aceita não pode ser cancelada. Exige sites.manage. Retorna a transferência com status canceled.
Permissão: sites.manage
· Somente HTTP (não é uma ferramenta MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/transfer.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/transfers/:token.json
Obter uma transferência pendente a partir do token enviado por e-mail
site_transfers_get
Mostra um convite de transferência de site a partir do token no seu link (o parâmetro de caminho token, do e-mail de convite enviado por sites_transfer_start). Quem chama deve estar conectado ou usar um token de API. Retorna site_id, site_domain, from_workspace (o nome do espaço de trabalho que enviou), to_workspace_id (null até ser aceita), to_email (o endereço convidado), status (pending, accepted ou canceled) e expires_at. Os convites expiram 7 dias depois de enviados. Use site_transfers_accept para aceitá-lo.
Permissão: public
· Somente HTTP (não é uma ferramenta MCP)
curl https://privatusanalytics.com/transfers/:token.json
POST
/workspaces/:workspace_id/sites.json
Adicionar um site
sites_create
Adiciona um site a um espaço de trabalho e o retorna, incluindo o snippet de rastreamento a instalar. O plano do espaço de trabalho limita o número de sites (o Free permite 3) e a chamada falha com um erro de limite de plano quando ele é atingido. domain é obrigatório e é normalizado (por exemplo, uma URL completa ou um prefixo www é reduzido ao hostname). name assume por padrão o domínio, timezone assume por padrão o fuso horário do espaço de trabalho (um nome IANA como Europe/Berlin) e currency a moeda do espaço de trabalho (um código ISO 4217 de 3 letras como USD). Os efeitos colaterais são uma notificação site.created para os canais de notificação do espaço de trabalho, uma primeira auditoria SEO do site e uma verificação de domain rating enfileiradas, e um e-mail com o código de rastreamento para o membro que o criou (com lembretes enquanto nenhum dado chega). Os membros limitados a sites selecionados que optaram pelos sites futuros recebem acesso a ele. Exige sites.manage. Continue com tracking_snippet ou sites_setup_get para instalar e tracking_verify para verificar.
Permissão: sites.manage
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/sites.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:id.json
Excluir um site (removido definitivamente após 7 dias)
sites_delete
Exclui um site. É uma exclusão lógica: o site para de coletar e desaparece das listas imediatamente, e seus dados são eliminados de forma permanente após 7 dias, então trate-a como irreversível e fale com o suporte rápido se foi um engano. confirm deve ser o domínio do site (maiúsculas e minúsculas não importam). As transferências pendentes do site são canceladas e uma notificação site.deleted é enviada aos canais de notificação do espaço de trabalho. Para limpar apenas parte do tráfego e manter o site, use sites_reset_data. Exige sites.manage. Retorna o site.
Permissão: sites.manage
· Somente HTTP (não é uma ferramenta MCP)
curl -X DELETE https://privatusanalytics.com/sites/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/workspaces/:workspace_id/sites.json
Listar sites de um espaço de trabalho
sites_list
Lista os sites de um espaço de trabalho aos quais quem chama tem acesso, paginados, com os sites marcados com estrela por quem chama primeiro. Use query para pesquisar domínio ou nome (parcial, sem diferenciar maiúsculas e minúsculas), label para manter os sites que têm um rótulo e sort como position (a ordem salva, o padrão), name ou visitors (visitantes dos últimos 30 dias, os maiores primeiro). O meta da resposta tem a paginação por página mais stats, um objeto indexado pelo id do site com visitors (visitantes únicos recentes), change (variação percentual em relação ao período anterior), sparkline (uma lista de valores diários) e live (visitantes atuais), e totals da página. Cada item tem os mesmos campos de sites_get. Este é o ponto de partida para encontrar os ids de site (pa_...) usados por todas as outras ferramentas de site. Exige analytics.read.
Permissão: analytics.read
curl https://privatusanalytics.com/workspaces/:workspace_id/sites.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:id.json
Obter um site e todas as suas configurações
sites_get
Retorna as configurações e o status de um site pelo seu id público (pa_..., de sites_list). Os campos principais são id, workspace_id (ws_...), domain, name, extra_domains e multi_domain_mode (combined ou separate), timezone (nome IANA), currency (ISO 4217), labels, opções de privacidade (honor_dnt, honor_gpc, pii_scrubber, redaction_rules, allowed_params, path_masks), retention_months (null significa manter todos os dados), bot_filtering, traffic_rule_modes (um objeto que associa uma lista de regras a block ou allow), vitals_sample_rate (uma porcentagem), conversion_denominator (visits ou visitors), public_dashboard e public_indexable, ingest_key_prefix (null quando o site não tem chave de logs de crawlers), verified_at, first_event_at e last_event_at (null até os dados chegarem), domain_rating (pode ser nulo), snippet (a tag HTML de rastreamento), favorite (se quem chama marcou com estrela) e created_at. Exige analytics.read.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:id.json
Atualizar as configurações do site
sites_update
Atualiza as configurações de um site, alterando apenas os campos enviados. Os campos de nome e identidade são name, domain (alterá-lo refaz a verificação do domain rating), extra_domains (uma lista de hostnames) e multi_domain_mode (combined conta um visitante entre domínios, separate os mantém separados). timezone é um nome IANA e currency um código ISO 4217 de 3 letras. Os campos de privacidade são honor_dnt, honor_gpc, pii_scrubber, redaction_rules (uma lista de objetos com name e pattern, em que pattern é uma expressão regular), allowed_params (parâmetros de consulta a manter), path_masks (uma lista de objetos com pattern e replacement) e bot_filtering. As listas substituem toda a lista existente. retention_months não pode exceder a retenção do plano (Free 6 meses). traffic_rule_modes associa uma lista de regras (hostnames, paths, referrers, countries, ip_ranges, user_agents ou events) a block ou allow. vitals_sample_rate é uma porcentagem e o plano a limita (10 no Free, 100 nos planos pagos). conversion_denominator é visits ou visitors. public_dashboard torna as estatísticas visíveis para qualquer pessoa com o link e public_indexable permite que os mecanismos de busca indexem essa página. As alterações valem para os novos eventos em instantes. Exige sites.manage. Retorna o site atualizado.
Permissão: sites.manage
curl -X PATCH https://privatusanalytics.com/sites/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Tags de depoimentos
POST
/sites/:site_id/testimonials/tags/:id/apply_rules.json
Execute as regras de uma tag sobre os depoimentos já guardados
testimonial_tags_apply_rules
dry_run true (o padrão) não altera nada e responde com as contagens: quantos seriam marcados, de quantos, e quantos já têm a tag. dry_run false os marca como uma única ação em lote e responde com undo_id, que testimonials_bulk_undo aceita por 7 dias. Mais de 100 são executados em segundo plano e a resposta traz state running.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/tags/:id/apply_rules.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials/tags.json
Crie uma tag, com regras de marcação automática se você as enviar
testimonial_tags_create
Uma regra é { match, conditions }. Um depoimento que satisfaz qualquer uma das regras recebe a tag no momento em que chega. As regras só adicionam uma tag. Para marcar o que já está guardado, chame testimonial_tags_apply_rules em seguida.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/tags.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/testimonials/tags/:id.json
Mova uma tag para a lixeira por 30 dias
testimonial_tags_destroy
Ela sai de todo depoimento, filtro e seletor. Restaurá-la com testimonial_trash_restore a recoloca em todo depoimento que a tinha. Uma coleção inteligente cujas regras a citam não corresponde a nada até lá. Via MCP, a ferramenta não altera nada e responde com a página do app em que uma pessoa faz isso.
Permissão: content.write
· Somente HTTP (não é uma ferramenta MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/tags/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/tags.json
Liste as tags de um site com as suas regras
testimonial_tags_list
Cada tag vem com quantos depoimentos a carregam, as suas regras de marcação automática como condições estruturadas e em linguagem simples, e quando uma regra a aplicou pela última vez. As tags na lixeira ficam de fora.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/tags.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/testimonials/tags/:id/merge.json
Una uma tag a outra
testimonial_tags_merge
Todo depoimento que tinha esta tag recebe a outra, toda regra passa para a outra, toda coleção inteligente, visualização salva, widget e mural que citava esta tag passa a citar a outra, e esta tag vai para a lixeira, vazia. Responde com a tag que é mantida.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/tags/:id/merge.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
PATCH
/sites/:site_id/testimonials/tags/:id.json
Altere o nome, a cor ou as regras de uma tag
testimonial_tags_update
Só o que é enviado muda. Enviar rules substitui todas as regras da tag, e uma lista vazia remove todas.
Permissão: content.write
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/tags/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Tokens de API
POST
/workspaces/:workspace_id/api_tokens.json
Criar um token de API (o token é exibido uma única vez)
api_tokens_create
Cria um token de API para o membro que faz a chamada em um espaço de trabalho e retorna o segredo uma única vez no campo token. Copie-o imediatamente: ele não pode ser lido de novo, e um token perdido precisa ser revogado e recriado. Um token só pode restringir o que seu membro pode fazer. permissions assume por padrão todas as permissões do próprio membro quando omitido (uma lista vazia explícita é recusada, e pedir uma permissão que você não tem é um erro). site_ids aceita ids públicos de site (pa_...) e restringe o token a esses sites. Quando vazio, o token funciona para todos os sites que seu membro pode acessar (ou mantém a lista de sites do token que faz esta chamada). expires_at é opcional, em ISO 8601, e deve estar no futuro e a no máximo 3 anos de distância. Omita-o para um token que nunca expira. allowed_ips limita o token a esses IPs ou faixas CIDR. Um token que faz esta chamada precisa de tokens.manage. Um espaço de trabalho que exige autenticação em duas etapas recusa tokens de membros sem um segundo fator próprio. Retorna os mesmos campos de api_tokens_list mais token.
Permissão: member
· Somente HTTP (não é uma ferramenta MCP)
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/api_tokens.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/workspaces/:workspace_id/api_tokens/:id.json
Revogar um token de API
api_tokens_delete
Revoga um token de API imediatamente e de forma permanente. As requisições que o usam passam a falhar, e um token revogado não pode ser restaurado: crie um novo. O registro do token permanece na lista com status revoked (use api_tokens_list com include_revoked para vê-lo), e revogar um token já revogado não altera nada. Pegue o id (um uuid) em api_tokens_list. Você pode revogar seus próprios tokens, e revogar o de outra pessoa exige tokens.manage e alcance sobre todos os sites que o token cobre. Um token que faz esta chamada precisa de tokens.manage. Retorna o token revogado sem o segredo.
Permissão: member
· Somente HTTP (não é uma ferramenta MCP)
curl -X DELETE https://privatusanalytics.com/workspaces/:workspace_id/api_tokens/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/workspaces/:workspace_id/api_tokens.json
Listar tokens de API
api_tokens_list
Lista os tokens de API de um espaço de trabalho, do mais recente ao mais antigo e paginados. Sem a permissão tokens.manage você vê apenas os seus próprios tokens, e com ela vê os de todos os membros. Tokens revogados e expirados ficam ocultos, a menos que include_revoked seja true. Cada item tem id (uuid, usado por api_tokens_delete), name, token_prefix (os primeiros caracteres, para reconhecer um token), owner (o e-mail do membro), permissions (nomes como analytics.read), site_ids (ids públicos de site pa_..., um array vazio significa todos os sites que o dono pode acessar), allowed_ips, oauth_client (o nome do app conectado quando o token foi emitido por OAuth, caso contrário null), status (active, expired ou revoked), expires_at, last_used_at, revoked_at e created_at. O segredo em si nunca é retornado aqui, e token é sempre null em uma lista. Ele só é mostrado uma vez por api_tokens_create.
Permissão: member
curl https://privatusanalytics.com/workspaces/:workspace_id/api_tokens.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
Traduções de depoimentos
POST
/sites/:site_id/testimonials/translations.json
Traduza depoimentos para os idiomas que um site oferece
testimonial_translations_create
Chame testimonial_translations_estimate primeiro. Isto envia o corpo, o título e o destaque dos depoimentos escolhidos ao Google Cloud Translation (nunca um nome, um e-mail ou uma empresa), e o membro recebe um e-mail avisando que um assistente a iniciou. A tradução acontece em segundo plano, e uma linha que já está guardada nunca é buscada de novo. Ao atingir a cota mensal de caracteres, o restante é guardado como em espera e continua no dia 1. Responde com 402 plan_limit abaixo do Business e com 422 not_configured enquanto a tradução não estiver configurada.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/translations.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/testimonials/translations/:testimonial_id/:language.json
Remova uma tradução guardada
testimonial_translations_delete
O depoimento volta a ser exibido nas suas próprias palavras onde quer que aquele idioma fosse usado. Os caracteres já gastos com ela não são devolvidos. Funciona em todos os planos. Via MCP, a ferramenta não altera nada e responde com a página do app em que uma pessoa faz isso.
Permissão: content.write
· Somente HTTP (não é uma ferramenta MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/translations/:testimonial_id/:language.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/translations/estimate.json
Conte os caracteres que uma execução de tradução enviaria, antes de executar
testimonial_translations_estimate
Indique os depoimentos de uma só forma: testimonial_ids, collection_id ou all_approved. A resposta traz os depoimentos, os caracteres que seriam enviados, os caracteres já guardados e o que resta do mês. Informa caracteres, nunca um preço. Nada é buscado.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/translations/estimate.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/testimonials/translations.json
Liste as traduções guardadas de um site
testimonial_translations_list
Uma linha por depoimento e idioma, a alterada mais recentemente primeiro, 25 por página. Filtre por language, state, origin ou testimonial_id. Funciona em todos os planos, então as traduções feitas antes de um downgrade ainda podem ser lidas.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/translations.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/testimonials/translations/:testimonial_id/:language.json
Escreva ou corrija uma tradução à mão
testimonial_translations_update
A linha é marcada como editada, e uma execução posterior não a sobrescreve, a menos que overwrite_edited seja enviado. Nada é buscado e nada conta na cota. O original nunca é alterado. Business e acima (402 plan_limit nos demais).
Permissão: content.write
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/translations/:testimonial_id/:language.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Visualizações salvas de depoimentos
POST
/sites/:site_id/testimonials/views.json
Salve um filtro, texto de busca, ordenação e layout da caixa de entrada sob um nome
testimonial_saved_views_create
Uma visualização pessoal precisa apenas de analytics.read. Uma compartilhada precisa de content.write e, caso contrário, é recusada com o código not_allowed. Uma visualização fixada fica na barra lateral com a sua contagem. Abra-a com testimonials_list e view_id.
Permissão: analytics.read
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/views.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/testimonials/views/:id.json
Exclua uma visualização salva. Nenhum depoimento é tocado
testimonial_saved_views_destroy
Uma visualização salva é um filtro guardado, então apenas a visualização é removida. Um widget ou mural alimentado pela visualização mantém as suas configurações e não tem nada a exibir até receber outra fonte. Uma visualização pessoal é excluída pelo seu dono, e uma compartilhada exige content.write. Caso contrário, a chamada é recusada com o código not_allowed. Via MCP, a ferramenta não altera nada e responde com a página do app em que uma pessoa faz isso.
Permissão: analytics.read
· Somente HTTP (não é uma ferramenta MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/views/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/views.json
Liste as visualizações salvas de um site que quem chama pode abrir
testimonial_saved_views_list
Retorna as visualizações do próprio usuário e todas as compartilhadas, as fixadas primeiro na sua ordem, depois por nome. scope é all (o padrão), mine ou shared. Passe o id de uma visualização como view_id para testimonials_list para ler os depoimentos que ela contém.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/views.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/testimonials/views/:id.json
Renomeie uma visualização salva, altere o que ela guarda, fixe-a ou compartilhe-a
testimonial_saved_views_update
Só as entradas enviadas mudam: name, a busca guardada (q), filters, sort, layout, columns, position, pinned e shared. Uma visualização pessoal é alterada pelo seu dono. Alterar uma visualização compartilhada, e compartilhar ou deixar de compartilhar qualquer visualização, exige content.write.
Permissão: analytics.read
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/views/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Webhooks
GET
/workspaces/:workspace_id/webhooks/:webhook_id/deliveries.json
Listar entregas de um webhook
webhook_deliveries_list
Lista as entregas enviadas a um webhook (o caminho recebe webhook_id), das mais recentes para as mais antigas e paginadas. Cada uma tem id (whd_...), event, status (pending, succeeded para qualquer resposta 2xx, ou failed), status_code (null quando nenhuma resposta chegou), error (um motivo curto, como um timeout, caso contrário null), attempt (quantas tentativas até agora), duration_ms, payload (os dados JSON que foram enviados), response_body (os primeiros 2000 caracteres da resposta) e delivered_at e created_at. Filtre com status succeeded ou failed. Use-a para depurar um endpoint e webhook_deliveries_redeliver para enviar uma de novo.
Permissão: workspace.manage
curl https://privatusanalytics.com/workspaces/:workspace_id/webhooks/:webhook_id/deliveries.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/workspaces/:workspace_id/webhooks/:webhook_id/deliveries/:id/redeliver.json
Enviar uma entrega novamente
webhook_deliveries_redeliver
Envia de novo o payload de uma entrega passada como uma nova entrega para o mesmo endpoint (id whd_..., de webhook_deliveries_list). Isso faz uma requisição HTTP à URL do cliente, então o receptor pode processar o mesmo evento duas vezes. Tem limite de frequência por espaço de trabalho (compartilhado com webhooks_test). Ela é enfileirada, então a resposta é uma nova entrega com status pending, leia webhook_deliveries_list para ver o resultado.
Permissão: workspace.manage
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/webhooks/:webhook_id/deliveries/:id/redeliver.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/workspaces/:workspace_id/webhooks.json
Adicionar um endpoint de webhook
webhooks_create
Adiciona um endpoint que recebe JSON enviado por POST para os eventos do espaço de trabalho (o caminho recebe workspace_id). url deve ser um endereço https público, endereços privados e internos são recusados. events é uma lista obrigatória escolhida entre alert.triggered, alert.resolved, goal.completed_threshold, uptime.down, uptime.up, export.ready, import.completed, import.failed, site.created, site.deleted, member.added, usage.threshold e site_audit.completed. enabled assume por padrão true. Um segredo de assinatura (whsec_...) é gerado e retornado na resposta, e cada entrega traz um cabeçalho Privatus-Signature com um carimbo de data e hora e um HMAC-SHA256 do corpo feito com ele. As entregas que falham são repetidas com espera crescente e o endpoint é desativado após 20 falhas seguidas. Use webhooks_test para enviar um exemplo.
Permissão: workspace.manage
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/webhooks.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/workspaces/:workspace_id/webhooks/:id.json
Excluir um webhook
webhooks_delete
Exclui um endpoint de webhook e todo o seu log de entregas. Isso não pode ser desfeito e as novas tentativas pendentes param. Para pausá-lo em vez disso, use webhooks_update com enabled false. O id (wh_...) vem de webhooks_list. Retorna o webhook excluído.
Permissão: workspace.manage
curl -X DELETE https://privatusanalytics.com/workspaces/:workspace_id/webhooks/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/workspaces/:workspace_id/webhooks.json
Listar webhooks
webhooks_list
Lista os endpoints de webhook de saída de um espaço de trabalho (o caminho recebe workspace_id), dos mais antigos para os mais recentes. Cada um tem id (wh_...), url, events (os nomes de eventos que recebe), enabled, status (active, failing após falhas recentes, ou disabled), secret (o segredo de assinatura, trate-o como sensível), consecutive_failures, last_success_at, last_failure_at e created_at. Exige a permissão workspace.manage. Serve para enviar eventos brutos ao seu próprio servidor. Para notificar pessoas, use notification_channels_list. Use webhook_deliveries_list para ver o que foi enviado.
Permissão: workspace.manage
curl https://privatusanalytics.com/workspaces/:workspace_id/webhooks.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/workspaces/:workspace_id/webhooks/:id.json
Obter um webhook
webhooks_get
Retorna um endpoint de webhook pelo id (wh_..., de webhooks_list), incluindo seu segredo de assinatura (whsec_...), que é usado para verificar o cabeçalho Privatus-Signature de cada entrega. Os campos são url, events, enabled, status (active, failing ou disabled), secret, consecutive_failures, last_success_at, last_failure_at e created_at. Exige a permissão workspace.manage.
Permissão: workspace.manage
curl https://privatusanalytics.com/workspaces/:workspace_id/webhooks/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/workspaces/:workspace_id/webhooks/:id/test.json
Enviar uma entrega de teste
webhooks_test
Enfileira uma entrega webhook.test com uma mensagem de exemplo para um endpoint, mesmo quando ele está desativado, o que faz uma requisição HTTP à URL do cliente. Tem limite de frequência por espaço de trabalho (compartilhado com webhook_deliveries_redeliver) e um teste não é repetido. A entrega é enviada em segundo plano, então a resposta retorna a entrega na fila com status pending. Leia webhook_deliveries_list um instante depois para ver status_code, error, duration_ms e response_body.
Permissão: workspace.manage
curl -X POST https://privatusanalytics.com/workspaces/:workspace_id/webhooks/:id/test.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
PATCH
/workspaces/:workspace_id/webhooks/:id.json
Atualizar um webhook (eventos, URL, ativado, trocar segredo)
webhooks_update
Altera um webhook (id de webhooks_list). Apenas as entradas enviadas mudam. Enviar events substitui a lista inteira. Definir enabled true em um endpoint desativado zera sua contagem de falhas, que é como você reativa um que foi desativado após falhas repetidas. Defina rotate_secret true para gerar um novo segredo de assinatura, mostrado na resposta, e o antigo para de funcionar na hora, então o receptor deve ser atualizado. As regras de url são as mesmas de webhooks_create. Retorna o webhook.
Permissão: workspace.manage
curl -X PATCH https://privatusanalytics.com/workspaces/:workspace_id/webhooks/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
Widgets
POST
/sites/:site_id/testimonials/widgets/:id/copied.json
Registre que a incorporação em HTML colado de um widget foi copiada
testimonial_widgets_mark_copied
O HTML colado não se atualiza sozinho. Depois desta chamada, testimonial_widgets_embed informa quantas vezes o widget mudou desde então.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/widgets/:id/copied.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials/widgets.json
Crie um widget
testimonial_widgets_create
Uma chamada traz o widget inteiro: o layout e as suas opções, o que o alimenta, o que cada cartão mostra e a sua aparência. O que ficar de fora começa de um padrão, e uma configuração de estilo em branco herda o kit de marca. Siga com testimonial_widgets_embed para obter o código a colar.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/widgets.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
DELETE
/sites/:site_id/testimonials/widgets/:id.json
Mova um widget para a lixeira
testimonial_widgets_trash
As suas incorporações não renderizam nada e não ocupam espaço até que seja restaurado. É excluído de vez após 30 dias. Via MCP, a ferramenta não altera nada e responde com a página do app em que uma pessoa faz isso.
Permissão: content.write
· Somente HTTP (não é uma ferramenta MCP)
curl -X DELETE https://privatusanalytics.com/sites/:site_id/testimonials/widgets/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
POST
/sites/:site_id/testimonials/widgets/:id/duplicate.json
Copie um widget com todas as configurações
testimonial_widgets_duplicate
Faz uma cópia com um novo id e o nome terminando em "copy". A cópia tem o seu próprio código de incorporação e não foi vista no ar em lugar nenhum. O original não é alterado.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/widgets/:id/duplicate.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/widgets/:id/embed.json
Obtenha o código de incorporação de um widget e o seu peso
testimonial_widgets_embed
Retorna o trecho de script (recomendado), o HTML colado, o código do frame e o endereço dos dados públicos, com o tamanho medido do script carregador e deste widget. O HTML colado e o frame são null para o pop-up de canto.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/widgets/:id/embed.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/testimonials/widgets.json
Liste os widgets de um site
testimonial_widgets_list
Os widgets na lixeira não são listados. Cada widget traz as suas configurações, quantos depoimentos exibe agora, as suas visualizações e cliques dos últimos 30 dias e a primeira página em que foi visto no ar.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/widgets.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
GET
/sites/:site_id/testimonials/widgets/:id/installs.json
Liste as páginas em que um widget foi visto no ar
testimonial_widgets_installs
Até 50 páginas, as mais recentes primeiro. Só o script e o frame podem ser detectados.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/widgets/:id/installs.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
POST
/sites/:site_id/testimonials/widgets/:id/restore.json
Restaure um widget da lixeira
testimonial_widgets_restore
Ele volta a todo lugar em que foi colado.
Permissão: content.write
curl -X POST https://privatusanalytics.com/sites/:site_id/testimonials/widgets/:id/restore.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'
GET
/sites/:site_id/testimonials/widgets/:id.json
Obtenha um widget com cada configuração, o que exibe e onde está no ar
testimonial_widgets_get
Tudo o que o construtor guarda: o layout e as suas opções, o que alimenta o widget (uma coleção, uma visualização salva, tags ou uma lista escolhida a dedo), o que cada cartão mostra, o estilo, o idioma e a marcação de avaliações, com onde foi visto no ar e quantos depoimentos exibe agora. Um widget na lixeira responde com 404.
Permissão: analytics.read
curl https://privatusanalytics.com/sites/:site_id/testimonials/widgets/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN"
PATCH
/sites/:site_id/testimonials/widgets/:id.json
Altere um widget
testimonial_widgets_update
Só as entradas enviadas mudam. Uma mudança salva chega a todo site em que o widget está sem tocar no código deles, porque as suas cópias em cache são limpas.
Permissão: content.write
curl -X PATCH https://privatusanalytics.com/sites/:site_id/testimonials/widgets/:id.json \
-H "Authorization: Bearer $PRIVATUS_TOKEN" \
-H "Content-Type: application/json" -d '{…}'