SignalSumo

Referência da API

Integre os dados de SEO da SignalSumo diretamente em suas próprias ferramentas, painéis e fluxos de trabalho.

Pro Agency Acesso à API está disponível nos planos Pro e Agency

Início rápido

Três passos para sua primeira resposta.

1. Crie uma chave de API

Em um plano Pro ou Agency, gere uma chave em Chaves API e copie-a — ela é exibida apenas uma vez.

2. Verifique a conexão

curl -H "Authorization: Bearer ss_live_your_key_here" \
     "https://signalsumo.com/api/v1/usage"

A 200 resposta com seu plano e chamadas restantes indica que você está conectado.

3. Faça sua primeira chamada de dados

curl -X POST \
     -H "Authorization: Bearer ss_live_your_key_here" \
     -H "Content-Type: application/json" \
     -d '{"keyword":"seo audit tool","limit":5}' \
     "https://signalsumo.com/api/v1/keyword-research"
É isso. Cada endpoint usa o mesmo Authorization: Bearer cabeçalho e retorna o mesmo envelope JSON — navegue pelos endpoints abaixo para parâmetros e campos de resposta.

Visão Geral

Todos os endpoints da API são servidos em:

https://signalsumo.com/api/v1/

Solicitações e respostas usam JSON. Cada resposta segue o mesmo envelope:

{
  "success": true,
  "data":    { ... },
  "meta":    { "timestamp": "2026-06-26T10:00:00+00:00" }
}

Erros seguem o mesmo formato com success: false e um error objeto em vez de data.

Os endpoints se dividem em dois grupos, e a diferença está no custo:

  • Endpoints de pesquisa — /backlinks, /keyword-research, /site-audit — fetch fresh data from outside SignalSumo. They draw feature quota or credits. See Planos e faturamento.
  • Endpoints de seus dados — everything under /rank, /gsc e /ai-visibility — read what your account has already collected. They are plain database reads: they cost sem créditos e sem cota de recurso, e eles nunca são recusados por exceder o limite mensal.
Os endpoints de dados são gratuitos em créditos e cota de recursos, mas cada chamada ainda é registrado no total mensal de chamadas da API — and that total is what gates the research endpoints. A long exploratory session can therefore use up the allowance your billed calls need. This applies equally to the Conector MCP, que funciona no mesmo medidor.

Autenticação

Passe sua chave de API no Authorization cabeçalho em cada requisição:

Authorization: Bearer ss_live_your_key_here

Alternativamente, você pode passá-lo como parâmetro de consulta (não recomendado para produção):

GET /api/v1/usage?api_key=ss_live_your_key_here
Gere e gerencie suas chaves API em signalsumo.com/api-keys. Each key is shown apenas uma vez no momento da criação — armazene-o com segurança.

O Authorization: Bearer cabeçalho é o método recomendado. A API também envia cabeçalhos CORS permissivos, permitindo chamadas diretas de ferramentas baseadas em navegador. Mantenha chaves secretas no servidor em produção.

Planos e faturamento

Acesso à API está disponível no Pro e Agency planos. Dois medidores independentes governam o uso — uma chamada só é atendida quando ambos permiti‑lo.

1. Chamadas mensais de API

Cada solicitação (incluindo hits de cache e erros que chegam a um endpoint) conta como uma chamada de API.

PlanoChamadas mensais de APIReinicializações
Pro201º de cada mês
Agency1001º de cada mês

Exceder isso retorna HTTP 429 (RATE_LIMITED) com um resets_at campo em meta. Verifique seu limite ativo e uso a qualquer momento via GET /usage.

2. Cota por recurso e créditos

Além do medidor de chamadas, os endpoints de dados consomem sua própria cota mensal de recursos (a mesma alocação que seu painel conectado usa). Como cada um se comporta quando essa cota se esgota:

EndpointQuando a cota de recurso está esgotada
/keyword-researchRetorna 429 QUOTA_EXCEEDED. Nunca gasta créditos — seguro para loop.
/backlinksRecai para 1 crédito por solicitação. A profundo consulta (page > 1 ou limit > 100) always costs 1 credit. No credits → 402 PAYMENT_REQUIRED.
/site-auditRetorna 429 QUOTA_EXCEEDED quando a contagem mensal de rastreamento ou o orçamento de página rotativo se esgotam.
Hits de cache são gratuitos em relação à cota de recurso. Os resultados são armazenados em cache e compartilhados com seu painel, então um domínio ou palavra‑chave já pesquisado recentemente retorna instantaneamente, marcado "cached": true em meta, e não consome cota de recurso ou créditos (ainda conta como uma chamada de API).

