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/v1HTTPS é 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étodo | Caminho | Descrição |
|---|---|---|
| GET | /me | Retorna o dono do token que faz a chamada + a cota restante de rate limit (whoami) |
| GET | /accounts | Lista todas as contas de anúncios conectadas pelo usuário atual (nas três plataformas) |
| GET | /accounts/{id}/campaigns | Lista campanhas, grupos de anúncios, palavras-chave e métricas de 7/30 dias de uma conta |
| POST | /recommendations/generate | Faz a IA gerar um novo lote de recomendações de otimização |
| GET | /recommendations | Lista todas as recomendações pendentes / aplicadas / descartadas |
| POST | /recommendations/{id}/apply | Aplicar uma recomendação — ainda não disponível: retorna 501 not_supported e não altera nada |
| POST | /recommendations/{id}/dismiss | Descartar uma recomendação — ainda não disponível: retorna 501 not_supported e não altera nada |
| POST | /changes/{id}/rollback | Reverter 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-events | Fluxo de eventos de auditoria de segurança (login / senha / OAuth / assinatura), com filtros ?since + ?kind |
| GET | /api-keys | Lista as API keys de quem chama (incl. lastUsedAt + active); hashedKey nunca é retornado |
| GET | /usage | Lê o tier atual, o limite de RPM, o restante e reset_at sem uma requisição de teste |
| GET | /changelog | Feed 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 HTTP | Significado |
|---|---|
401 | API key ausente ou inválida |
403 | Conta sem autorização para este recurso (scope OAuth insuficiente) |
404 | Recurso não encontrado ou excluído |
422 | Parâmetros de requisição inválidos |
429 | Limite de taxa excedido — aguarde o tempo do cabeçalho retry-after |
500 | Erro do servidor — reportado automaticamente |
503 | API da plataforma de origem temporariamente indisponível (Google / Meta / TikTok) |