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/v1HTTPS 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.
| Metode | Path | Deskripsi |
|---|---|---|
| GET | /me | Mengembalikan pemilik token pemanggil + sisa kuota rate limit (whoami) |
| GET | /accounts | Menampilkan semua akun iklan yang telah dihubungkan pengguna saat ini (di ketiga platform) |
| GET | /accounts/{id}/campaigns | Menampilkan kampanye, grup iklan, kata kunci, dan metrik 7/30 hari untuk satu akun |
| POST | /recommendations/generate | Meminta AI membuat batch baru rekomendasi optimasi |
| GET | /recommendations | Menampilkan semua rekomendasi tertunda / diterapkan / diabaikan |
| POST | /recommendations/{id}/apply | Menerapkan satu rekomendasi — belum tersedia: mengembalikan 501 not_supported dan tidak mengubah apa pun |
| POST | /recommendations/{id}/dismiss | Mengabaikan satu rekomendasi — belum tersedia: mengembalikan 501 not_supported dan tidak mengubah apa pun |
| POST | /changes/{id}/rollback | Membatalkan 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-events | Aliran audit-event keamanan (masuk / kata sandi / OAuth / langganan), dengan filter ?since + ?kind |
| GET | /api-keys | Menampilkan API key milik pemanggil (termasuk lastUsedAt + active); hashedKey tidak pernah dikembalikan |
| GET | /usage | Membaca tier saat ini, batas RPM, sisa, dan reset_at tanpa permintaan uji |
| GET | /changelog | Feed 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 HTTP | Arti |
|---|---|
401 | API key tidak ada atau tidak valid |
403 | Akun tidak berwenang untuk resource ini (scope OAuth tidak cukup) |
404 | Resource tidak ditemukan atau sudah dihapus |
422 | Parameter permintaan tidak valid |
429 | Batas laju terlampaui — tunggu sesuai header retry-after |
500 | Error server — dilaporkan otomatis |
503 | API platform upstream sementara tidak tersedia (Google / Meta / TikTok) |