Per sviluppatori

Riferimento API

Integra l'ottimizzazione AI di DEXUN AdWhiz su tre piattaforme nei tuoi strumenti, script o backend tramite REST.

URL di base

Tutte le richieste API vanno a questa radice:

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

HTTPS è obbligatorio. Le richieste HTTP vengono rifiutate (non reindirizzate).

Autenticazione

Ogni richiesta richiede un token Bearer nell'header Authorization. Generane uno da dashboard → Impostazioni → API Keys. Le key esistono in versione live e test e possono accedere solo al proprio ambiente.

curl https://www.7275.com/api/v1/accounts \
  -H "Authorization: Bearer dxk_live_...your-key..."
  • Formato key live: inizia con dxk_live_, 64 caratteri
  • Formato key test: inizia con dxk_test_, limitata all'account sandbox
  • Non usare mai le key nel codice front-end: fai da proxy tramite il tuo backend
  • Se una key viene esposta, revocala e rigenerala subito dalla dashboard

Usalo direttamente da Claude Desktop / Cursor (server MCP)

Distribuiamo un server Model Context Protocol senza dipendenze, così i client MCP come Claude Desktop e Cursor possono leggere direttamente lo stato del tuo AdWhiz. Nessun codice da scrivere: copia un blocco di configurazione, incolla la tua API key e riavvia il client.

  • Cinque strumenti di sola lettura: elenco degli account pubblicitari, suggerimenti dell'AI, risparmi del mese, attività recenti, quota API
  • Gli strumenti di scrittura (apply / pause) volutamente non sono ancora esposti: aspettano che l'ottimizzatore esca dalla shadow mode e che ci siano prove di calibrazione per abilitarli
  • Un unico script Node 18+. Zero npm install. Funziona anche su macchine offline / isolate (airgapped)
  • La tua API key non lascia mai il tuo computer. Tutte le richieste vanno in HTTPS direttamente ad www.7275.com

Aggiungi questo al file claude_desktop_config.json di 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_..."
      }
    }
  }
}

Guida completa all'installazione, configurazione di Cursor e risoluzione dei problemi su GitHub: github.com/dexun-inc/adwhiz/mcp-server.

Endpoint

L'API v1 espone 13 endpoint principali: identità, lettura degli account, generazione dei suggerimenti (applicarli non è ancora disponibile), log di audit, gestione delle API key, verifica della quota e feed del changelog.

MetodoPercorsoDescrizione
GET/meRestituisce il proprietario del token chiamante + la quota di rate limit residua (whoami)
GET/accountsElenca tutti gli account pubblicitari collegati dall'utente corrente (su tutte e tre le piattaforme)
GET/accounts/{id}/campaignsElenca campagne, gruppi di annunci, parole chiave e metriche a 7/30 giorni di un account
POST/recommendations/generateFa generare all'AI un nuovo lotto di suggerimenti di ottimizzazione
GET/recommendationsElenca tutti i suggerimenti in attesa / applicati / ignorati
POST/recommendations/{id}/applyApplicare un suggerimento — non ancora disponibile: restituisce 501 not_supported e non modifica nulla
POST/recommendations/{id}/dismissIgnorare un suggerimento — non ancora disponibile: restituisce 501 not_supported e non modifica nulla
POST/changes/{id}/rollbackAnnullare una modifica applicata — non ancora disponibile: restituisce 501 not_supported e non modifica nulla
GET/audit-log(Deprecato, dismesso il 2027-05-23) Log di audit completo. Usa invece /audit-events, basato sulla vera tabella audit_events con filtro ?kind
GET/audit-eventsFlusso degli eventi di audit di sicurezza (accesso / password / OAuth / abbonamento), con filtri ?since + ?kind
GET/api-keysElenca le API key del chiamante (inclusi lastUsedAt + active); hashedKey non viene mai restituito
GET/usageLegge il tier attuale, il limite RPM, il residuo e reset_at senza una richiesta di prova
GET/changelogFeed JSON del changelog di prodotto (pubblico, senza autenticazione) con ETag + ?lang + ?limit (1..50) + ?since=YYYY-MM-DD: la forma canonica per il polling incrementale

Richiesta di esempio

Genera nuovi suggerimenti di ottimizzazione per le tre piattaforme:

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

Risposta di esempio:

{
  "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 incrementale di /changelog

/api/v1/changelog è un endpoint pubblico (nessuna API key richiesta) con quattro opzioni per risparmiare banda: ETag + If-None-Match, Last-Modified + If-Modified-Since (curl -z), ?since=YYYY-MM-DD per filtrare per data e ?limit=N per limitare la dimensione. SDK e script cron possono combinarle per interrogare spesso senza riscaricare lo stesso 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'

Limiti di frequenza

Differenziati per piano di abbonamento, per non sovraccaricare le quote a monte di Google / Meta / TikTok:

  • Professional: 120 richieste/minuto
  • Business: 600 richieste/minuto
  • Enterprise: personalizzato (in genere 3.000 richieste/minuto)
  • Oltre il limite si riceve 429 + header retry-after: consigliato il backoff esponenziale

Codici di errore

Tutti gli errori restituiscono JSON con error.code, error.message ed error.request_id:

Stato HTTPSignificato
401API key mancante o non valida
403Account non autorizzato per questa risorsa (scope OAuth insufficiente)
404Risorsa non trovata o eliminata
422Parametri della richiesta non validi
429Limite di frequenza superato: attendi quanto indicato dall'header retry-after
500Errore del server: segnalato automaticamente
503API della piattaforma a monte temporaneamente non disponibile (Google / Meta / TikTok)