3. Solicitações por minuto

Separadamente dos medidores mensais, seu plano define quantas solicitações por minuto você pode fazer. Isso limita um loop descontrolado ou uma chave vazada a algo recuperável — uma alocação mensal não diz nada sobre gastar tudo dentro de uma hora.

PlanoSolicitações por minuto
Pro20
Agency60

Cada endpoint conta separadamente, de modo que usar sua cota de backlinks nunca impede a pesquisa de palavras‑chave. Excedê‑la retorna 429 com retry_after (segundos) e limit em meta. Solicitações recusadas não são contabilizadas, então aguarde retry_after sempre limpa isso.

Solicitações idênticas são respondidas uma única vez. Se várias das suas solicitações fizerem a mesma pergunta ao mesmo tempo, uma delas será buscada e as demais receberão o mesmo resultado — cobrado uma única vez, não a cada solicitação. Se a busca ainda estiver em andamento quando a sua chegar, você receberá 409 ALREADY_RUNNING; tente novamente em alguns segundos e será um acerto de cache.

Localizações e idiomas

/keyword-research aceita um location_code e language_code para localizar resultados. Ambos são opcionais — o padrão é os Estados Unidos (2840) e Inglês (en).

location_code

Um código de mercado numérico. Valores comuns:

CódigoMercadoCódigoMercado
2840United States2276Germany
2826United Kingdom2250France
2124Canada2724Spain
2036Australia2380Italy
2356India2528Netherlands
2392Japan2076Brazil

Mais de 90 mercados são suportados. Um código não reconhecido retorna 422 UNSUPPORTED_LOCATION em vez de recorrer aos Estados Unidos — ser cobrado por dados americanos que você não solicitou é pior do que ser informado de que o código está errado. Ligue GET /api/v1/keyword-research/locations para a lista completa.

language_code

Um código de idioma de duas letras. Valores suportados:

CódigoIdiomaCódigoIdioma
enInglêsptPortuguês
esEspanholnlHolandês
frFrancêsruRusso
deAlemãojaJaponês
itItalianozhChinês
Somente os idiomas listados acima são suportados. Qualquer outro language_code recorre a Inglês em vez de retornar um erro — então verifique o código se os resultados parecerem inesperadamente em inglês.

Códigos de Erro

HTTPcódigoSignificado
400BAD_REQUESTSintaxe de solicitação malformada
401UNAUTHORIZEDChave de API ausente ou inválida
403FORBIDDENAcesso à API não disponível no seu plano (Pro ou Agency necessário)
404NOT_FOUNDEndpoint ou recurso não encontrado
402PAYMENT_REQUIREDCota de recurso esgotada e nenhum crédito restante (backlinks)
422VALIDATION_ERRORParâmetro obrigatório ausente ou valor inválido
409ALREADY_RUNNINGA mesma solicitação já está sendo buscada para sua conta — tente novamente em breve e será um cache hit. Nada foi cobrado
429RATE_LIMITED / QUOTA_EXCEEDEDLimite mensal de chamadas, controle por minuto ou quota de recurso — veja resets_at ou retry_after em meta
502UPSTREAM_ERRORNenhum dado retornado pelo provedor de dados upstream
500SERVER_ERRORErro interno — pode tentar novamente

Clientes MCP e LLM

Se o seu objetivo é permitir que um assistente como Claude leia esses dados de forma conversacional, você não precisa escrever um cliente. SignalSumo fala o Model Context Protocol, que expõe os endpoints abaixo como ferramentas que um LLM pode chamar diretamente.

RotaAutenticaçãoMelhor para
Conector hospedadoOAuth 2.1 — no key to copyClaude e outros clientes MCP. Nada para instalar, sempre atualizado.
@signalsumo/mcp em npmChave API na configuração do clienteInstalações locais, configurações auto-hospedadas ou execução no seu próprio ambiente.
Esta API RESTAuthorization: BearerSeus próprios scripts, dashboards e integrações de back-end.

All three read the same data through the same endpoints and the same plan limits — they differ only in how the caller authenticates. The npm package uses slightly different tool names from the hosted connector; its README is the reference for those. Source: github.com/signalsumo/mcp.

