개발자용

API 레퍼런스

REST API로 DEXUN AdWhiz의 3개 플랫폼 AI 최적화 기능을 자체 도구, 스크립트, 백엔드에 연결하세요.

기본 URL

모든 API 요청은 이 루트로 보냅니다:

https://www.7275.com/api/v1

HTTPS가 필수입니다. HTTP 요청은 거부됩니다(리디렉션되지 않음).

인증

모든 요청의 Authorization 헤더에 Bearer 토큰이 필요합니다. 대시보드 → 설정 → API Keys에서 발급하세요. 키는 live와 test 두 종류가 있으며 각각 자기 환경에만 접근할 수 있습니다.

curl https://www.7275.com/api/v1/accounts \
  -H "Authorization: Bearer dxk_live_...your-key..."
  • live 키 형식: dxk_live_로 시작하는 64자
  • test 키 형식: dxk_test_로 시작하며 sandbox 계정으로 제한
  • 프런트엔드 코드에서 키를 직접 사용하지 마세요 — 자체 백엔드를 프록시로 거치세요
  • 유출되면 대시보드에서 즉시 폐기하고 다시 발급하세요

Claude Desktop / Cursor에서 바로 사용(MCP 서버)

의존성이 없는 Model Context Protocol 서버를 제공하므로 Claude Desktop, Cursor 같은 MCP 클라이언트가 AdWhiz 상태를 직접 읽을 수 있습니다. 코드를 작성할 필요 없이 설정 블록을 복사하고 API 키를 붙여 넣은 뒤 클라이언트를 다시 시작하면 됩니다.

  • 읽기 전용 도구 5개: 광고 계정 목록, AI 추천 보기, 이번 달 절감액, 최근 활동, API 할당량 확인
  • 쓰기 도구(apply / pause)는 의도적으로 아직 공개하지 않았습니다 — 옵티마이저가 shadow mode를 벗어나고 이를 통제할 보정 근거가 확보된 후 공개합니다
  • Node 18+ 단일 스크립트. npm install 불필요. 오프라인 / 망 분리(airgapped) 환경에서도 문제없이 실행됩니다
  • API 키는 사용자 컴퓨터 밖으로 나가지 않습니다. 모든 요청은 HTTPS로 www.7275.com에 직접 연결됩니다

Claude Desktop의 claude_desktop_config.json(macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\)에 다음을 추가하세요:

{
  "mcpServers": {
    "adwhiz": {
      "command": "node",
      "args": ["/path/to/mcp-server/src/index.mjs"],
      "env": {
        "ADWHIZ_API_KEY": "dxk_live_..."
      }
    }
  }
}

전체 설치 가이드, Cursor 설정, 문제 해결은 GitHub에서 확인하세요: github.com/dexun-inc/adwhiz/mcp-server.

엔드포인트

v1 API는 13개의 핵심 엔드포인트를 제공하며 신원 확인, 계정 조회, 추천 생성(적용은 아직 사용할 수 없음), 감사 로그, API 키 관리, 할당량 조회, 변경 로그 피드를 다룹니다.

메서드경로설명
GET/me호출한 토큰의 소유자 + 남은 속도 제한 할당량을 반환합니다(whoami)
GET/accounts현재 사용자가 연결한 모든 광고 계정을 나열합니다(3개 플랫폼 전체)
GET/accounts/{id}/campaigns한 계정의 캠페인, 광고 그룹, 키워드, 7일/30일 지표를 나열합니다
POST/recommendations/generateAI가 새 최적화 추천을 일괄 생성하도록 합니다
GET/recommendations대기 중 / 적용됨 / 무시됨 상태의 모든 추천을 나열합니다
POST/recommendations/{id}/apply추천 하나 적용 — 아직 사용할 수 없음: 501 not_supported를 반환하며 아무것도 변경하지 않습니다
POST/recommendations/{id}/dismiss추천 하나 무시 — 아직 사용할 수 없음: 501 not_supported를 반환하며 아무것도 변경하지 않습니다
POST/changes/{id}/rollback적용된 변경 되돌리기 — 아직 사용할 수 없음: 501 not_supported를 반환하며 아무것도 변경하지 않습니다
GET/audit-log(지원 중단, 2027-05-23 종료) 전체 감사 로그. 대신 /audit-events를 사용하세요 — 실제 audit_events 테이블 기반이며 ?kind 필터를 지원합니다
GET/audit-events보안 감사 이벤트 스트림(로그인 / 비밀번호 / OAuth / 구독), ?since + ?kind 필터 지원
GET/api-keys호출자의 API 키 목록(lastUsedAt + active 포함). hashedKey는 절대 반환하지 않습니다
GET/usage테스트 요청 없이 현재 tier, RPM 한도, 잔여량, reset_at을 조회합니다
GET/changelog제품 변경 로그 JSON 피드(공개, 인증 불필요). ETag + ?lang + ?limit (1..50) + ?since=YYYY-MM-DD를 지원하는 표준 증분 폴링 형식입니다

