Untuk developer

Referensi API

Hubungkan optimasi AI tiga platform DEXUN AdWhiz ke alat, skrip, atau backend Anda sendiri melalui REST.

Base URL

Semua permintaan API dikirim ke root ini:

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

HTTPS wajib. Permintaan HTTP ditolak (tidak dialihkan).

Autentikasi

Setiap permintaan memerlukan token Bearer di header Authorization. Buat token di dasbor → Pengaturan → API Keys. Key tersedia dalam varian live dan test, dan masing-masing hanya dapat mengakses lingkungannya sendiri.

curl https://www.7275.com/api/v1/accounts \
  -H "Authorization: Bearer dxk_live_...your-key..."
  • Format key live: diawali dxk_live_, 64 karakter
  • Format key test: diawali dxk_test_, terbatas pada akun sandbox
  • Jangan pernah memakai key di kode front-end — gunakan backend Anda sendiri sebagai proxy
  • Jika bocor, segera cabut dan buat ulang di dasbor

Gunakan langsung dari Claude Desktop / Cursor (server MCP)

Kami menyediakan server Model Context Protocol tanpa dependensi agar klien MCP seperti Claude Desktop dan Cursor dapat membaca status AdWhiz Anda secara langsung. Tanpa menulis kode — salin blok konfigurasi, tempel API key Anda, lalu mulai ulang klien.

  • Lima alat hanya-baca: daftar akun iklan, rekomendasi AI, penghematan bulan ini, aktivitas terbaru, dan kuota API
  • Alat penulisan (apply / pause) sengaja belum dibuka — menunggu optimizer keluar dari shadow mode dan bukti kalibrasi tersedia untuk mengamankannya
  • Satu skrip Node 18+. Tanpa npm install. Berjalan lancar di mesin offline / airgapped
  • API key Anda tidak pernah meninggalkan mesin Anda. Semua permintaan langsung ke www.7275.com lewat HTTPS

Tambahkan ini ke claude_desktop_config.json milik Claude Desktop (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_..."
      }
    }
  }
}

Panduan instalasi lengkap, konfigurasi Cursor, dan pemecahan masalah ada di GitHub: github.com/dexun-inc/adwhiz/mcp-server.

Endpoint

API v1 menyediakan 13 endpoint inti yang mencakup identitas, pembacaan akun, pembuatan rekomendasi (penerapan belum tersedia), log audit, pengelolaan API key, pengecekan kuota, dan feed changelog.

MetodePathDeskripsi
GET/meMengembalikan pemilik token pemanggil + sisa kuota rate limit (whoami)
GET/accountsMenampilkan semua akun iklan yang telah dihubungkan pengguna saat ini (di ketiga platform)
GET/accounts/{id}/campaignsMenampilkan kampanye, grup iklan, kata kunci, dan metrik 7/30 hari untuk satu akun
POST/recommendations/generateMeminta AI membuat batch baru rekomendasi optimasi
GET/recommendationsMenampilkan semua rekomendasi tertunda / diterapkan / diabaikan
POST/recommendations/{id}/applyMenerapkan satu rekomendasi — belum tersedia: mengembalikan 501 not_supported dan tidak mengubah apa pun
POST/recommendations/{id}/dismissMengabaikan satu rekomendasi — belum tersedia: mengembalikan 501 not_supported dan tidak mengubah apa pun
POST/changes/{id}/rollbackMembatalkan perubahan yang diterapkan — belum tersedia: mengembalikan 501 not_supported dan tidak mengubah apa pun
GET/audit-log(Usang, dihentikan 2027-05-23) Log audit lengkap. Gunakan /audit-events — didukung tabel audit_events yang sebenarnya dengan filter ?kind
GET/audit-eventsAliran audit-event keamanan (masuk / kata sandi / OAuth / langganan), dengan filter ?since + ?kind
GET/api-keysMenampilkan API key milik pemanggil (termasuk lastUsedAt + active); hashedKey tidak pernah dikembalikan
GET/usageMembaca tier saat ini, batas RPM, sisa, dan reset_at tanpa permintaan uji
GET/changelogFeed JSON changelog produk (publik, tanpa autentikasi) dengan ETag + ?lang + ?limit (1..50) + ?since=YYYY-MM-DD — bentuk standar untuk polling inkremental

Contoh permintaan

Buat rekomendasi optimasi baru untuk tiga platform:

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"
  }'

Contoh respons:

{
  "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"
    }
  ]
}

Polling inkremental /changelog

/api/v1/changelog adalah endpoint publik (tanpa API key) dengan empat opsi hemat bandwidth: ETag + If-None-Match, Last-Modified + If-Modified-Since (curl -z), ?since=YYYY-MM-DD untuk mengambil berdasarkan tanggal, dan ?limit=N untuk membatasi ukuran. SDK dan skrip cron dapat menggabungkannya untuk polling sering tanpa mengunduh ulang JSON yang sama.

# 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'

Batas laju

Bertingkat sesuai paket langganan agar tidak membebani kuota upstream Google / Meta / TikTok:

  • Professional: 120 permintaan/menit
  • Business: 600 permintaan/menit
  • Enterprise: khusus (biasanya 3.000 permintaan/menit)
  • Melewati batas akan mengembalikan 429 + header retry-after — disarankan exponential backoff

Kode error

Semua error mengembalikan JSON berisi error.code, error.message, dan error.request_id:

Status HTTPArti
401API key tidak ada atau tidak valid
403Akun tidak berwenang untuk resource ini (scope OAuth tidak cukup)
404Resource tidak ditemukan atau sudah dihapus
422Parameter permintaan tidak valid
429Batas laju terlampaui — tunggu sesuai header retry-after
500Error server — dilaporkan otomatis
503API platform upstream sementara tidak tersedia (Google / Meta / TikTok)