O acesso ao MCP é governado por sua própria flag de plano, separada do acesso à API REST. Verifique seu plano se um cliente autentica mas toda chamada de ferramenta é recusada.

GET /api/v1/usage

GET /api/v1/usage

Retorna o uso da sua cota de API para o mês calendário atual.

Exemplo de solicitação

curl -H "Authorization: Bearer ss_live_xxxx" \
     "https://signalsumo.com/api/v1/usage"

Exemplo de resposta

{
  "success": true,
  "data": {
    "plan": "agency",
    "api_calls_used": 42,
    "api_calls_limit": 100,
    "unlimited": false,
    "resets_at": "2026-08-01"
  },
  "meta": {
    "timestamp": "2026-06-26T10:00:00+00:00",
    "key_name": "Production App"
  }
}
GET /api/v1/backlinks?domain={domain}

Retorna o perfil de backlinks de um domínio: um resumo overview, distribuição insights, e uma lista enriquecida de individual backlinks. Os resultados são armazenados em cache e compartilhados com seu painel (Pro: 2 dias, Agência: 7 dias); um acerto de cache é marcado "cached": true e não consome cota de recurso.

Este é o mesmo dado que o Verificador de Backlinks shows in the app, and the cache is shared — a domain you have already looked at there returns instantly here, free.

Uma solicitação padrão consome sua cota mensal de busca de backlinks (então 1 crédito se isso estiver esgotado). Um profundo solicitação — page > 1 ou limit > 100 — sempre custa 1 crédito. Ver Planos e faturamento.

Parâmetros de consulta

ParâmetroTipoObrigatórioDescrição
domainstringSimDomínio raiz, por exemplo, example.com (um URL completo também é aceito e normalizado)
páginainteiroNãoNúmero da página, padrão 1
limitinteiroNãoResultados por página, 1–200, padrão 100

Exemplo de solicitação

curl -H "Authorization: Bearer ss_live_xxxx" \
     "https://signalsumo.com/api/v1/backlinks?domain=example.com&limit=2"

Exemplo de resposta

{
  "success": true,
  "data": {
    "domain": "example.com",
    "total_backlinks": 48210,
    "referring_domains": 1824,
    "page": 1,
    "limit": 2,
    "overview": {
      "domain_rank": 71,
      "total_backlinks": 48210,
      "referring_domains": 1824,
      "referring_domains_nofollow": 640,
      "referring_main_domains": 1610,
      "referring_pages": 39044,
      "referring_ips": 1502,
      "referring_subnets": 1210,
      "dofollow_backlinks": 1184,
      "broken_backlinks": 220,
      "broken_pages": 96,
      "spam_score": 8,
      "first_seen": "2018-05-11 09:20:00",
      "lost_date": null
    },
    "insights": {
      "referring_links_types":          { "anchor": 30140, "image": 9800 },
      "referring_links_attributes":     { "noopener": 12000, "nofollow": 8400 },
      "referring_links_platform_types": { "blogs": 900, "cms": 640, "news": 210 },
      "referring_links_tld":            { "com": 1200, "org": 180 },
      "referring_links_countries":      { "US": 800, "GB": 210 },
      "referring_subnets": 1210,
      "referring_main_domains": 1610
    },
    "backlinks": [
      {
        "domain_from": "blog.example-news.com",
        "url_from": "https://blog.example-news.com/best-seo-tools",
        "url_to": "https://example.com/",
        "anchor": "SignalSumo",
        "dofollow": 1,
        "spam_score": 4,
        "first_seen": "2021-03-10 12:00:00",
        "last_seen": "2026-06-20 04:00:00",
        "semantic_location": "article",
        "platform_type": "blogs",
        "country": "US",
        "is_broken": 0,
        "domain_from_rank": 62,
        "page_from_rank": 41,
        "is_lost": 0,
        "lost_date": null,
        "is_new": 0,
        "item_type": "anchor",
        "page_from_title": "The Best SEO Tools in 2026",
        "page_from_status_code": 200,
        "url_to_status_code": 200,
        "domain_from_ip": "192.0.2.10",
        "tld_from": "com",
        "links_count": 2,
        "is_indirect_link": 0,
        "url_from_https": 1,
        "attributes": ["noopener"],
        "text_pre": "we recommend",
        "text_post": "for site audits",
        "kw_top3": 4,
        "kw_top10": 12,
        "kw_top100": 88
      }
    ]
  },
  "meta": { "timestamp": "2026-06-26T10:00:00+00:00", "cached": false }
}

