Dois canos: registros para fora, logs para dentro.
Um feed de BI que entrega registros aditivos ao seu warehouse, e um webhook que recebe os logs de crawler do seu CDN.
Conector de BI
POST /bi/records retorna registros achatados de um intervalo de datas, de uma de duas tabelas — mentions ou sources — agrupados pelas dimensões que você passar. Atrás da flag bi_connector.
POST https://app.bementioned.ai/api/v1/projects/{project_id}/bi/records
{
"start_date": "2026-07-01",
"end_date": "2026-07-31",
"table": "mentions",
"dimensions": ["week", "brand_id", "model_channel_id"],
"limit": 10000,
"offset": 0
}
As dimensões são um conjunto fechado, com no máximo um grão de tempo por requisição:
date · week · month · model_channel_id · country_code · prompt_id · topic_id · tag_id · brand_id · domain · url · source_type
As linhas carregam só componentes aditivos — contagens, e somas ao lado das suas contagens — e nenhuma razão, de propósito: some os componentes na sua ferramenta de BI e divida uma vez, e o agregado é exato em qualquer agrupamento.
Um aviso que vale ler duas vezes: scope_response_count é o denominador da linha e se repete idêntico entre linhas irmãs de um mesmo escopo — nunca some entre marcas, domínios ou URLs. E source_type é sempre separado e ecoado em cada linha: api e web_scrape nunca são misturados.
Webhook de ingest — agent analytics
Envie os access logs do seu CDN ou servidor e o produto os transforma em visitas de agent analytics: quais crawlers de IA leram quais páginas. O token é cunhado quando você cria uma fonte de ingest no app — prefixo bmi_, mostrado uma vez, rotacionável.
curl -X POST https://app.bementioned.ai/api/v1/ingest/agent-logs \
-H "X-Ingest-Token: bmi_your_token_here" \
--data-binary @access-log-batch.csv
O endpoint guarda o payload verbatim e responde 202 com um recibo — linhas mantidas, e linhas descartadas por motivo:
{
"batch_id": 118,
"line_count": 5000,
"kept_count": 4816,
"dropped": { "no_ua_match": 121, "ip_spoof": 12, "malformed": 51 }
}
Limites: 25 MiB por lote, 600 lotes por minuto por fonte, e um bucket estrito de credencial inválida. 401 para token ausente ou revogado, 403 para fonte pausada, 413 acima do teto de tamanho, 429 com Retry-After.
Esta superfície não carrega plan flag nem o limite de serving: a captura nunca para por motivo de plano. As linhas são interpretadas pelo formato declarado da fonte; alegações de bot não verificáveis são descartadas e contabilizadas no recibo.