Pour les développeurs

Référence de l'API

Intégrez l'optimisation par IA de DEXUN AdWhiz sur trois plateformes à vos propres outils, scripts ou backend via REST.

URL de base

Toutes les requêtes API sont envoyées à cette racine :

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

HTTPS est obligatoire. Les requêtes HTTP sont rejetées (pas de redirection).

Authentification

Chaque requête doit inclure un jeton Bearer dans l'en-tête Authorization. Générez-en un dans le tableau de bord → Paramètres → API Keys. Les clés existent en version live et test, et n'accèdent qu'à leur propre environnement.

curl https://www.7275.com/api/v1/accounts \
  -H "Authorization: Bearer dxk_live_...your-key..."
  • Format de clé live : commence par dxk_live_, 64 caractères
  • Format de clé test : commence par dxk_test_, limitée au compte sandbox
  • N'utilisez jamais de clés dans du code front-end — passez par votre propre backend
  • En cas de fuite, révoquez la clé et régénérez-en une immédiatement dans le tableau de bord

Utilisation directe depuis Claude Desktop / Cursor (serveur MCP)

Nous publions un serveur Model Context Protocol sans dépendance pour que des clients MCP comme Claude Desktop et Cursor lisent directement l'état de votre compte AdWhiz. Aucun code à écrire : copiez un bloc de configuration, collez votre clé API et redémarrez le client.

  • Cinq outils en lecture seule : lister les comptes publicitaires, afficher les recommandations de l'IA, obtenir les économies du mois, consulter l'activité récente, vérifier le quota API
  • Les outils d'écriture (apply / pause) ne sont volontairement pas encore exposés — ils attendent que l'optimiseur sorte du shadow mode et que nous disposions de preuves de calibration pour les encadrer
  • Un seul script Node 18+. Aucun npm install. Fonctionne sans problème sur des machines hors ligne / isolées (airgapped)
  • Votre clé API ne quitte jamais votre machine. Toutes les requêtes vont en HTTPS directement vers www.7275.com

Ajoutez ceci au fichier claude_desktop_config.json de 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_..."
      }
    }
  }
}

Guide d'installation complet, configuration de Cursor et dépannage sur GitHub : github.com/dexun-inc/adwhiz/mcp-server.

Endpoints

L'API v1 expose 13 endpoints principaux couvrant l'identité, la lecture des comptes, la génération des recommandations (leur application n'est pas encore disponible), les journaux d'audit, la gestion des clés API, l'introspection du quota et le flux du changelog.

MéthodeCheminDescription
GET/meRenvoie le propriétaire du jeton appelant + le quota de rate limit restant (whoami)
GET/accountsListe tous les comptes publicitaires connectés par l'utilisateur actuel (sur les trois plateformes)
GET/accounts/{id}/campaignsListe les campagnes, groupes d'annonces, mots clés et métriques sur 7/30 jours d'un compte
POST/recommendations/generateDemande à l'IA de générer un nouveau lot de recommandations d'optimisation
GET/recommendationsListe toutes les recommandations en attente / appliquées / ignorées
POST/recommendations/{id}/applyAppliquer une recommandation — pas encore disponible : renvoie 501 not_supported et ne modifie rien
POST/recommendations/{id}/dismissIgnorer une recommandation — pas encore disponible : renvoie 501 not_supported et ne modifie rien
POST/changes/{id}/rollbackAnnuler une modification appliquée — pas encore disponible : renvoie 501 not_supported et ne modifie rien
GET/audit-log(Obsolète, retrait le 2027-05-23) Journal d'audit complet. Utilisez plutôt /audit-events — alimenté par la vraie table audit_events, avec filtre ?kind
GET/audit-eventsFlux d'événements d'audit de sécurité (connexion / mot de passe / OAuth / abonnement), avec filtres ?since + ?kind
GET/api-keysListe les clés API de l'appelant (y compris lastUsedAt + active) ; hashedKey n'est jamais renvoyé
GET/usageLit le tier actuel, la limite RPM, le restant et reset_at sans requête de sondage
GET/changelogFlux JSON du changelog produit (public, sans authentification) avec ETag + ?lang + ?limit (1..50) + ?since=YYYY-MM-DD — le format de référence pour l'interrogation incrémentale

Exemple de requête

Générez de nouvelles recommandations d'optimisation sur les trois plateformes :

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

Exemple de réponse :

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

Interroger /changelog de façon incrémentale

/api/v1/changelog est un endpoint public (aucune clé API requise) avec quatre leviers pour économiser la bande passante : ETag + If-None-Match, Last-Modified + If-Modified-Since (curl -z), ?since=YYYY-MM-DD pour filtrer par date et ?limit=N pour limiter la taille. Les SDK et scripts cron peuvent les combiner pour interroger souvent sans retélécharger le même 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'

Limites de débit

Échelonnées selon le forfait d'abonnement pour ne pas saturer les quotas en amont de Google / Meta / TikTok :

  • Professional : 120 requêtes/minute
  • Business : 600 requêtes/minute
  • Enterprise : sur mesure (généralement 3 000 requêtes/minute)
  • Au-delà de la limite, la réponse est 429 + en-tête retry-after — backoff exponentiel recommandé

Codes d'erreur

Toutes les erreurs renvoient du JSON avec error.code, error.message et error.request_id :

Statut HTTPSignification
401Clé API manquante ou invalide
403Compte non autorisé pour cette ressource (scope OAuth insuffisant)
404Ressource introuvable ou supprimée
422Paramètres de requête invalides
429Limite de débit dépassée — attendez le délai indiqué par l'en-tête retry-after
500Erreur serveur — signalée automatiquement
503API de la plateforme en amont temporairement indisponible (Google / Meta / TikTok)