O que é um monitor
Um monitor é um conjunto nomeado de prompts em um mercado: uma lista de prompts, os mecanismos que vão recebê-los, os aliases que significam “sua marca”, opcionalmente seus domínios e alguns concorrentes, um país e um intervalo. Cada execução agendada envia prompts × mecanismos tarefas assíncronas comuns, e cada resposta concluída é pontuada uma vez e guardada. A pontuação é propositalmente restrita, e os dados não respondem além do que armazenam:- Ela registra se um alias da marca aparece no texto da resposta e em qual offset de caractere; se a resposta citou um dos seus domínios cadastrados; e quais dos concorrentes configurados apareceram na mesma resposta.
- Ela não gera nota de sentimento nem estimativa de participação de mercado. Uma posição é um lugar entre as marcas que as respostas citam, como no ranking de um monitor de categoria (veja abaixo).
Os concorrentes são encontrados para você
Você não precisa listar concorrentes. Quando a primeira execução de um monitor termina, lemos as respostas recentes com um modelo de linguagem e mantemos as marcas que vendem o mesmo que você e aparecem em pelo menos duas respostas, até 15. A leitura se repete a cada 30 dias, então rivais novos entram e os que deixam de ser citados saem.- Concorrentes encontrados trazem
source: "auto". Os que você adiciona trazemsource: "user", e a leitura nunca os altera nem remove. - Quando a lista encontrada muda, as respostas guardadas do monitor são contadas de novo com ela, para que toda marca de um
relatório seja medida sobre as mesmas respostas.
competitorsReadAtno monitor mostra quando foi a última leitura. - Nomes em alfabeto latino batem como palavras inteiras, então “replicates” não conta como menção à marca Replicate.
Separe os monitores com intenção
Monitores diferentes representam temas ou mercados diferentes e são relatórios separados: cada um tem sua própria janela, sua própria definição de pontuação e sua própria agenda. Dois hábitos valem a pena:- Um monitor por tema e mercado, para que a coorte do relatório continue comparável. Misturar “melhor CRM” e “como precificar um CRM” em um conjunto faz a média de duas intenções diferentes em um único número.
- Escreva os prompts como um comprador e nunca inclua sua própria marca. Um prompt que contém a marca é sempre uma menção, então mostra 100% para sempre e não mede nada. Nomes de concorrentes podem entrar e muitas vezes rendem os prompts mais úteis que você pode escrever.
Monitores de categoria: ordene as marcas de um mercado
Um monitor de marca acompanha uma marca. Um monitor de categoria acompanha um mercado: você dá nome à categoria, agrupa as perguntas por subárea, e o relatório ordena as marcas que os mecanismos citam ao responder. Defina"mode": "CATEGORY" ao criar o monitor. mode é BRAND por padrão e permanece fixo durante toda a vida do monitor,
porque decide o que cada linha armazenada significa.
A agenda, o custo, a janela, os filtros,
quality, as fontes, as citações, os resultados e as respostas funcionam como
em um monitor de marca. Um monitor de categoria não tem alerta, então POST /v1/monitors/{id}/alerts/test retorna 400.
O que o relatório ordena
GET /v1/monitors/{id}/analytics retorna a visão de categoria. stats e previous trazem runs, named (respostas
que citam ao menos uma marca acompanhada) e namedRate; changes.namedRatePp é a variação em pontos, e o objeto
category traz o ranking:
rankordena as marcas pelo número de respostas que as citam: é uma posição entre as marcas que essas respostas citam. Uma marca que nenhuma resposta citou temrank: null.- O
mentionRatede uma marca divide pelo própriosampleSizedela, as respostas pontuadas enquanto a marca estava na lista. Uma marca que você adiciona hoje é medida a partir de hoje. shareOfVoiceé100 × menções dessa marca / todas as menções de marcas acompanhadasna janela, então as participações de uma janela somam 100.GET /v1/monitorsacrescentaleader(a marca mais citada, com sua taxa) a cada monitor de categoria. As contagensmentionedeciteddele são sempre0.GET /v1/monitors/{id}/answers/{taskId}retornamode, umaliasesvazio e as marcas acompanhadas comocompetitors.
Pesquise os prompts pela demanda de busca
POST /v1/monitors/research recebe o corpo da requisição de Prompt Research, custa os
mesmos 12 créditos e retorna o mesmo resultado, enviado em nome da sua conta. Leia a tarefa enfileirada com
GET /v1/async/task/{id}; o id está em data.task.id na resposta.
monitorSet.prompts como prompts, o topic de cada prompt como sua subárea em promptTopics e brands[].brand
como competitors. O botão Executar pesquisa do painel faz o mesmo e preenche o formulário; nada é salvo até você
criar o monitor.
Custo e agenda
Uma execução enfileira uma tarefa por prompt e por mecanismo, ao preço em créditos publicado de cada mecanismo. A agenda se repete até você pausar ou excluir o monitor, então o que você escolhe ao criá-lo é um custo recorrente:- Uma execução não é uma rajada. As tarefas entram conforme a concorrência do plano e a fila permitem, então uma
execução acima do limite de um plano gratuito chega ao longo de alguns minutos em vez de ser descartada. Acompanhe
health.pendingem um relatório para ver uma execução em andamento. - A próxima janela é um horário, não uma garantia.
nextRunAté quando a execução vence; um monitor pausado por uma semana volta um intervalo depois de ser reativado, sem disparar as execuções perdidas.
Endpoints
Todos usam a mesma chave bearer do restante da API (veja Autenticação). Um monitor de outra conta
responde
404, não 403.
Crie um monitor
name, engines, prompts, aliases e intervalHours são obrigatórios em um monitor de marca; um monitor de categoria recebe category no lugar de aliases. Cada lista aceita um array ou uma única
string separada por quebras de linha; as entradas são aparadas, linhas vazias descartadas e duplicatas removidas.
country escolhe o mercado para o qual os mecanismos respondem e não traduz os prompts. prompts × engines precisa
ficar igual ou abaixo do limite tasksPerRun de capabilities.
Os mecanismos são as superfícies de prompt agendáveis: CHATGPT, GEMINI, PERPLEXITY, GOOGLE, AIMODE,
NAVER_AI_BRIEF, NAVER_AI_TAB e o alias obsoleto NAVER. GOOGLE_AIO e GOOGLE_AIMODE são aceitos e salvos como
GOOGLE e AIMODE. Tarefas de análise como SOURCE_INFLUENCE não são superfícies de prompt e não podem ser agendadas
em um monitor.
Uma chave restrita a alguns mecanismos só pode agendar esses mecanismos; qualquer outro resulta em
403 KEY_SCOPE_DENIED. O limite de monitores da conta retorna 409 MONITOR_LIMIT.
Execute e depois leia o relatório
POST /v1/monitors/{id}/run faz a próxima execução vencer imediatamente, e as tarefas de resposta aparecem em cerca de
um minuto. Ela é cobrada como uma execução agendada, e repetir a chamada enquanto aquela janela ainda está vencida não
cobra duas vezes.
GET /v1/monitors/{id}/analytics é o contrato de onde deve sair cada parte do seu relatório. A janela é
semiaberta e em UTC (since inclusivo, until exclusivo), e você a escolhe de uma destas duas formas:
Dois filtros opcionais se aplicam a todas as seções ao mesmo tempo:
engine (id canônico ou alias público) e
prompt (texto exato, até 2.000 caracteres). As linhas são indexadas pelo texto do prompt, então um prompt removido
depois do monitor continua consultável.
Todas as seções compartilham essa coorte, e o intervalo anterior tem exatamente a mesma duração e os mesmos filtros,
então a comparação é equivalente:
O que os números significam
Leia isto antes de dar nome a um painel. As definições são o contrato publicado, eGET /v1/monitors/capabilities as
retorna como metrics para que um cliente possa exibi-las ao lado dos números.
mentionRateda janela, dos grupos por mecanismo e dos grupos por célula é100 × respostas com menção / respostas pontuadas. É ponderado por respostas, não uma média das taxas por mecanismo, então um mecanismo movimentado não é sufocado por um quieto. (A taxa própria de uma marca tem denominador próprio, explicado a seguir.)citationRatetem o mesmo formato para as respostas que citaram um dos seus domínios cadastrados. Sem domínios cadastrados, é sempre zero, porque o rastreamento de citações fica desligado.- A taxa de uma marca divide pelo próprio
sampleSize, não pelo total da janela. Para sua marca, são todas as respostas pontuadas; para um concorrente, só as respostas pontuadas enquanto ele estava no monitor. Adicione um concorrente hoje e o primeiro relatório dele cobre as respostas que o mediram: o histórico anterior não conta contra ele. Uma marca sem respostas elegíveis informamentionRate: null, não 0%, porque 0% seria lido como um sumiço real. shareOfVoiceembrandsé100 × menções daquela marca / todas as menções das marcas acompanhadasna janela, então as participações de uma janela somam 100. Ele compara marcas dentro das respostas que você coletou para estes prompts; não é participação de mercado nem ranking de visibilidade. OshareOfVoicedo endpoint de detalhe legado é a visão antiga de penetração nas respostas, em que cada marca é contada em relação às respostas coletadas e os números podem somar mais de 100. Não misture os dois no mesmo gráfico.competitorOnly(e a listaopportunities) conta as respostas que citaram um concorrente configurado enquanto sua marca estava ausente. É a lacuna sobre a qual você pode agir.- As taxas são anuláveis, não zero. Sem respostas na janela, o valor é
null; uma taxa zero significa que houve respostas e nenhuma correspondeu. - Uma observação concluída sem resposta conta como não mencionada. Ela fica no denominador, e
quality.noAnswerObservationsdiz quantas houve. Uma tarefa com falha é excluída de todas as taxas e aparece só emhealth: um mecanismo quebrado encolhe a amostra em vez de virar ausência em silêncio, equalitynunca a reconstrói como ausência (historicalFailuresé semprenull). - Variações são retidas quando enganariam.
changese omentionRateChangePppor célula ficamnull, equality.comparableficafalse, quando um período não tem respostas (insufficient_periods), quando há linhas pontuadas antes de existir o contexto de pontuação (legacy_scoring_unknown) ou quando a definição de pontuação mudou entre os períodos (scoring_definitions_changed). Linhas históricas mantêm as definições com que foram pontuadas (quality.scoring), então mudar aliases ou concorrentes nunca reescreve o passado. A única exceção é a leitura mensal de concorrentes descrita acima. - O tamanho da amostra é publicado.
quality.lowSampleé true abaixo de 30 respostas pontuadas,quality.missingCellsconta as células prompt × mecanismo configuradas ainda sem respostas, equality.partialDaysaponta os dias UTC que a janela corta ao meio: a contagem menor de um dia parcial é aritmética, não queda.
position em uma linha pontuada é o offset de caractere da primeira ocorrência de alias no texto da resposta: um
indicador aproximado de destaque, não um ranking. É null quando a marca não aparece, e por isso 0 nunca precisa
significar “ausente”.
De onde vêm as respostas
GET /v1/monitors/{id}/sources responde a “quais páginas estão ganhando estes prompts”, com a mesma janela e os mesmos
filtros do relatório, contando respostas distintas em vez de citações brutas, então uma página citada três vezes em
uma resposta conta uma vez.
Cada linha traz
citations e prompts (ambos contagens de respostas distintas), own para seus domínios cadastrados e
um evidenceTaskId que você pode abrir com o endpoint de respostas. Não há corte silencioso dos N primeiros: todo
domínio ou página da janela pode ser alcançado seguindo o cursor.
Citações ao longo do tempo
GET /v1/monitors/{id}/citations devolve os dados dos gráficos de citações do painel: o total
diário de citações da janela e uma série diária para cada domínio e página principal. Ele só lê
resultados armazenados, então não gasta créditos.
Aqui uma citação é uma página que aparece em uma resposta, então a mesma página duas vezes na
mesma resposta conta uma vez.
/sources conta respostas distintas, por isso os números podem
diferir.
A participação de uma fonte é o seu
citations dividido por totals.citations. kind, q
e offset só restringem as listas; totals, days e types sempre cobrem todas as fontes
da janela.
Exporte as linhas pontuadas
GET /v1/monitors/{id}/results retorna as próprias linhas, para carga em um data warehouse, uma apresentação semanal
ou uma planilha.
A paginação é um keyset sobre
(ranAt, id) com precisão de microssegundos, então linhas com o mesmo timestamp não podem
ser puladas nem repetidas. Para tornar a extração repetível: envie since e until explícitos, mantenha-os fixos e
siga nextCursor até ele ser null. Mudar a janela entre páginas pode pular ou repetir linhas. Trate o cursor como
opaco: ele é devolvido e reenviado, nunca montado por você.
Com format=csv, a resposta é text/csv (UTF-8 com BOM, para o Excel abrir corretamente) e o estado da paginação vai
para os cabeçalhos, porque um corpo CSV não tem outro lugar para ele:
As colunas são
ran_at, monitor, engine, prompt, mentioned, cited, position, competitors, task_id, mais
answer_text, sources, scoring_context quando includeEvidence=true (sources e scoring_context como texto JSON nas
células). Células que poderiam ser lidas como fórmula de planilha são neutralizadas antes da gravação, então texto de
terceiros não vira fórmula na sua planilha.
Leia a resposta por trás de um número
GET /v1/monitors/{id}/answers/{taskId} retorna a evidência guardada de uma linha:
answerText: a resposta como o mecanismo deu, em markdown quando disponível, no máximo 8.000 caracteres, cortada com reticências quando era mais longa.sources: as citações na ordem do mecanismo, cada uma com seu rótulo e sua posição (a partir de 1) naquela lista.aliasesecompetitors: com o que esta linha foi comparada, para que a menção possa ser conferida em vez de aceita na confiança.scoringContext: a definição exata usada, com um hashversion, o horário da pontuação,answerPresenteevidenceTruncatedquando o texto acima foi cortado.
scoringKnown: false com os aliases atuais do
monitor e um evidenceTruncated null. answerText é null quando o mecanismo não retornou texto de resposta.
Erros nesta superfície
O envelope é o mesmo de todo o resto (veja Erros); os códigos específicos do monitoramento são:Um agente no circuito
Uma sequência prática para um agente ou script, usando só os endpoints desta página. É ilustrativa: troque pela sua chave, pelo id do seu monitor e pela sua janela.GET /v1/monitors/capabilities: leia os mecanismos, preços e limites antes de gastar qualquer coisa.GET /v1/monitors: reutilize um monitor existente para o tema e o mercado, ou usePOST /v1/monitorspara criar um (opcionalmente chamando antesPOST /v1/monitors/suggeste editando os candidatos).POST /v1/monitors/{id}/run: se precisar de respostas antes da próxima janela agendada.GET /v1/monitors/{id}/analytics?days=30&engine=CHATGPT: leia primeiroquality(comparable,lowSample,missingCells,partialDays) e depois os números. Faça polling atéhealth.pendingse estabilizar equality.sampleSizeparar de crescer.GET /v1/monitors/{id}/sources?days=30&groupBy=page: pagine comnextCursorpara achar as páginas que ganham os prompts.GET /v1/monitors/{id}/answers/{taskId}: abra a resposta por trás da primeira entrada deopportunitiesantes de decidir qualquer coisa.GET /v1/monitors/{id}/results?since=...&until=...&includeEvidence=true&format=csv: exporte a mesma janela, seguindox-next-cursoraté ele ficar vazio.
get_monitor_capabilities, list_monitors,
get_monitor, create_monitor, update_monitor, delete_monitor, run_monitor, get_monitor_analytics,
get_monitor_sources, get_monitor_results, get_monitor_answer, suggest_monitor_prompts, get_monitor_alerts,
test_monitor_alert). As escritas são anotadas como mutações, e create_monitor e run_monitor avisam que consomem
créditos antes de serem chamadas.
Limites
Veja os preços e a referência de mecanismos antes de aumentar o volume.