Campos de backlink

CampoDescrição
domain_from / url_fromO site de origem e a página exata onde o link está
url_toA página no seu domínio que está sendo vinculada
anchorTexto âncora do link
dofollow1 = dofollow, 0 = nofollow
spam_scorePontuação de spam da página de origem (0–100)
domain_from_rank / page_from_rankAutoridade do domínio/página de origem, normalizada 0–100
is_new / is_lost / is_brokenSinalizadores de ciclo de vida do link (1/0)
first_seen / last_seen / lost_dateQuando o link foi visto pela primeira vez, última vez e (se aplicável) perdido
platform_type / country / tld_fromPlataforma, país e TLD do site de origem
item_typeFormato do link: anchor, image, redirect, …
page_from_status_code / url_to_status_codeStatus HTTP da página de origem / página vinculada
attributesAtributos rel do link, por exemplo. ["noopener","nofollow"]
kw_top3 / kw_top10 / kw_top100Palavras‑chave que a página de origem posiciona nos top 3 / 10 / 100

POST /api/v1/keyword-research

POST /api/v1/keyword-research

Retorna um conjunto completo de métricas para uma palavra‑chave semente — volume de busca, CPC, concorrência, dificuldade, intenção de busca, tendência de volume de 12 meses, recursos SERP e mais — além de uma lista classificada de palavras‑chave relacionadas com os mesmos campos. Síncrono — responde imediatamente.

Estas são as métricas que Ferramenta de Pesquisa de Palavras‑chave exibe. Depois de escolher as palavras‑chave que valem a pena perseguir, o Rank Tracker follows their positions daily — and /rank/keywords lê essas posições de volta, gratuitamente.

Este endpoint consome sua cota mensal de buscas por palavra‑chave e nunca consome créditos: uma vez que a cota é consumida, ele retorna 429 QUOTA_EXCEEDED, então é seguro chamar em loop. Consultas recentes são servidas a partir do cache (marcadas "cached": true) sem custo de cota.

Corpo da Requisição (JSON)

CampoTipoObrigatórioDescrição
keywordstringSimPalavra‑chave semente, máx. 200 caracteres
location_codeinteiroNãoCódigo de localização, padrão 2840 (Estados Unidos)
language_codestringNãoCódigo de idioma, padrão en
limitinteiroNãoMáximo de palavras‑chave relacionadas retornadas, 1–100, padrão 10

Exemplo de solicitação

curl -X POST \
     -H "Authorization: Bearer ss_live_xxxx" \
     -H "Content-Type: application/json" \
     -d '{"keyword":"seo audit tool","limit":5}' \
     "https://signalsumo.com/api/v1/keyword-research"

Exemplo de resposta

{
  "success": true,
  "data": {
    "keyword": "seo audit tool",
    "location_code": 2840,
    "language_code": "en",
    "total_count": 80,
    "overview": {
      "search_volume": 2900,
      "cpc": 19.07,
      "competition": 0.11,
      "competition_level": "LOW",
      "difficulty": 77,
      "intent": ["Commercial"],
      "trend": [ { "y": 2026, "m": 5, "v": 2400 }, { "y": 2026, "m": 6, "v": 1600 } ],
      "serp_features": ["organic"],
      "growth": { "m": -33, "q": -16, "y": -64 },
      "bid_low": 4.72,
      "bid_high": 19.10,
      "avg_backlinks": 5087,
      "avg_ref_domains": 970,
      "comp_domain_rank": 486,
      "se_results": 41000000
    },
    "related_keywords": [
      {
        "keyword": "free seo audit tool",
        "search_volume": 1900,
        "cpc": 3.10,
        "competition": 0.68,
        "competition_level": "MEDIUM",
        "difficulty": 54,
        "intent": ["Commercial", "Transactional"],
        "trend": [ { "y": 2026, "m": 6, "v": 1900 } ],
        "serp_features": ["organic", "people_also_ask"],
        "growth": { "m": 4, "q": -2, "y": 11 },
        "bid_low": 1.20,
        "bid_high": 4.90,
        "avg_backlinks": 210,
        "avg_ref_domains": 88,
        "comp_domain_rank": 402,
        "se_results": 12000000,
        "related": ["website audit tool", "seo checker free"],
        "match_bucket": "similar"
      }
    ]
  },
  "meta": { "timestamp": "2026-06-26T10:00:00+00:00" }
}

