Referência da API
Integre os dados de SEO da SignalSumo diretamente em suas próprias ferramentas, painéis e fluxos de trabalho.
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"
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,/gsce/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.
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
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.
| Plano | Chamadas mensais de API | Reinicializações |
|---|---|---|
| Pro | 20 | 1º de cada mês |
| Agency | 100 | 1º 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:
| Endpoint | Quando a cota de recurso está esgotada |
|---|---|
| /keyword-research | Retorna 429 QUOTA_EXCEEDED. Nunca gasta créditos — seguro para loop. |
| /backlinks | Recai 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-audit | Retorna 429 QUOTA_EXCEEDED quando a contagem mensal de rastreamento ou o orçamento de página rotativo se esgotam. |
"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.
| Plano | Solicitações por minuto |
|---|---|
| Pro | 20 |
| Agency | 60 |
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.
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ódigo | Mercado | Código | Mercado |
|---|---|---|---|
| 2840 | United States | 2276 | Germany |
| 2826 | United Kingdom | 2250 | France |
| 2124 | Canada | 2724 | Spain |
| 2036 | Australia | 2380 | Italy |
| 2356 | India | 2528 | Netherlands |
| 2392 | Japan | 2076 | Brazil |
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ódigo | Idioma | Código | Idioma |
|---|---|---|---|
| en | Inglês | pt | Português |
| es | Espanhol | nl | Holandês |
| fr | Francês | ru | Russo |
| de | Alemão | ja | Japonês |
| it | Italiano | zh | Chinês |
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
| HTTP | código | Significado |
|---|---|---|
| 400 | BAD_REQUEST | Sintaxe de solicitação malformada |
| 401 | UNAUTHORIZED | Chave de API ausente ou inválida |
| 403 | FORBIDDEN | Acesso à API não disponível no seu plano (Pro ou Agency necessário) |
| 404 | NOT_FOUND | Endpoint ou recurso não encontrado |
| 402 | PAYMENT_REQUIRED | Cota de recurso esgotada e nenhum crédito restante (backlinks) |
| 422 | VALIDATION_ERROR | Parâmetro obrigatório ausente ou valor inválido |
| 409 | ALREADY_RUNNING | A mesma solicitação já está sendo buscada para sua conta — tente novamente em breve e será um cache hit. Nada foi cobrado |
| 429 | RATE_LIMITED / QUOTA_EXCEEDED | Limite mensal de chamadas, controle por minuto ou quota de recurso — veja resets_at ou retry_after em meta |
| 502 | UPSTREAM_ERROR | Nenhum dado retornado pelo provedor de dados upstream |
| 500 | SERVER_ERROR | Erro 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.
| Rota | Autenticação | Melhor para |
|---|---|---|
| Conector hospedado | OAuth 2.1 — no key to copy | Claude e outros clientes MCP. Nada para instalar, sempre atualizado. |
@signalsumo/mcp em npm | Chave API na configuração do cliente | Instalações locais, configurações auto-hospedadas ou execução no seu próprio ambiente. |
| Esta API REST | Authorization: Bearer | Seus 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.
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
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.
page > 1 ou limit > 100 — sempre custa 1 crédito. Ver Planos e faturamento.
Parâmetros de consulta
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| domain | string | Sim | Domínio raiz, por exemplo, example.com (um URL completo também é aceito e normalizado) |
| página | inteiro | Não | Número da página, padrão 1 |
| limit | inteiro | Não | Resultados 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
| Campo | Descrição |
|---|---|
| domain_from / url_from | O site de origem e a página exata onde o link está |
| url_to | A página no seu domínio que está sendo vinculada |
| anchor | Texto âncora do link |
| dofollow | 1 = dofollow, 0 = nofollow |
| spam_score | Pontuação de spam da página de origem (0–100) |
| domain_from_rank / page_from_rank | Autoridade do domínio/página de origem, normalizada 0–100 |
| is_new / is_lost / is_broken | Sinalizadores de ciclo de vida do link (1/0) |
| first_seen / last_seen / lost_date | Quando o link foi visto pela primeira vez, última vez e (se aplicável) perdido |
| platform_type / country / tld_from | Plataforma, país e TLD do site de origem |
| item_type | Formato do link: anchor, image, redirect, … |
| page_from_status_code / url_to_status_code | Status HTTP da página de origem / página vinculada |
| attributes | Atributos rel do link, por exemplo. ["noopener","nofollow"] |
| kw_top3 / kw_top10 / kw_top100 | Palavras‑chave que a página de origem posiciona nos top 3 / 10 / 100 |
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.
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)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| keyword | string | Sim | Palavra‑chave semente, máx. 200 caracteres |
| location_code | inteiro | Não | Código de localização, padrão 2840 (Estados Unidos) |
| language_code | string | Não | Código de idioma, padrão en |
| limit | inteiro | Não | Má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.
| Campo | Descrição |
|---|---|
| search_volume | Médias de buscas mensais |
| cpc | Custo‑por‑clique médio (USD) |
| competition | Concorrência paga, 0–1 |
| competition_level | LOW / MEDIUM / HIGH |
| difficulty | Dificuldade de ranking orgânico, 0–100 (null se ainda não calculado) |
| intent | Intenção de busca, por exemplo, ["Commercial"] |
| trend | Histórico de volume de 12 meses — { y, m, v } por mês |
| growth | Variação de volume %: m mensal, q trimestral, y anual |
| recursos_serp | Tipos de recursos SERP presentes, por exemplo, ["organic","people_also_ask"] |
| lance_baixo / lance_alto | Faixa de lance no topo da página (USD) |
| méd_backlinks / méd_ref_domains | Média de backlinks / domínios de referência das páginas que estão classificadas agora |
| classificação_domínio_competidor | Autoridade média (0–1000) das páginas que estão classificadas agora |
| resultados_se | Total de resultados concorrentes para a palavra‑chave |
| relacionado | Até 8 sub‑palavras‑chave relacionadas (apenas linhas relacionadas) |
| balde_de_correspondência | Relação com a semente: similar, related, ou question |
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.
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)
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| url | string | Sim | URL completa para rastrear, ex. https://example.com |
| máx_páginas | inteiro | Não | Má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. |
| profundidade | inteiro | Não | Profundidade 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}
Verifique o status de um trabalho assíncrono. Verifique a cada 10–15 segundos até status é complete ou failed.
Valores de status
| Status | Significado |
|---|---|
| na fila | Trabalho aceito, ainda não iniciado |
| em execução | Rastreamento em andamento — verifique progress (0–100) |
| concluído | Concluído — data campo contém resultados |
| falhou | Rastreamento 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
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âmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| project_id | inteiro | Não | Restrinja a um projeto. Omitir para retornar palavras‑chave de todos os projetos que você possui. |
| limit | inteiro | Não | 1–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
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âmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| keyword_id | inteiro | Sim | De /rank/keywords. Uma palavra‑chave que você não possui retorna 404 NOT_FOUND. |
| dias | inteiro | Não | 1–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
| Campo | Significado |
|---|---|
| primeiro | Posição no mais antigo ponto na janela |
| mais recente | Posição na verificação mais recente |
| melhor | Menor número alcançado (melhor classificação) |
| pior | Maior 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
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
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âmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| property_id | inteiro | Sim | De /gsc/properties. Uma propriedade que você não possui retorna 404 NOT_FOUND. |
| dim | string | Não | query (padrão), page, country, device, date, searchAppearance |
| from | string | Não | YYYY-MM-DD, padrão 28 dias atrás |
| to | string | Não | YYYY-MM-DD, padrão hoje |
| sort | string | Não | clicks (padrão), impressions, ctr, position, key |
| dir | string | Não | desc (padrão) ou asc |
| limit | inteiro | Não | 1–500, default 100 |
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
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
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âmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| project_id | inteiro | Sim | De /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:
| Campo | Pergunta que responde |
|---|---|
mention_rate | Of the prompts we tested, what share mentioned you at all? — coverage. |
brand_share_pct | Of 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
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.
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ão | Data | Alterações |
|---|---|---|
| v1.2 | Ago 2026 | Documentados 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.1 | Jul 2026 | Respostas 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.0 | Jun 2026 | Lançamento inicial — uso, backlinks, pesquisa de palavras‑chave, auditoria de site, vagas |
Dúvidas? Email [email protected]