REST API

Referência completa da API REST do AdFlow v1.

Acesso programático a todos os recursos do AdFlow via HTTP.

Base URL e versão

https://app.cloudadflow.com/api/v1

Versão atual: v1. Quebramos compatibilidade apenas em versões majors. Mudanças non-breaking (novos campos, novos endpoints) são adicionadas sem bump de versão.

Autenticação

JWT Bearer token. Faça login para obter o token:

curl -X POST https://app.cloudadflow.com/api/v1/auth/login \
  -H "Content-Type: application/json" \
  -d '{"email": "[email protected]", "password": "suasenha"}'

Resposta:

{
  "token": "eyJ...",
  "expires_at": "2026-05-04T12:00:00Z"
}

Use o token em todas as requisições:

Authorization: Bearer eyJ...

Tokens expiram em 24h. Use /auth/refresh para renovar sem relogar.

Rate limits

PlanoLimite
Free100 req/min por organização
Operator500 req/min
Captain / Zion1.000 req/min

Resposta ao atingir o limite: 429 Too Many Requests com header Retry-After em segundos.

Endpoints

RecursoEndpointMétodos
Auth/auth/loginPOST
Auth/auth/refreshPOST
Auth/auth/logoutDELETE
Campaigns/campaignsGET, POST
Campaigns/campaigns/:idGET, PUT, DELETE
Profiles/profilesGET, POST
Profiles/profiles/:idGET, PUT, DELETE
Proxies/proxiesGET, POST
Proxies/proxies/:idGET, PUT, DELETE
Templates/templatesGET, POST
Templates/templates/:idGET, PUT, DELETE
Audit Logs/audit_logsGET
Webhooks/webhook_endpointsGET, POST
Webhooks/webhook_endpoints/:idGET, DELETE

Exemplo: criar campanha

curl -X POST https://app.cloudadflow.com/api/v1/campaigns \
  -H "Authorization: Bearer eyJ..." \
  -H "Content-Type: application/json" \
  -d '{
    "name": "produto_conversao_20260503",
    "objective": "conversions",
    "profile_id": "prf_abc123",
    "daily_budget": 50.00,
    "currency": "BRL"
  }'

Resposta 201 Created:

{
  "id": "cmp_xyz789",
  "name": "produto_conversao_20260503",
  "status": "draft",
  "created_at": "2026-05-03T10:00:00Z"
}

Paginação

Listas retornam paginadas com cursor:

{
  "data": [...],
  "meta": {
    "next_cursor": "eyJpZCI6MTAwfQ==",
    "has_more": true
  }
}

Passe ?cursor=eyJpZCI6MTAwfQ== na próxima requisição para a página seguinte.