Campos da Palavra‑chave

O overview (palavra‑chave semente) e cada related_keywords linha compartilha estes campos. Qualquer campo pode ser null quando os dados upstream não estão disponíveis.

CampoDescrição
search_volumeMédias de buscas mensais
cpcCusto‑por‑clique médio (USD)
competitionConcorrência paga, 0–1
competition_levelLOW / MEDIUM / HIGH
difficultyDificuldade de ranking orgânico, 0–100 (null se ainda não calculado)
intentIntenção de busca, por exemplo, ["Commercial"]
trendHistórico de volume de 12 meses — { y, m, v } por mês
growthVariação de volume %: m mensal, q trimestral, y anual
recursos_serpTipos de recursos SERP presentes, por exemplo, ["organic","people_also_ask"]
lance_baixo / lance_altoFaixa de lance no topo da página (USD)
méd_backlinks / méd_ref_domainsMédia de backlinks / domínios de referência das páginas que estão classificadas agora
classificação_domínio_competidorAutoridade média (0–1000) das páginas que estão classificadas agora
resultados_seTotal de resultados concorrentes para a palavra‑chave
relacionadoAté 8 sub‑palavras‑chave relacionadas (apenas linhas relacionadas)
balde_de_correspondênciaRelação com a semente: similar, related, ou question

POST /api/v1/site-audit

POST /api/v1/site-audit

Executa a mesma varredura que o Ferramenta de Auditoria de Site — broken links, redirect chains, missing titles and canonical problems, page by page.

Auditorias de site são assíncrono. Este endpoint retorna um job_id immediately. Poll GET /api/v1/jobs/{job_id} para resultados. Tempo típico de rastreamento: 1–5 minutos.

Corpo da Requisição (JSON)

CampoTipoObrigatórioDescrição
urlstringSimURL completa para rastrear, ex. https://example.com
máx_páginasinteiroNãoMáximo de páginas a rastrear (padrão 100). Limitado pelo limite de rastreamento por crawl do seu plano e pelo seu orçamento mensal restante de páginas.
profundidadeinteiroNãoProfundidade de rastreamento, 1–5, padrão 3

Exemplo de solicitação

curl -X POST \
     -H "Authorization: Bearer ss_live_xxxx" \
     -H "Content-Type: application/json" \
     -d '{"url":"https://example.com","max_pages":50}' \
     "https://signalsumo.com/api/v1/site-audit"

Resposta (202 Aceita)

{
  "success": true,
  "job_id": "a3f9b2c1d4e5f6a7b8c9d0e1f2a3b4c5",
  "status": "queued",
  "poll": "https://signalsumo.com/api/v1/jobs/a3f9b2c1d4e5f6a7b8c9d0e1f2a3b4c5",
  "meta": { "timestamp": "2026-06-26T10:00:00+00:00" }
}

GET /api/v1/jobs/{job_id}

GET /api/v1/jobs/{job_id}

Verifique o status de um trabalho assíncrono. Verifique a cada 10–15 segundos até status é complete ou failed.

Valores de status

StatusSignificado
na filaTrabalho aceito, ainda não iniciado
em execuçãoRastreamento em andamento — verifique progress (0–100)
concluídoConcluído — data campo contém resultados
falhouRastreamento falhou — error campo tem a razão

Exemplo de solicitação

curl -H "Authorization: Bearer ss_live_xxxx" \
     "https://signalsumo.com/api/v1/jobs/a3f9b2c1d4e5f6a7b8c9d0e1f2a3b4c5"

Resposta — Em execução

{
  "success": true,
  "data": {
    "job_id": "a3f9b2c1d4e5f6a7b8c9d0e1f2a3b4c5",
    "endpoint": "site-audit",
    "status": "running",
    "progress": 42,
    "created_at": "2026-06-26 10:00:00",
    "updated_at": "2026-06-26 10:01:30",
    "completed_at": null
  },
  "meta": { "timestamp": "2026-06-26T10:01:30+00:00" }
}

Resposta — Concluída

