Para desenvolvedores

Referência da API

Conecte a otimização com IA para três plataformas da DEXUN AdWhiz às suas próprias ferramentas, scripts ou backend via REST.

URL base

Todas as requisições da API vão para esta raiz:

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

HTTPS é obrigatório. Requisições HTTP são rejeitadas (não redirecionadas).

Autenticação

Todas as requisições precisam de um token Bearer no cabeçalho Authorization. Gere um em painel → Configurações → API Keys. As keys existem nas versões live e test e só acessam o próprio ambiente.

curl https://www.7275.com/api/v1/accounts \
  -H "Authorization: Bearer dxk_live_...your-key..."
  • Formato da key live: começa com dxk_live_, 64 caracteres
  • Formato da key test: começa com dxk_test_, restrita à conta sandbox
  • Nunca use keys em código front-end — faça proxy pelo seu próprio backend
  • Se uma key vazar, revogue e gere outra imediatamente no painel

Use direto no Claude Desktop / Cursor (servidor MCP)

Publicamos um servidor Model Context Protocol sem dependências para que clientes MCP como Claude Desktop e Cursor leiam o estado do seu AdWhiz diretamente. Sem escrever código — copie um bloco de configuração, cole sua API key e reinicie o cliente.

  • Cinco ferramentas somente leitura: listar contas de anúncios, ver recomendações de IA, obter a economia do mês, ver atividade recente e consultar a cota da API
  • Ferramentas de escrita (apply / pause) propositalmente ainda não expostas — aguardam o otimizador sair do shadow mode e termos evidências de calibração para liberá-las
  • Um único script Node 18+. Zero npm install. Roda tranquilamente em máquinas offline / isoladas (airgapped)
  • Sua API key nunca sai da sua máquina. Todas as requisições vão por HTTPS direto para www.7275.com

Adicione isto ao claude_desktop_config.json do 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_..."
      }
    }
  }
}

Guia de instalação completo, configuração do Cursor e solução de problemas no GitHub: github.com/dexun-inc/adwhiz/mcp-server.

Endpoints

A API v1 expõe 13 endpoints principais, cobrindo identidade, leitura de contas, geração de recomendações (aplicá-las ainda não está disponível), logs de auditoria, gerenciamento de API keys, consulta de cota e o feed do changelog.

MétodoCaminhoDescrição
GET/meRetorna o dono do token que faz a chamada + a cota restante de rate limit (whoami)
GET/accountsLista todas as contas de anúncios conectadas pelo usuário atual (nas três plataformas)
GET/accounts/{id}/campaignsLista campanhas, grupos de anúncios, palavras-chave e métricas de 7/30 dias de uma conta
POST/recommendations/generateFaz a IA gerar um novo lote de recomendações de otimização
GET/recommendationsLista todas as recomendações pendentes / aplicadas / descartadas
POST/recommendations/{id}/applyAplicar uma recomendação — ainda não disponível: retorna 501 not_supported e não altera nada
POST/recommendations/{id}/dismissDescartar uma recomendação — ainda não disponível: retorna 501 not_supported e não altera nada
POST/changes/{id}/rollbackReverter uma alteração aplicada — ainda não disponível: retorna 501 not_supported e não altera nada
GET/audit-log(Obsoleto, desativado em 2027-05-23) Log de auditoria completo. Use /audit-events — baseado na tabela real audit_events, com filtro ?kind
GET/audit-eventsFluxo de eventos de auditoria de segurança (login / senha / OAuth / assinatura), com filtros ?since + ?kind
GET/api-keysLista as API keys de quem chama (incl. lastUsedAt + active); hashedKey nunca é retornado
GET/usageLê o tier atual, o limite de RPM, o restante e reset_at sem uma requisição de teste
GET/changelogFeed JSON do changelog do produto (público, sem autenticação) com ETag + ?lang + ?limit (1..50) + ?since=YYYY-MM-DD — o formato canônico de consulta incremental

Exemplo de requisição

Gere novas recomendações de otimização para as três 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"
  }'

Exemplo de resposta:

{
  "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 é um endpoint público (não exige API key) com quatro recursos para economizar banda: ETag + If-None-Match, Last-Modified + If-Modified-Since (curl -z), ?since=YYYY-MM-DD para buscas filtradas por data e ?limit=N para limitar o tamanho. SDKs e scripts de cron podem combiná-los para consultar com frequência sem baixar o mesmo JSON de novo.

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

Escalonados por plano de assinatura para não sobrecarregar as cotas do Google / Meta / TikTok:

  • Professional: 120 requisições/minuto
  • Business: 600 requisições/minuto
  • Enterprise: personalizado (normalmente 3.000 requisições/minuto)
  • Acima do limite retorna 429 + cabeçalho retry-after — recomenda-se backoff exponencial

Códigos de erro

Todos os erros retornam JSON com error.code, error.message e error.request_id:

Status HTTPSignificado
401API key ausente ou inválida
403Conta sem autorização para este recurso (scope OAuth insuficiente)
404Recurso não encontrado ou excluído
422Parâmetros de requisição inválidos
429Limite de taxa excedido — aguarde o tempo do cabeçalho retry-after
500Erro do servidor — reportado automaticamente
503API da plataforma de origem temporariamente indisponível (Google / Meta / TikTok)