요청 예시

3개 플랫폼의 새 최적화 추천 생성:

curl -X POST https://www.7275.com/api/v1/recommendations/generate \
  -H "Authorization: Bearer dxk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "account_id": "ga-548-203-7184",
    "platforms": ["google_ads", "meta_ads", "tiktok_ads"],
    "window": "7d"
  }'

응답 예시:

{
  "summary": "Pausing 3 high-CPA keywords and reallocating budget...",
  "recommendations": [
    {
      "id": "rec_001",
      "type": "pause_keyword",
      "target": { "accountId": "ga-548-203-7184", "keywordText": "wool socks" },
      "title": "Pause broad-match 'wool socks'",
      "reason": "7-day CPA $45.82 vs target $8",
      "expectedImpact": "Save ~$412/week",
      "confidence": "high"
    }
  ]
}

/changelog 증분 폴링

/api/v1/changelog는 공개 엔드포인트(API 키 불필요)이며 대역폭을 아끼는 네 가지 옵션을 지원합니다: ETag + If-None-Match, Last-Modified + If-Modified-Since(curl -z), 날짜로 필터링하는 ?since=YYYY-MM-DD, 크기를 제한하는 ?limit=N. SDK와 cron 스크립트는 이를 조합해 같은 JSON을 다시 내려받지 않고도 자주 폴링할 수 있습니다.

# 1. First call — store the ETag (or Last-Modified) you get back.
curl -i 'https://www.7275.com/api/v1/changelog?limit=10'

# 2. Subsequent calls — pass the stored ETag.
#    Server returns 304 with empty body if nothing has shipped.
curl -i 'https://www.7275.com/api/v1/changelog?limit=10' \
  -H 'If-None-Match: "abc123..."'

# 3. Or anchor on a date instead of an ETag.
#    Only entries whose `date >= since` come back; pair with ?limit
#    to cap the response size.
curl 'https://www.7275.com/api/v1/changelog?since=2026-01-01&limit=20'

# 4. curl -z for Last-Modified-style conditional GET (no ETag needed):
curl -z 'Mon, 20 May 2026 00:00:00 GMT' \
  'https://www.7275.com/api/v1/changelog'

속도 제한

상위 Google / Meta / TikTok API 할당량에 부담을 주지 않도록 구독 요금제별로 차등 적용됩니다:

  • 프로페셔널: 분당 120회 요청
  • 비즈니스: 분당 600회 요청
  • 엔터프라이즈: 맞춤(일반적으로 분당 3,000회 요청)
  • 한도를 넘으면 429 + retry-after 헤더가 반환됩니다 — 지수 백오프를 권장합니다

오류 코드

모든 오류는 error.code, error.message, error.request_id를 포함한 JSON으로 반환됩니다:

HTTP 상태의미
401API 키가 없거나 유효하지 않습니다
403이 리소스에 대한 계정 권한이 없습니다(OAuth scope 부족)
404리소스를 찾을 수 없거나 삭제되었습니다
422요청 파라미터가 올바르지 않습니다
429속도 제한 초과 — retry-after 헤더에 표시된 시간만큼 기다리세요
500서버 오류 — 자동으로 보고됩니다
503상위 플랫폼 API를 일시적으로 사용할 수 없습니다(Google / Meta / TikTok)