{
  "success": true,
  "data": {
    "job_id": "a3f9b2c1d4e5f6a7b8c9d0e1f2a3b4c5",
    "endpoint": "site-audit",
    "status": "complete",
    "progress": 100,
    "created_at": "2026-06-26 10:00:00",
    "updated_at": "2026-06-26 10:03:18",
    "completed_at": "2026-06-26 10:03:18",
    "data": {
      "audit_id": "AUDIT-A1B2C3-4567",
      "domain": "https://example.com",
      "pages_crawled": 47,
      "total_score": 78,
      "geo_score": 71,
      "issues": { "critical": 3, "warning": 12, "total": 15 },
      "report_url": "https://signalsumo.com/report?id=AUDIT-A1B2C3-4567"
    }
  },
  "meta": { "timestamp": "2026-06-26T10:03:18+00:00" }
}

GET /api/v1/rank/keywords

GET /api/v1/rank/keywords

Todas as palavras‑chave que sua conta acompanha, cada uma com o mercado e dispositivo em que foi medida e sua posição mais recente. Estes são os dados por trás do Rank Tracker — no crawl is triggered and nothing is charged.

country, language e device are returned on every row on purpose. A position is meaningless without them — comparing a desktop US ranking against a mobile UK one produces a decline that never happened.

Parâmetros de consulta

ParâmetroTipoObrigatórioDescrição
project_idinteiroNãoRestrinja a um projeto. Omitir para retornar palavras‑chave de todos os projetos que você possui.
limitinteiroNão1–500, default 100

Exemplo de solicitação

curl -H "Authorization: Bearer ss_live_xxxx" \
     "https://signalsumo.com/api/v1/rank/keywords?limit=1"

Exemplo de resposta

{
  "success": true,
  "data": {
    "keywords": [
      {
        "keyword_id": 4821,
        "keyword": "seo audit tool",
        "difficulty": 62,
        "search_volume": 8100,
        "cpc": 12.4,
        "country": "US",
        "language": "en",
        "device": "desktop",
        "status": "active",
        "project_id": 17,
        "project_domain": "example.com",
        "project_name": "Example Site",
        "last_checked": "2026-08-19",
        "current_position": 8,
        "previous_position": 11,
        "position_change": 3,
        "landing_page": "https://example.com/tools/audit",
        "gsc_clicks": 143,
        "gsc_impressions": 5210,
        "gsc_ctr": 2.74,
        "local_pack": false,
        "featured_snippet": true,
        "ai_overview": false
      }
    ],
    "count": 1
  },
  "meta": { "project_id": null, "limit": 1 }
}

position_change é positivo quando a palavra‑chave mudou acima. Uma palavra‑chave que nunca foi verificada retorna null para cada latest.* campo em vez de 0 — position zero would read as "ranked first".

GET /api/v1/rank/history

GET /api/v1/rank/history?keyword_id={id}

Histórico diário de posições para uma palavra‑chave monitorada, com a URL que ficou em posição e os recursos SERP presentes em cada verificação. Inclui um pré‑cálculo trend resumo.

Parâmetros de consulta

ParâmetroTipoObrigatórioDescrição
keyword_idinteiroSimDe /rank/keywords. Uma palavra‑chave que você não possui retorna 404 NOT_FOUND.
diasinteiroNão1–365, default 90

Exemplo de solicitação

curl -H "Authorization: Bearer ss_live_xxxx" \
     "https://signalsumo.com/api/v1/rank/history?keyword_id=4821&days=30"

Exemplo de resposta

{
  "success": true,
  "data": {
    "keyword": {
      "id": 4821,
      "keyword": "seo audit tool",
      "project_id": 17,
      "domain": "example.com",
      "project": "Example Site"
    },
    "history": [
      {
        "check_date": "2026-08-19",
        "position": 8,
        "previous_position": 11,
        "change": 3,
        "landing_page": "https://example.com/tools/audit",
        "gsc_clicks": 143,
        "gsc_impressions": 5210,
        "gsc_ctr": 2.74,
        "gsc_average_position": 8.6,
        "featured_snippet": true,
        "ai_overview": false,
        "people_also_ask": true,
        "local_pack": false,
        "images": false,
        "videos": false,
        "shopping": false,
        "knowledge_graph": false,
        "sitelinks": true
      }
    ],
    "trend": { "first": 14, "latest": 8, "best": 6, "worst": 15 }
  },
  "meta": { "days_requested": 30, "points": 1 }
}

Leitura trend

