Skip to main content
Os monitores repetem um conjunto salvo de prompts conforme uma agenda e pontuam as respostas de IA resultantes para a sua marca e os concorrentes dela. Esta página é o contrato da API: como configurar um monitor, o que cada número significa, como ler as fontes por trás dele e como exportar as respostas por baixo. Para ver os mesmos dados no painel, comece pelo guia do produto. Todas as chaves, ids, marcas e prompts desta página são exemplos. Nada aqui é uma credencial ou um monitor real.

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 trazem source: "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. competitorsReadAt no 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:
  • rank ordena 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 tem rank: null.
  • O mentionRate de uma marca divide pelo próprio sampleSize dela, 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 acompanhadas na janela, então as participações de uma janela somam 100.
  • GET /v1/monitors acrescenta leader (a marca mais citada, com sua taxa) a cada monitor de categoria. As contagens mentioned e cited dele são sempre 0.
  • GET /v1/monitors/{id}/answers/{taskId} retorna mode, um aliases vazio e as marcas acompanhadas como competitors.

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.
Use 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:
Por exemplo, 12 prompts no ChatGPT (2 créditos) e no Gemini (1 crédito) são 24 tarefas e 36 créditos por execução, cerca de 1.080 créditos por mês com intervalo diário. Leia os preços atuais no endpoint de capabilities em vez de fixá-los no código. Vale conhecer duas propriedades da agenda antes de depender dela:
  • 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.pending em 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.
Encontrar seus concorrentes acrescenta 100 créditos por mês por monitor, divididos entre as execuções conforme o intervalo: cerca de 3 créditos por execução num monitor diário e cerca de 23 num semanal. A cobrança acontece depois que todas as tarefas de uma execução entram, então uma execução que seu saldo parou não paga nada por isso.

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, e GET /v1/monitors/capabilities as retorna como metrics para que um cliente possa exibi-las ao lado dos números.
  • mentionRate da 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.)
  • citationRate tem 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 informa mentionRate: null, não 0%, porque 0% seria lido como um sumiço real.
  • shareOfVoice em brands é 100 × menções daquela marca / todas as menções das marcas acompanhadas na 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. O shareOfVoice do 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 lista opportunities) 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.noAnswerObservations diz quantas houve. Uma tarefa com falha é excluída de todas as taxas e aparece só em health: um mecanismo quebrado encolhe a amostra em vez de virar ausência em silêncio, e quality nunca a reconstrói como ausência (historicalFailures é sempre null).
  • Variações são retidas quando enganariam. changes e o mentionRateChangePp por célula ficam null, e quality.comparable fica false, 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.missingCells conta as células prompt × mecanismo configuradas ainda sem respostas, e quality.partialDays aponta 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.
  • aliases e competitors: 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 hash version, o horário da pontuação, answerPresent e evidenceTruncated quando o texto acima foi cortado.
Linhas pontuadas antes de o contexto de pontuação ser guardado retornam 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.
  1. GET /v1/monitors/capabilities: leia os mecanismos, preços e limites antes de gastar qualquer coisa.
  2. GET /v1/monitors: reutilize um monitor existente para o tema e o mercado, ou use POST /v1/monitors para criar um (opcionalmente chamando antes POST /v1/monitors/suggest e editando os candidatos).
  3. POST /v1/monitors/{id}/run: se precisar de respostas antes da próxima janela agendada.
  4. GET /v1/monitors/{id}/analytics?days=30&engine=CHATGPT: leia primeiro quality (comparable, lowSample, missingCells, partialDays) e depois os números. Faça polling até health.pending se estabilizar e quality.sampleSize parar de crescer.
  5. GET /v1/monitors/{id}/sources?days=30&groupBy=page: pagine com nextCursor para achar as páginas que ganham os prompts.
  6. GET /v1/monitors/{id}/answers/{taskId}: abra a resposta por trás da primeira entrada de opportunities antes de decidir qualquer coisa.
  7. GET /v1/monitors/{id}/results?since=...&until=...&includeEvidence=true&format=csv: exporte a mesma janela, seguindo x-next-cursor até ele ficar vazio.
As mesmas operações ficam disponíveis para agentes como ferramentas MCP (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.