API 레퍼런스
SignalSumo의 SEO 데이터를 직접 자체 도구, 대시보드 및 워크플로에 통합하십시오.
빠른 시작
첫 번째 응답까지 세 단계.
1. API 키 생성
Pro 또는 Agency 플랜에서 키를 생성하려면 API 키 그리고 복사하십시오 — 한 번만 표시됩니다.
2. 연결 확인
curl -H "Authorization: Bearer ss_live_your_key_here" \
"https://signalsumo.com/api/v1/usage"
A 200 플랜 및 남은 호출 수와 함께 응답하면 연결된 상태가 됩니다.
3. 첫 데이터 호출 수행
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 헤더와 동일한 JSON을 반환합니다 — 매개변수와 응답 필드는 아래 엔드포인트를 확인하세요.
개요
모든 API 엔드포인트는 다음 아래에서 제공됩니다:
https://signalsumo.com/api/v1/
요청 및 응답은 다음을 사용합니다 JSON. 모든 응답은 동일한 포맷을 따릅니다:
{
"success": true,
"data": { ... },
"meta": { "timestamp": "2026-06-26T10:00:00+00:00" }
}
오류는 동일한 형태를 따릅니다: success: false 및 하나의 error object 대신 data.
엔드포인트는 두 그룹으로 나뉘며, 차이는 비용에 있습니다:
- 리서치 엔드포인트 —
/backlinks,/keyword-research,/site-audit— fetch fresh data from outside SignalSumo. They draw feature quota or credits. See 플랜 및 결제. - Your-data 엔드포인트 — everything under
/rank,/gsc및/ai-visibility— read what your account has already collected. They are plain database reads: they cost 크레딧 및 기능 할당량 없음, 그리고 월간 한도 초과로 인해 거부되지 않습니다.
인증
API 키를 다음에 전달하십시오: Authorization 모든 요청에 헤더:
Authorization: Bearer ss_live_your_key_here
또는 쿼리 매개변수로 전달할 수 있습니다(프로덕션에서는 권장되지 않음):
GET /api/v1/usage?api_key=ss_live_your_key_here
The Authorization: Bearer 헤더가 권장 방법입니다. API는 관용적인 CORS 헤더도 전송하므로 브라우저 기반 도구에서 직접 호출할 수 있습니다. 프로덕션에서는 비밀 키를 서버 측에 보관하세요.
플랜 및 결제
API 액세스는 Pro 및 Agency 플랜에 제공됩니다. 두 개의 독립 미터가 사용량을 관리합니다 — 호출은 다음 조건을 만족할 때만 처리됩니다 두 조건 모두 허용합니다.
1. 월간 API 호출
모든 요청(캐시 히트 및 엔드포인트에 도달하는 오류 포함)은 하나의 API 호출로 계산됩니다.
| 플랜 | 월간 API 호출 | 리셋 |
|---|---|---|
| Pro | 20 | 매월 1일 |
| Agency | 100 | 매월 1일 |
이를 초과하면 반환됩니다 HTTP 429 (RATE_LIMITED)와 함께 resets_at 필드가 포함된 meta. 언제든지 실시간 제한 및 사용량을 확인하십시오: GET /usage.
2. 기능별 할당량 및 크레딧
호출량 제한을 초과하면, 데이터 엔드포인트마다 자체 월별 기능 할당량을 사용합니다(로그인 대시보드와 동일한 할당량). 할당량이 소진될 경우 동작은 다음과 같습니다:
| 엔드포인트 | 기능 할당량이 소진될 때 |
|---|---|
| /keyword-research | 반환 429 QUOTA_EXCEEDED. 절대 크레딧을 사용합니다 — 반복 호출이 안전합니다. |
| /backlinks | 다음으로 대체됩니다 1 크레딧 요청당. A 심층 쿼리 (page > 1 또는 limit > 100) always costs 1 credit. No credits → 402 PAYMENT_REQUIRED. |
| /site-audit | 반환 429 QUOTA_EXCEEDED 월간 크롤링 횟수 또는 순환 페이지 예산이 소진된 경우. |
"cached": true 내 meta, 기능 할당량이나 크레딧을 차감하지 않습니다 (여전히 하나의 API 호출로 간주됩니다).
3. 분당 요청 수
월별 제한과 별도로, 플랜에 따라 분당 요청 수가 정해집니다. 이는 무제한 루프나 키 유출을 방지하고, 월 할당량이 한 시간 내에 모두 사용된다고는 보장하지 않습니다.
| 플랜 | 분당 요청 수 |
|---|---|
| Pro | 20 |
| Agency | 60 |
각 엔드포인트는 별도로 계산되므로 백링크 할당량을 사용해도 키워드 연구가 차단되지 않습니다. 초과 시 429 와 함께 retry_after (초) 및 limit 내 meta. 거부된 요청은 카운트되지 않으므로 대기하면서 retry_after 항상 초기화됩니다.
409 ALREADY_RUNNING; 몇 초 후에 다시 시도하면 캐시 적중됩니다.
위치 및 언어
/keyword-research 받아들입니다 location_code 및 language_code 결과를 현지화하려면. 두 옵션 모두 선택 사항이며 기본값은 미국 (2840) 및 영어 (en).
location_code
숫자형 시장 코드입니다. 일반적인 값:
| 코드 | 시장 | 코드 | 시장 |
|---|---|---|---|
| 2840 | United States | 2276 | Germany |
| 2826 | United Kingdom | 2250 | France |
| 2124 | Canada | 2724 | Spain |
| 2036 | Australia | 2380 | Italy |
| 2356 | 인도 | 2528 | 네덜란드 |
| 2392 | 일본 | 2076 | 브라질 |
90개 이상의 시장을 지원합니다. 인식되지 않은 코드는 422 UNSUPPORTED_LOCATION 미국으로 대체되는 것보다 — 요청하지 않은 미국 데이터에 대한 청구는 코드가 잘못되었다는 통보보다 더 불편합니다. 전화: GET /api/v1/keyword-research/locations 전체 목록에 대해.
language_code
두 글자 언어 코드입니다. 지원되는 값:
| 코드 | 언어 | 코드 | 언어 |
|---|---|---|---|
| en | 영어 | pt | 포르투갈어 |
| es | 스페인어 | nl | 네덜란드어 |
| fr | 프랑스어 | ru | 러시아어 |
| de | 독일어 | ja | 일본어 |
| it | 이탈리아어 | zh | 중국어 |
language_code 대체 영어 오류를 반환하는 대신 — 결과가 예상치 못하게 영어로 표시되면 코드를 다시 확인하십시오.
오류 코드
| HTTP | 코드 | 의미 |
|---|---|---|
| 400 | BAD_REQUEST | 잘못된 요청 구문 |
| 401 | UNAUTHORIZED | API 키가 없거나 유효하지 않음 |
| 403 | FORBIDDEN | 플랜에서 API 접근이 제공되지 않음 (Pro 또는 Agency 플랜 필요) |
| 404 | NOT_FOUND | 엔드포인트 또는 리소스를 찾을 수 없음 |
| 402 | PAYMENT_REQUIRED | 기능 할당량이 소진되고 남은 크레딧이 없습니다 (백링크) |
| 422 | VALIDATION_ERROR | 필수 매개변수가 없거나 값이 유효하지 않음 |
| 409 | ALREADY_RUNNING | 같은 요청이 이미 계정에 대해 처리 중입니다 — 잠시 후 다시 시도하면 캐시 적중됩니다. 요금이 청구되지 않았습니다 |
| 429 | RATE_LIMITED / QUOTA_EXCEEDED | 월간 호출 제한, 분당 페이싱 또는 기능 할당량 초과 — 참고 resets_at 또는 retry_after 내 meta |
| 502 | UPSTREAM_ERROR | 업스트림 데이터 제공자가 데이터를 반환하지 않음 |
| 500 | SERVER_ERROR | 내부 오류 — 재시도해도 안전합니다 |
MCP 및 LLM 클라이언트
목표가 Claude와 같은 어시스턴트가 이 데이터를 대화형으로 읽게 하는 경우, 클라이언트를 작성할 필요가 없습니다. SignalSumo가 이를 제공합니다 Model Context Protocol, 아래 엔드포인트를 LLM이 직접 호출할 수 있는 도구로 노출합니다.
| 경로 | 인증 | 추천 대상 |
|---|---|---|
| 호스팅 커넥터 | OAuth 2.1 — no key to copy | Claude 및 기타 MCP 클라이언트. 설치가 필요 없으며 항상 최신 상태입니다. |
@signalsumo/mcp on npm | 클라이언트 구성에 API 키 포함 | 로컬 설치, 자체 호스팅 설정, 또는 자체 환경에서 실행 |
| 이 REST API | Authorization: Bearer | 고유 스크립트, 대시보드 및 백엔드 통합 |
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
현재 달의 API 할당량 사용량을 반환합니다.
예시 요청
curl -H "Authorization: Bearer ss_live_xxxx" \
"https://signalsumo.com/api/v1/usage"
예시 응답
{
"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
도메인의 백링크 프로필을 반환합니다: 요약 overview, 분포 insights, 그리고 개별적인 풍부한 목록을 backlinks. 결과가 캐시되어 대시보드와 공유됩니다(프로: 2일, 에이전시: 7일); 캐시 적중은 표시됩니다 "cached": true 기능 할당량을 차감하지 않습니다.
이것은 동일한 데이터이며 백링크 검사기 shows in the app, and the cache is shared — a domain you have already looked at there returns instantly here, free.
page > 1 또는 limit > 100 — 항상 비용이 발생합니다 1 크레딧. 보기 플랜 및 결제.
쿼리 매개변수
| 매개변수 | 유형 | 필수 | 설명 |
|---|---|---|---|
| domain | string | 예 | 루트 도메인, 예: example.com (전체 URL도 허용되며 정규화됩니다) |
| 페이지 | integer | 아니오 | 페이지 번호, 기본값 1 |
| limit | integer | 아니오 | 페이지당 결과 수, 1–200, 기본값 100 |
예시 요청
curl -H "Authorization: Bearer ss_live_xxxx" \
"https://signalsumo.com/api/v1/backlinks?domain=example.com&limit=2"
예시 응답
{
"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 }
}
백링크 필드
| 필드 | 설명 |
|---|---|
| domain_from / url_from | 링크를 제공하는 사이트와 정확한 페이지 |
| url_to | 귀하 도메인에서 링크된 페이지 |
| anchor | 링크의 앵커 텍스트 |
| dofollow | 1 = dofollow, 0 = nofollow |
| spam_score | 링크 페이지의 스팸 점수 (0–100) |
| domain_from_rank / page_from_rank | 링크 도메인 / 페이지의 권위, 정규화 0–100 |
| is_new / is_lost / is_broken | 링크 수명 주기 플래그 (1/0) |
| first_seen / last_seen / lost_date | 링크가 처음 발견된 시점, 마지막으로 본 시점, 그리고(해당되는 경우) 손실된 시점 |
| platform_type / country / tld_from | 링크 사이트의 플랫폼, 국가 및 TLD |
| item_type | 링크 형식: anchor, image, redirect, … |
| page_from_status_code / url_to_status_code | 링크 페이지 / 연결된 페이지의 HTTP 상태 |
| attributes | 링크 rel 속성, 예: ["noopener","nofollow"] |
| kw_top3 / kw_top10 / kw_top100 | 링크 페이지가 상위 3 / 10 / 100에 랭크된 키워드 |
POST /api/v1/keyword-research
시드 키워드에 대한 전체 메트릭 세트를 반환합니다 — 검색량, CPC, 경쟁도, 난이도, 검색 의도, 12개월 볼륨 추세, SERP 기능 등 — 또한 동일한 필드를 포함한 관련 키워드 순위 목록을 제공합니다. 동기식으로 즉시 응답합니다.
다음은 메트릭입니다 키워드 연구 도구 표시됩니다. 추구할 가치가 있는 키워드를 선택하면 순위 추적기 follows their positions daily — and /rank/keywords 해당 포지션을 다시 읽어옵니다, 무료입니다.
429 QUOTA_EXCEEDED, 따라서 루프에서 호출해도 안전합니다. 최근 조회는 캐시에서 제공됩니다(표시됨 "cached": true) 할당량 비용 없이.
요청 본문 (JSON)
| 필드 | 유형 | 필수 | 설명 |
|---|---|---|---|
| keyword | string | 예 | 시드 키워드, 최대 200자 |
| location_code | integer | 아니오 | 위치 코드, 기본값 2840 (United States) |
| language_code | string | 아니오 | 언어 코드, 기본값 en |
| limit | integer | 아니오 | 반환되는 최대 연관 키워드 수, 1–100, 기본값 10 |
예시 요청
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"
예시 응답
{
"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" }
}
키워드 필드
The overview (시드 키워드) 및 모든 related_keywords 행에 이 필드들을 공유합니다. 모든 필드는 null 업스트림 데이터가 사용 불가능한 경우.
| 필드 | 설명 |
|---|---|
| search_volume | 월 평균 검색량 |
| cpc | 평균 클릭당 비용 (USD) |
| competition | 유료 경쟁, 0–1 |
| 경쟁 수준 | LOW / MEDIUM / HIGH |
| 난이도 | 유기적 순위 난이도, 0–100 (null 아직 계산되지 않음) |
| 의도 | 검색 의도, 예: ["Commercial"] |
| 추세 | 12개월 볼륨 히스토리 — { y, m, v } 월별 |
| 성장 | 볼륨 변화 %: m 월간, q 분기별, y 연간 |
| SERP 기능 | SERP 기능 유형이 존재함, 예: ["organic","people_also_ask"] |
| 입찰 최저가 / 입찰 최고가 | 페이지 상단 입찰 범위 (USD) |
| 평균 백링크 / 평균 참조 도메인 | 현재 순위에 있는 페이지의 평균 백링크 / 참조 도메인 |
| 경쟁 도메인 순위 | 현재 순위에 있는 페이지의 평균 권위 (0–1000) |
| 검색 엔진 결과 | 키워드에 대한 총 경쟁 결과 |
| 관련 | 최대 8개의 관련 하위 키워드(관련 행만) |
| 매치 버킷 | 시드와의 관계: similar, related, or question |
POST /api/v1/site-audit
동일한 크롤링을 실행합니다 웹사이트 감사 도구 — broken links, redirect chains, missing titles and canonical problems, page by page.
job_id immediately.
Poll GET /api/v1/jobs/{job_id} 결과에 대해. 일반적인 크롤링 시간: 1–5분.
요청 본문 (JSON)
| 필드 | 유형 | 필수 | 설명 |
|---|---|---|---|
| URL | string | 예 | 크롤링할 전체 URL, 예: https://example.com |
| 최대 페이지 수 | integer | 아니오 | 크롤링할 최대 페이지 수(기본값 100). 귀하의 플랜에 따른 크롤링 제한 및 남은 월간 페이지 예산에 의해 제한됩니다. |
| 깊이 | integer | 아니오 | 크롤링 깊이, 1–5, 기본값 3 |
예시 요청
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"
응답 (202 Accepted)
{
"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}
비동기 작업의 상태를 폴링합니다. 10–15초마다 폴링하여 status is complete 또는 failed.
상태 값
| 상태 | 의미 |
|---|---|
| 대기 중 | 작업이 수락되었으며 아직 시작되지 않음 |
| 실행 중 | 크롤링 진행 중 — 확인 progress (0–100) |
| 완료 | 완료 — data 필드에 결과가 포함됨 |
| 실패 | 크롤링 실패 — error 필드에 이유가 있음 |
예시 요청
curl -H "Authorization: Bearer ss_live_xxxx" \
"https://signalsumo.com/api/v1/jobs/a3f9b2c1d4e5f6a7b8c9d0e1f2a3b4c5"
응답 — 진행 중
{
"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" }
}
응답 — 완료
{
"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
계정에서 추적하는 모든 키워드와 각각 측정된 시장·디바이스 및 최신 순위입니다. 이는 다음의 데이터입니다 순위 추적기 — no crawl is triggered and nothing is charged.
country, language 및 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.
쿼리 매개변수
| 매개변수 | 유형 | 필수 | 설명 |
|---|---|---|---|
| project_id | integer | 아니오 | 프로젝트 하나로 제한합니다. 생략하면 보유 중인 모든 프로젝트의 키워드를 반환합니다. |
| limit | integer | 아니오 | 1–500, default 100 |
예시 요청
curl -H "Authorization: Bearer ss_live_xxxx" \
"https://signalsumo.com/api/v1/rank/keywords?limit=1"
예시 응답
{
"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 키워드가 이동했을 때 양수입니다 위. 아직 확인되지 않은 키워드는 반환됩니다 null 모든 latest.* 필드 대신 0 — position zero would read as "ranked first".
GET /api/v1/rank/history
추적된 키워드 하나에 대한 일일 포지션 히스토리와 순위에 오른 URL 및 각 검사 시 존재한 SERP 기능을 포함합니다. 사전 계산된 trend 요약.
쿼리 매개변수
| 매개변수 | 유형 | 필수 | 설명 |
|---|---|---|---|
| keyword_id | integer | 예 | 시작 /rank/keywords. 소유하지 않은 키워드는 반환됩니다 404 NOT_FOUND. |
| 일 | integer | 아니오 | 1–365, default 90 |
예시 요청
curl -H "Authorization: Bearer ss_live_xxxx" \
"https://signalsumo.com/api/v1/rank/history?keyword_id=4821&days=30"
예시 응답
{
"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 }
}
읽는 중 trend
| 필드 | 의미 |
|---|---|
| 첫 번째 | 위치 가장 오래된 창 내 지점 |
| 최신 | 가장 최근 확인 시 위치 |
| 최고 | 가장 낮은 수치(최고 순위) |
| 최악 | 가장 높은 수치(최악 순위) |
history 최신 순으로 정렬됩니다. best 및 worst 순위 미지정 검사를 무시하여 null 키워드가 해당 기간에 순위에 오르지 않은 경우.
GET /api/v1/gsc/properties
계정에 연결된 Google Search Console 속성은 다음과 같습니다 Search Console Insights. 매개변수가 없습니다.
This reads SignalSumo's synced copy — it does not call Google. last_synced_at 해당 복사본이 얼마나 최신인지 알려줍니다.
예시 요청
curl -H "Authorization: Bearer ss_live_xxxx" \
"https://signalsumo.com/api/v1/gsc/properties"
예시 응답
{
"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 페이지, 국가, 디바이스 또는 날짜별로 동일한 수치를 분해하려면.
쿼리 매개변수
| 매개변수 | 유형 | 필수 | 설명 |
|---|---|---|---|
| property_id | integer | 예 | 시작 /gsc/properties. 소유하지 않은 속성은 반환됩니다 404 NOT_FOUND. |
| dim | string | 아니오 | query (기본값), page, country, device, date, searchAppearance |
| from | string | 아니오 | YYYY-MM-DD, 기본값은 28일 전 |
| to | string | 아니오 | YYYY-MM-DD, 기본값은 오늘 |
| sort | string | 아니오 | clicks (기본값), impressions, ctr, position, key |
| dir | string | 아니오 | desc (기본값) 또는 asc |
| limit | integer | 아니오 | 1–500, default 100 |
422 VALIDATION_ERROR, 그러나 인식되지 않은 dim 또는 sort 값은 오류를 발생시키지 않고 기본값으로 자동 전환됩니다. 확인하십시오 dim 다시 반영됨 data 분석 결과를 신뢰하기 전에.
예시 요청
curl -H "Authorization: Bearer ss_live_xxxx" \
"https://signalsumo.com/api/v1/gsc/queries?property_id=31&dim=query&limit=2"
예시 응답
{
"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 기간 전체를 항상 포함합니다, 다음과 관계없이 limit.
GET /api/v1/ai-visibility/projects
AI 답변 엔진 전반에 걸쳐 추적하는 브랜드와 프로젝트당 한 행, 현재 가시성 점수와 변동을 표시합니다. 매개변수가 필요 없습니다. 제공: AI 가시성 검사기.
Scores are collected by scheduled scans, so this endpoint never calls an AI provider — it returns what the last scan stored.
예시 요청
curl -H "Authorization: Bearer ss_live_xxxx" \
"https://signalsumo.com/api/v1/ai-visibility/projects"
예시 응답
{
"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 is null until a project has been scanned at least twice — a first scan has nothing to compare against, and reporting 0 "변동 없음"으로 표시됩니다.
GET /api/v1/ai-visibility/share-of-voice
AI 어시스턴트가 귀사의 브랜드를 경쟁사와 비교해 얼마나 자주 언급하는지와 최신 스캔에서 얻은 전체 메트릭 세부 정보를 제공합니다.
쿼리 매개변수
| 매개변수 | 유형 | 필수 | 설명 |
|---|---|---|---|
| project_id | integer | 예 | 시작 /ai-visibility/projects. 소유하지 않은 프로젝트는 반환됩니다 404 NOT_FOUND. |
예시 요청
curl -H "Authorization: Bearer ss_live_xxxx" \
"https://signalsumo.com/api/v1/ai-visibility/share-of-voice?project_id=9"
예시 응답
{
"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"
}
]
}
}
두 가지 다른 백분율
이것들은 혼동하기 쉬우며, 서로 다른 질문에 답합니다:
| 필드 | 답변하는 질문 |
|---|---|
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 is null 프로젝트의 첫 번째 스캔이 완료되기 전에. competitors 최대 20개를 반환하며, 언급 횟수 순으로 정렬됩니다. brand_share_pct is null when no mentions have been recorded on either side — a share of nothing is not zero percent.
GET /api/v1/keyword-research/locations
모든 시장 POST /keyword-research 받아들여, 따라서 발견할 수 있습니다 location_code 추측 대신 422. 매개변수가 없습니다.
예시 요청
curl -H "Authorization: Bearer ss_live_xxxx" \
"https://signalsumo.com/api/v1/keyword-research/locations"
예시 응답
{
"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."
}
}
변경 로그
| 버전 | 날짜 | 변경 사항 |
|---|---|---|
| v1.2 | 2026년 8월 | 이미 라이브 중인 7개의 읽기 전용 엔드포인트를 문서화했습니다: /rank/keywords, /rank/history, /gsc/properties, /gsc/queries, /ai-visibility/projects, /ai-visibility/share-of-voice 및 /keyword-research/locations. No behaviour changed — these were callable before, just undocumented. Added MCP and LLM client guidance. |
| v1.1 | 2026년 7월 | 키워드 및 백링크 응답이 전체 메트릭 세트(난이도, 의도, 추세, SERP 기능, 강화된 백링크 필드, 개요 및 인사이트)로 확장되었습니다. 사이트 감사 결과가 추가됩니다 geo_score 이슈 수가 포함됩니다. 위치/언어 참조 및 청구 세부 정보가 추가되었습니다. |
| v1.0 | 2026년 6월 | 초기 릴리스 — 사용량, 백링크, 키워드 리서치, 사이트 감사, 작업 |
문의 사항이 있습니까? 이메일: [email protected]