CampoSignificado
primeiroPosição no mais antigo ponto na janela
mais recentePosição na verificação mais recente
melhorMenor número alcançado (melhor classificação)
piorMaior número alcançado (pior classificação)

history é ordenado do mais recente ao mais antigo. best e worst ignorar verificações não ranqueadas, para que elas sejam null quando a palavra‑chave nunca ficou classificada na janela.

GET /api/v1/gsc/properties

GET /api/v1/gsc/properties

As propriedades do Google Search Console conectadas à sua conta, conforme exibido em Search Console Insights. Não aceita parâmetros.

This reads SignalSumo's synced copy — it does not call Google. last_synced_at informa quão recente está essa cópia.

Exemplo de solicitação

curl -H "Authorization: Bearer ss_live_xxxx" \
     "https://signalsumo.com/api/v1/gsc/properties"

Exemplo de resposta

{
  "success": true,
  "data": {
    "properties": [
      {
        "property_id": 31,
        "property_uri": "sc-domain:example.com",
        "display_name": "example.com",
        "status": "active",
        "last_synced_at": "2026-08-20 04:15:02",
        "last_sync_status": "ok",
        "google_email": "[email protected]",
        "is_sandbox": false
      }
    ],
    "count": 1
  }
}

GET /api/v1/gsc/queries

GET /api/v1/gsc/queries?property_id={id}

Clicks, impressions, CTR and average position for a synced property, grouped by whichever dimension you ask for. Despite the name it is not limited to queries — set dim para dividir os mesmos números por página, país, dispositivo ou data.

Parâmetros de consulta

ParâmetroTipoObrigatórioDescrição
property_idinteiroSimDe /gsc/properties. Uma propriedade que você não possui retorna 404 NOT_FOUND.
dimstringNãoquery (padrão), page, country, device, date, searchAppearance
fromstringNãoYYYY-MM-DD, padrão 28 dias atrás
tostringNãoYYYY-MM-DD, padrão hoje
sortstringNãoclicks (padrão), impressions, ctr, position, key
dirstringNãodesc (padrão) ou asc
limitinteiroNão1–500, default 100
Uma data malformada retorna 422 VALIDATION_ERROR, mas um não reconhecido dim ou sort o valor recai silenciosamente para o padrão em vez de gerar erro. Verifique o dim ecoado de volta em data antes de confiar em uma análise.

Exemplo de solicitação

curl -H "Authorization: Bearer ss_live_xxxx" \
     "https://signalsumo.com/api/v1/gsc/queries?property_id=31&dim=query&limit=2"

Exemplo de resposta

{
  "success": true,
  "data": {
    "property_id": 31,
    "dim": "query",
    "from": "2026-07-23",
    "to": "2026-08-20",
    "totals": {
      "clicks": 4820,
      "impressions": 216400,
      "ctr": 2.23,
      "position": 18.4
    },
    "rows": [
      { "key": "seo audit tool", "clicks": 143, "impressions": 5210, "ctr": 2.74, "position": 8.6 },
      { "key": "free seo checker", "clicks": 98,  "impressions": 7740, "ctr": 1.27, "position": 14.2 }
    ],
    "total_rows": 1842
  },
  "meta": { "sort": "clicks", "dir": "desc", "limit": 2 }
}

total_rows is the number of distinct keys in the period, not the number returned — use it to decide whether to raise limit. totals sempre cobre todo o período independentemente de limit.

GET /api/v1/ai-visibility/projects

GET /api/v1/ai-visibility/projects

As marcas que você acompanha em motores de resposta de IA, uma linha por projeto, com a pontuação de visibilidade atual e sua variação. Não aceita parâmetros. Powered by the AI Visibility Checker.

Scores are collected by scheduled scans, so this endpoint never calls an AI provider — it returns what the last scan stored.

Exemplo de solicitação

curl -H "Authorization: Bearer ss_live_xxxx" \
     "https://signalsumo.com/api/v1/ai-visibility/projects"

Exemplo de resposta

{
  "success": true,
  "data": {
    "projects": [
      {
        "id": 9,
        "domain": "example.com",
        "brand_name": "Example",
        "target_country": "US",
        "target_language": "en",
        "ai_engine": "all",
        "tracking_frequency": "weekly",
        "status": "active",
        "visibility_score": 41.8,
        "previous_visibility_score": 37.2,
        "score_change": 4.6,
        "created_at": "2026-05-02 11:20:44",
        "updated_at": "2026-08-18 06:02:11"
      }
    ],
    "count": 1
  }
}

