Para desarrolladores

Referencia de la API

Integra la optimización con IA de DEXUN AdWhiz para tres plataformas en tus propias herramientas, scripts o backend mediante REST.

URL base

Todas las solicitudes a la API van a esta raíz:

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

HTTPS es obligatorio. Las solicitudes HTTP se rechazan (no se redirigen).

Autenticación

Todas las solicitudes necesitan un token Bearer en el encabezado Authorization. Genera uno en el panel → Configuración → API Keys. Las keys vienen en versiones live y test, y cada una solo accede a su propio entorno.

curl https://www.7275.com/api/v1/accounts \
  -H "Authorization: Bearer dxk_live_...your-key..."
  • Formato de key live: empieza por dxk_live_, 64 caracteres
  • Formato de key test: empieza por dxk_test_, limitada a la cuenta sandbox
  • Nunca uses keys en código front-end: pásalas por tu propio backend como proxy
  • Si se filtra una key, revócala y genera otra de inmediato en el panel

Úsalo directamente desde Claude Desktop / Cursor (servidor MCP)

Publicamos un servidor Model Context Protocol sin dependencias para que clientes MCP como Claude Desktop y Cursor lean directamente el estado de tu AdWhiz. Sin escribir código: copia un bloque de configuración, pega tu API key y reinicia el cliente.

  • Cinco herramientas de solo lectura: listar cuentas publicitarias, ver recomendaciones de IA, obtener el ahorro de este mes, ver actividad reciente y consultar la cuota de API
  • Las herramientas de escritura (apply / pause) aún no se exponen a propósito: esperan a que el optimizador salga del shadow mode y tengamos evidencia de calibración para habilitarlas
  • Un único script para Node 18+. Sin npm install. Funciona sin problemas en equipos sin conexión / aislados (airgapped)
  • Tu API key nunca sale de tu equipo. Todas las solicitudes van por HTTPS directo a www.7275.com

Añade esto al 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_..."
      }
    }
  }
}

Guía de instalación completa, configuración de Cursor y solución de problemas en GitHub: github.com/dexun-inc/adwhiz/mcp-server.

Endpoints

La API v1 expone 13 endpoints principales que cubren identidad, lectura de cuentas, generación de recomendaciones (aplicarlas aún no está disponible), registros de auditoría, gestión de API keys, consulta de cuota y el feed del changelog.

MétodoRutaDescripción
GET/meDevuelve el propietario del token que llama + la cuota de rate limit restante (whoami)
GET/accountsLista todas las cuentas publicitarias que el usuario actual ha conectado (en las tres plataformas)
GET/accounts/{id}/campaignsLista campañas, grupos de anuncios, palabras clave y métricas de 7/30 días de una cuenta
POST/recommendations/generatePide a la IA que genere un nuevo lote de recomendaciones de optimización
GET/recommendationsLista todas las recomendaciones pendientes / aplicadas / descartadas
POST/recommendations/{id}/applyAplicar una recomendación — aún no disponible: devuelve 501 not_supported y no cambia nada
POST/recommendations/{id}/dismissDescartar una recomendación — aún no disponible: devuelve 501 not_supported y no cambia nada
POST/changes/{id}/rollbackRevertir un cambio aplicado — aún no disponible: devuelve 501 not_supported y no cambia nada
GET/audit-log(Obsoleto, se retira el 2027-05-23) Registro de auditoría completo. Usa /audit-events en su lugar: se basa en la tabla real audit_events y admite el filtro ?kind
GET/audit-eventsFlujo de eventos de auditoría de seguridad (inicio de sesión / contraseña / OAuth / suscripción), con filtros ?since + ?kind
GET/api-keysLista las API keys de quien llama (incl. lastUsedAt + active); hashedKey nunca se devuelve
GET/usageLee el tier actual, el límite de RPM, lo restante y reset_at sin hacer una solicitud de prueba
GET/changelogFeed JSON del changelog del producto (público, sin autenticación) con ETag + ?lang + ?limit (1..50) + ?since=YYYY-MM-DD: el formato canónico de consulta incremental

Solicitud de ejemplo

Genera nuevas recomendaciones de optimización para las tres plataformas:

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

Respuesta de ejemplo:

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

Consulta incremental de /changelog

/api/v1/changelog es un endpoint público (no requiere API key) con cuatro opciones para ahorrar ancho de banda: ETag + If-None-Match, Last-Modified + If-Modified-Since (curl -z), ?since=YYYY-MM-DD para filtrar por fecha y ?limit=N para limitar el tamaño. Los SDK y scripts de cron pueden combinarlas para consultar con frecuencia sin volver a descargar el mismo 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'

Límites de frecuencia

Escalonados por plan de suscripción para no saturar las cuotas de Google / Meta / TikTok:

  • Gratis (sin plan): 60 solicitudes/minuto
  • Inicial: 120 solicitudes/minuto
  • Personal: 120 solicitudes/minuto
  • Estándar: 600 solicitudes/minuto
  • Empresa: 3000 solicitudes/minuto
  • Al superar el límite se devuelve 429 + encabezado retry-after; se recomienda backoff exponencial

Códigos de error

Todos los errores devuelven JSON con error.code, error.message y error.request_id:

Estado HTTPSignificado
401API key ausente o no válida
403La cuenta no tiene autorización para este recurso (scope de OAuth insuficiente)
404Recurso no encontrado o eliminado
422Parámetros de solicitud no válidos
429Límite de frecuencia superado: espera lo que indique el encabezado retry-after
500Error del servidor: se reporta automáticamente
503API de la plataforma de origen no disponible temporalmente (Google / Meta / TikTok)