score_change é null until a project has been scanned at least twice — a first scan has nothing to compare against, and reporting 0 seria lido como "sem movimento".

GET /api/v1/ai-visibility/share-of-voice

GET /api/v1/ai-visibility/share-of-voice?project_id={id}

Com que frequência assistentes de IA mencionam sua marca em comparação aos concorrentes monitorados ao lado, além da divisão completa das métricas da varredura mais recente.

Parâmetros de consulta

ParâmetroTipoObrigatórioDescrição
project_idinteiroSimDe /ai-visibility/projects. Um projeto que você não possui retorna 404 NOT_FOUND.

Exemplo de solicitação

curl -H "Authorization: Bearer ss_live_xxxx" \
     "https://signalsumo.com/api/v1/ai-visibility/share-of-voice?project_id=9"

Exemplo de resposta

{
  "success": true,
  "data": {
    "project": {
      "id": 9,
      "domain": "example.com",
      "brand_name": "Example",
      "target_country": "US",
      "ai_engine": "all",
      "visibility_score": 41.8,
      "previous_visibility_score": 37.2
    },
    "latest_snapshot": {
      "geo_score": 41.8,
      "mention_rate": 38.0,
      "avg_position": 2.4,
      "sentiment_avg": 0.62,
      "citation_rate": 21.5,
      "competition_score": 58.3,
      "prompts_evaluated": 50,
      "snapshot_date": "2026-08-18"
    },
    "share_of_voice": {
      "brand_mentions": 19,
      "competitor_mentions": 74,
      "total_mentions": 93,
      "brand_share_pct": 20.43
    },
    "competitors": [
      {
        "competitor_name": "Competitor One",
        "competitor_domain": "competitor1.com",
        "mention_count": 31,
        "visibility_score": 52.1,
        "avg_position": 1.9,
        "updated_at": "2026-08-18 04:41:07"
      }
    ]
  }
}

Dois percentuais diferentes

Estes são fáceis de confundir e respondem a perguntas diferentes:

CampoPergunta que responde
mention_rateOf the prompts we tested, what share mentioned you at all? — coverage.
brand_share_pctOf every brand mention across you and your tracked competitors, what share was yours? — competitive position.

latest_snapshot é null antes que a primeira varredura do projeto seja concluída. competitors retorna no máximo 20, ordenados por contagem de menções. brand_share_pct é null when no mentions have been recorded on either side — a share of nothing is not zero percent.

GET /api/v1/keyword-research/locations

GET /api/v1/keyword-research/locations

Todos os mercados POST /keyword-research aceita, para que você possa descobrir um location_code em vez de adivinhar um e ganhar um 422. Não aceita parâmetros.

Isso é deliberado não the full market list. Keyword research runs on the keyword database, which covers fewer markets than SERP work does — publishing the wider list here would only move the failure one call later.

Exemplo de solicitação

curl -H "Authorization: Bearer ss_live_xxxx" \
     "https://signalsumo.com/api/v1/keyword-research/locations"

Exemplo de resposta

{
  "success": true,
  "data": {
    "locations": [
      { "location_code": 2840, "location_name": "United States", "country_iso": "US", "language_code": "en" },
      { "location_code": 2826, "location_name": "United Kingdom", "country_iso": "GB", "language_code": "en" }
    ],
    "count": 94,
    "note": "These are the markets covered by the keyword database. Pass location_code to POST /keyword-research."
  }
}

Changelog

VersãoDataAlterações
v1.2Ago 2026Documentados os sete endpoints somente leitura que já estavam ativos: /rank/keywords, /rank/history, /gsc/properties, /gsc/queries, /ai-visibility/projects, /ai-visibility/share-of-voice e /keyword-research/locations. No behaviour changed — these were callable before, just undocumented. Added MCP and LLM client guidance.
v1.1Jul 2026Respostas de palavra‑chave e backlink expandidas para conjuntos completos de métricas (dificuldade, intenção, tendência, recursos SERP, campos de backlink enriquecidos, visão geral e insights). Resultados de auditoria de site adicionam geo_score e contagens de problemas. Referência de localização/idioma adicionada e detalhes de faturamento.
v1.0Jun 2026Lançamento inicial — uso, backlinks, pesquisa de palavras‑chave, auditoria de site, vagas

Dúvidas? Email [email protected]