Introdução
A UOL Ads API é a interface programática da plataforma de publicidade do UOL. Ela permite que anunciantes, agências e sistemas parceiros criem, gerenciem e acompanhem campanhas de mídia display e native sem depender da interface visual — tudo via requisições HTTP com respostas em JSON.
Para quem é este guia
- Anunciantes e agências que querem integrar seus próprios sistemas de gestão de mídia.
- Desenvolvedores que vão automatizar a criação de campanhas, o envio de criativos e a extração de relatórios de performance.
- Equipes de dados que precisam consumir métricas (impressões, cliques, conversões) de forma programática.
O que a API disponibiliza
- Criar e organizar campanhas e grupos de anúncios.
- Enviar criativos nos formatos Native (anúncio integrado ao conteúdo) e Display (banner com imagem).
- Definir orçamento, CPM (custo por mil impressões), período de veiculação e segmentação de audiência.
- Pausar e retomar campanhas, grupos e criativos a qualquer momento.
- Extrair relatórios de analytics, domínios, regiões, dispositivos e conversões.
Configurações da API
Tudo na Ads API é organizado em uma estrutura hierárquica clara e encadeada. Cada nível tem uma responsabilidade específica no fluxo de veiculação:
-
Campanha: É o topo da estrutura. Aqui você define as configurações iniciais como Objetivo e escolha do formato
-
Grupo de Anúncios: Fica dentro da campanha. É onde você gerencia as regras práticas de veiculação, como o público-alvo (segmentação), as estratégias de lance e os limites de orçamento desse grupo
-
Criativos: Ficam associados aos grupos. São formatos publicitárias que serão entregues ao usuário final, operando nos formatos Native (conteúdo integrado) ou Display (banners tradicionais)
Se você preferir não estruturar cada uma dessas entidades de forma isolada, a API oferece o recurso de Criação Simplificada. Com ele, você consegue instanciar a estrutura completa — Campanha, Grupo e Criativos — enviando todos os dados em uma única requisição. O acesso a todos os endpoints exige autenticação prévia baseada em tokens de segurança. Para obter suas credenciais, configurar as chaves de acesso e realizar sua primeira chamada de teste, acesse o guia do Início Rápido.
Início Rápido
Bem-vindo ao guia de integração. Este tutorial apresenta o caminho mais simples e direto para configurar o seu ambiente e colocar o seu primeiro anúncio no ar.
Pré-requisitos
- Uma API key válida (veja Autenticação para saber como obter).
- Um cliente HTTP qualquer:
curl, Postman, ou o próprio Swagger.
Passo 1 — Teste sua autenticação
Toda requisição (exceto rotas públicas como /health e o Swagger) exige o cabeçalho
Authorization com a sua chave. Faça uma listagem simples de campanhas para validar:
curl -X GET "https://api.ads.uol.com.br/campaigns" \
-H "Authorization: SUA_API_KEY"
Se você receber 200 OK (mesmo que a lista venha vazia), sua chave está funcionando.
Se receber um erro de autenticação, revise a seção Autenticação.
Passo 2 — Crie sua primeira estrutura em uma única chamada
O jeito mais rápido de colocar um anúncio no ar é a Criação Simplificada: uma requisição cria Campanha + Grupo + Native de uma vez.
curl -X POST "https://api.ads.uol.com.br/natives/simpleCreate" \
-H "Authorization: SUA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"nativeName": "Meu primeiro anúncio",
"budget": 150,
"rate": 1.5,
"startDate": "17-01-2025",
"title": "Conheça nossa oferta",
"description": "Uma descrição atraente do seu produto com o tamanho ideal aqui.",
"imageBase64": "..."
}'
O
nativeNameé reaproveitado como nome da campanha e do grupo quando você não informacampaignName/groupName. Atenção ao formato de data deste endpoint:dd-MM-yyyy.
A resposta traz campaignId, groupId e nativeId da estrutura recém-criada.
Passo 3 — Ou monte manualmente, passo a passo
Se preferir controle total, crie cada recurso separadamente:
# 1) Campanha
curl -X POST "https://api.ads.uol.com.br/campaigns" \
-H "Authorization: SUA_API_KEY" -H "Content-Type: application/json" \
-d '{ "name": "Campanha de Verão" }'
# 2) Grupo (use o id da campanha retornado acima)
curl -X POST "https://api.ads.uol.com.br/groups" \
-H "Authorization: SUA_API_KEY" -H "Content-Type: application/json" \
-d '{ "name": "Grupo SP", "campaign": { "id": 1 },
"budget": 150, "rate": 1.5, "startDate": "2025-01-17" }'
# 3) Criativo Native (use o id do grupo)
curl -X POST "https://api.ads.uol.com.br/creatives/natives" \
-H "Authorization: SUA_API_KEY" -H "Content-Type: application/json" \
-d '{ "name": "Native 1", "group": { "id": 1 },
"destinationUrl": "https://exemplo.com.br",
"title": "Título do anúncio",
"description": "Descrição com o tamanho recomendado entre 65 e 90 caracteres aqui.",
"brand": "Minha Marca", "imageBase64": "..." }'
No cadastro manual de grupo, o formato de data é
YYYY-MM-DD. Essa diferença em relação aosimpleCreateé esperada — veja o FAQ.
Passo 4 — Verifique o resultado
curl -X GET "https://api.ads.uol.com.br/creatives/natives?groupId=1" \
-H "Authorization: SUA_API_KEY"
Um criativo recém-criado normalmente entra com status PENDENTE até passar pela
moderação. Entenda o ciclo de vida em Conceitos Fundamentais.
Próximos passos
- Entenda a estrutura em Conceitos Fundamentais.
- Aprofunde em Campanhas, Grupos e Criativos.
- Aprenda a segmentar público em Segmentação de Audiência.
- Meça resultados em Relatórios e Métricas.
Conceitos Fundamentais
Antes de explorar os endpoints, é fundamental compreender a relação entre os recursos. Todo o conteúdo deste guia baseia-se nesses conceitos.
A hierarquia de recursos
Account (sua conta)
└── Campaign (campanha)
└── Group (grupo de anúncios)
├── Native (criativo integrado ao conteúdo)
└── Display (criativo em banner/imagem)
- Account — sua conta de anunciante. É determinada automaticamente pela API key que você usa; você não a informa manualmente nas requisições.
- Campaign (Campanha) — o agrupador de mais alto nível. Serve para organizar iniciativas (ex.: "Black Friday", "Lançamento de Produto"). Guarda basicamente um nome e um status.
- Group (Grupo) — onde vivem as regras de veiculação: orçamento, CPM, datas de início e fim, segmentação de audiência e a flag de conteúdo adulto. Uma campanha pode ter vários grupos.
- Creative (Criativo) — o anúncio em si, que fica dentro de um grupo. Existe em dois formatos: Native e Display.
Native x Display
| Aspecto | Native | Display |
|---|---|---|
| Formato | Integra-se visualmente ao conteúdo da página | Banner com imagem |
| Campos principais | título, descrição, marca, CTA, imagens | imagem + URL de destino |
| Imagens | principal + secundária + logo (opcionais) | uma imagem principal |
| Uso típico | recomendações, conteúdo patrocinado | mídia gráfica tradicional |
Ambos passam por moderação antes de veicular.
Status e ciclo de vida
Campanha, Grupo, Native e Display têm um único campo status, que combina o estado
operacional e o de moderação. Os valores possíveis são:
PENDENTE— criativo recém-criado, aguardando moderação (é o estado inicial de um Native/Display).APROVADO— aprovado na moderação e apto a veicular.REPROVADO— reprovado na moderação; o motivo vem no camporeason(múltiplos motivos são separados por|).ATIVO— em veiculação.PAUSADO— pausado.FINALIZADO,ARQUIVADO,EXCLUIDO— estados finais/de encerramento.
Você controla pausa e retomada pelos endpoints de changeStatus com as ações RESUME
(retomar) e PAUSE (pausar).
Formatos de data — atenção
A plataforma usa dois formatos de data dependendo do endpoint:
/groupse afins:YYYY-MM-DD(ex.:2025-01-17)./natives/simpleCreate:dd-MM-yyyy(ex.:17-01-2025).- Relatórios (
/report/metrics/*):yyyy-MM-dd.
Guarde essa diferença — ela é a causa mais comum de erro 400 para quem está começando.
Autenticação
Toda a comunicação com a Ads API é autenticada por API key. Sem uma chave válida, as requisições a recursos protegidos são rejeitadas.
Como funciona
- A chave é gerada pelo nosso time de atendimento após a solicitação da mesmo através do nosso Formulário
- A cada requisição, a Ads API lê o cabeçalho
Authorizatione verifica se a chave existe. - Se a chave for encontrada, ela é associada ao idtPerson correspondente, que passa a ser o usuário autenticado da requisição — e a conta (Account) dele é resolvida automaticamente.
- É permitida apenas uma chave por idtPerson.
Como enviar a chave
A chave vai diretamente no cabeçalho Authorization (sem prefixo Bearer):
curl -X GET "https://api.ads.uol.com.br/campaigns" \
-H "Authorization: SUA_API_KEY"
No Swagger, clique em Authorize e cole a chave no campo value.
Rotas públicas (sem autenticação)
O único caminho liberado e que não exige o cabeçalho Authorization:
/health- Ele vai retornar o status de funcionamento da API
Erros de autenticação
Se o cabeçalho Authorization estiver ausente/vazio ou a chave não for encontrada, a
autenticação falha e a requisição não é atendida como usuário válido. Confira o formato de
resposta de erro em Tratamento de Erros.
Campanhas
A campanha é o nível mais alto de organização. Na prática, é uma "pasta" que agrupa seus
grupos de anúncios sob um mesmo objetivo. Uma campanha carrega essencialmente um nome e
um status (ATIVO/PAUSADO).
Anatomia de uma campanha
| Campo | Obrigatório | Regra |
|---|---|---|
name |
Sim | Nome da campanha (até 120 caracteres) |
status |
Não | Estado operacional: ATIVO ou PAUSADO (padrão: ATIVO) |
groups |
Não | Lista de grupos vinculados (retornada na resposta) |
O
idé gerado pela API na criação e retornado na resposta, junto com ostatuse a lista degroupsvinculados.
A jornada com campanhas
- Criar a campanha com um nome.
- Adicionar grupos a ela (veja Grupos).
- Renomear quando necessário.
- Pausar/retomar a campanha inteira quando quiser interromper ou reativar a veiculação.
- Listar/filtrar campanhas para acompanhar o portfólio.
Criar uma campanha
curl -X POST "https://api.ads.uol.com.br/campaigns" \
-H "Authorization: SUA_API_KEY" -H "Content-Type: application/json" \
-d '{ "name": "Campanha de Verão" }'
O nome deve ter entre 1 e 80 caracteres. A resposta traz o id gerado, o status e a
lista de groups vinculados.
Renomear (atualização parcial)
curl -X PATCH "https://api.ads.uol.com.br/campaigns/1" \
-H "Authorization: SUA_API_KEY" -H "Content-Type: application/json" \
-d '{ "name": "Campanha de Verão 2025" }'
Pausar ou retomar
Você pode alterar o status de uma ou várias campanhas de uma vez, passando os IDs
separados por vírgula e a ação (RESUME ou PAUSE):
# Pausar as campanhas 1, 2 e 3
curl -X PUT "https://api.ads.uol.com.br/campaigns/1,2,3/changeStatus/PAUSE" \
-H "Authorization: SUA_API_KEY"
Consultar e listar
# Detalhes de uma campanha
curl "https://api.ads.uol.com.br/campaigns/1" -H "Authorization: SUA_API_KEY"
# Lista com filtros opcionais (por IDs e/ou status)
curl "https://api.ads.uol.com.br/campaigns?status=ATIVO" -H "Authorization: SUA_API_KEY"
Grupos
O grupo centraliza as configurações operacionais da veiculação. É neste nível que você define o orçamento, o período de veiculação e o público-alvo dos anúncios. Lembre-se de que cada grupo deve pertencer a uma campanha.
Anatomia de um grupo
| Campo | Obrigatório | Regra |
|---|---|---|
name |
Sim | Nome do grupo |
campaign.id |
Sim | Campanha à qual o grupo pertence |
budget |
Sim | Orçamento do grupo (o mínimo aceito depende do tipo de orçamento) |
rate |
Sim | Valor da taxa (o modelo de cobrança depende do chargingType do grupo, ex.: CPC ou CPM) |
startDate |
Sim | Início da veiculação (YYYY-MM-DD) |
endDate |
Não | Fim da veiculação (YYYY-MM-DD); opcional |
adult |
Não | Marca o grupo como conteúdo adulto (padrão: false) |
status |
Não | Estado operacional: ATIVO ou PAUSADO (padrão: ATIVO) |
O
idé gerado pela API na criação. As datas usam o formatoYYYY-MM-DD.
O que um grupo controla
- budget — orçamento do grupo (o mínimo aceito varia conforme o tipo de orçamento).
- rate — valor da taxa, conforme o modelo de cobrança (
chargingType) do grupo (ex.: CPC ou CPM). - startDate / endDate — período de veiculação (
YYYY-MM-DD). O fim é opcional. - adult — marca o grupo como conteúdo adulto (padrão:
false).
A jornada com grupos
- Criar o grupo dentro de uma campanha, definindo orçamento, CPM e datas.
- (Opcional) Vincular segmentos de audiência.
- Adicionar criativos (Native/Display) ao grupo.
- Ajustar orçamento, taxa ou data fim conforme a campanha evolui.
- Pausar/retomar o grupo isoladamente.
Criar um grupo
curl -X POST "https://api.ads.uol.com.br/groups" \
-H "Authorization: SUA_API_KEY" -H "Content-Type: application/json" \
-d '{
"name": "Grupo São Paulo",
"campaign": { "id": 1 },
"budget": 150,
"rate": 1.5,
"startDate": "2025-01-17",
"endDate": "2025-12-31"
}'
Atualização
# Atualização parcial
curl -X PATCH "https://api.ads.uol.com.br/groups/1" \
-H "Authorization: SUA_API_KEY" -H "Content-Type: application/json" \
-d '{ "budget": 300, "rate": 2.0, "endDate": "2026-01-31" }'
Mudança de status (pausar/retomar)
# Pausar/retomar um ou vários grupos
curl -X PUT "https://api.ads.uol.com.br/groups/1,2/changeStatus/PAUSE" \
-H "Authorization: SUA_API_KEY"
Listagem
# Listar filtrando por campanha
curl "https://api.ads.uol.com.br/groups?campaignId=1&status=ATIVO" \
-H "Authorization: SUA_API_KEY"
Criativos — Native
O formato Native é projetado para se integrar ao conteúdo da página, proporcionando uma experiência fluída ao usuário.
Anatomia de um Native
| Campo | Obrigatório | Regra |
|---|---|---|
name |
Sim | Nome interno do anúncio (até 60 caracteres) |
group.id |
Sim | Grupo ao qual pertence |
destinationUrl |
Sim | Página de destino (9–1017 caracteres) |
title |
Sim | Título exibido (até 25 caracteres) |
description |
Sim | Descrição (65–90 caracteres) |
brand |
Sim | Marca (até 25 caracteres) |
imageBase64 |
Sim | Imagem principal em Base64 |
secondaryImageBase64 |
Não | Imagem secundária em Base64 |
logoBase64 |
Não | Logo em Base64 |
status |
Não | Estado do criativo (campo único). Um criativo novo entra como PENDENTE; após moderação vira APROVADO ou REPROVADO; em veiculação/pausa fica ATIVO/PAUSADO |
reason |
— | Motivo(s) da reprovação, preenchido pela plataforma quando status é REPROVADO (múltiplos motivos separados por |) |
As imagens são enviadas em Base64 no corpo da requisição. Na resposta, a API devolve as URLs já processadas (
image,secondaryImage,logo).
A jornada com Native
- Criar o criativo dentro de um grupo, respeitando os limites de caracteres.
- Ele entra como
PENDENTEe passa por moderação. - Se
REPROVADO, a resposta traz oreasonexplicando o motivo — ajuste e reenvie. - Editar campos a qualquer momento (atualização parcial).
- Pausar/retomar ou listar conforme a operação.
Criar um Native
curl -X POST "https://api.ads.uol.com.br/creatives/natives" \
-H "Authorization: SUA_API_KEY" -H "Content-Type: application/json" \
-d '{
"name": "Native Verão",
"group": { "id": 1 },
"destinationUrl": "https://exemplo.com.br/oferta",
"title": "Oferta imperdível",
"description": "Aproveite condições especiais por tempo limitado neste verão incrível.",
"brand": "Minha Marca",
"imageBase64": "..."
}'
Atualização
# Atualização parcial (todos os campos são opcionais)
curl -X PATCH "https://api.ads.uol.com.br/creatives/natives/1" \
-H "Authorization: SUA_API_KEY" -H "Content-Type: application/json" \
-d '{ "title": "Novo título" }'
Mudança de status (pausar/retomar)
curl -X PUT "https://api.ads.uol.com.br/creatives/natives/1,2/changeStatus/PAUSE" \
-H "Authorization: SUA_API_KEY"
Listagem
# Listar por grupo e status
curl "https://api.ads.uol.com.br/creatives/natives?groupId=1&status=APROVADO" \
-H "Authorization: SUA_API_KEY"
Criativos — Display
O Display representa o formato tradicional de banner. Trata-se de uma estrutura mais simplificada em comparação ao formato Native, cujo escopo técnico é centrado essencialmente em um arquivo de imagem e uma URL de redirecionamento.
Anatomia de um Display
| Campo | Obrigatório | Regra |
|---|---|---|
name |
Sim | Nome interno do banner (deve ser único no grupo; na plataforma é derivado do nome do arquivo da imagem) |
group.id |
Sim | Grupo ao qual pertence |
destinationUrl |
Sim | Página de destino (9–1017 caracteres) |
imageBase64 |
Sim | Imagem do banner em Base64 |
status |
Não | Estado do criativo (campo único). Um criativo novo entra como PENDENTE; após moderação vira APROVADO ou REPROVADO; em veiculação/pausa fica ATIVO/PAUSADO |
reason |
— | Motivo(s) da reprovação, preenchido pela plataforma quando status é REPROVADO (múltiplos motivos separados por |) |
Na resposta, a API devolve a URL processada em
imagee, se reprovado, oreason.
A jornada com Display
Idêntica à do Native, com menos campos: criar → moderação (PENDENTE →
APROVADO/REPROVADO) → editar → pausar/retomar → listar.
Criação de um Display
# Criar
curl -X POST "https://api.ads.uol.com.br/creatives/displays" \
-H "Authorization: SUA_API_KEY" -H "Content-Type: application/json" \
-d '{ "name": "Banner Home", "group": { "id": 1 },
"destinationUrl": "https://ads.uol.com.br", "imageBase64": "..." }'
Edição
# Editar parcialmente
curl -X PATCH "https://api.ads.uol.com.br/creatives/displays/1" \
-H "Authorization: SUA_API_KEY" -H "Content-Type: application/json" \
-d '{ "destinationUrl": "https://ads.uol.com.br/promo" }'
Mudança de status (pausar/retomar)
curl -X PUT "https://api.ads.uol.com.br/creatives/displays/1/changeStatus/PAUSE" \
-H "Authorization: SUA_API_KEY"
Listagem
# Listar por grupo e status
curl "https://api.ads.uol.com.br/creatives/displays?groupId=1" \
-H "Authorization: SUA_API_KEY"
Criação Simplificada
O endpoint POST /natives/simpleCreate unifica o fluxo de setup de campanhas.
Ele possibilita a criação simultânea de toda a estrutura hierárquica (Campanha, Grupo e Native) em uma única chamada,
eliminando a necessidade de múltiplos requests sequenciais.
Quando usar
- Primeiros testes e provas de conceito.
- Fluxos onde cada anúncio já corresponde a uma campanha/grupo próprios.
- Integrações que priorizam simplicidade em vez de reaproveitar campanhas existentes.
Regras importantes
- Se você informar apenas
nativeName, ele será usado também comocampaignNameegroupName. - O formato de data aqui é
dd-MM-yyyy(diferente do/groups, que usaYYYY-MM-DD). - Rollback parcial: se ocorrer erro durante a criação, a campanha recém-criada é removida automaticamente, para não deixar lixo na sua conta.
Campos principais
| Campo | Obrigatório | Observação |
|---|---|---|
nativeName |
Sim | Também vira campanha/grupo se estes não forem informados (máx. 25) |
campaignName |
Não | Máx. 80 |
groupName |
Não | Máx. 80 |
budget |
Sim | Orçamento do grupo |
rate |
Sim | Valor da taxa — neste fluxo o modelo de cobrança é CPC |
startDate |
Sim | Início (dd-MM-yyyy) |
endDate |
Não | Fim (dd-MM-yyyy) |
adult |
Não | Padrão false |
title |
Sim | Título do Native (máx. 25) |
description |
Sim | 65–90 caracteres |
brand |
Sim | Máx. 25 |
imageBase64 |
Sim | Imagem principal |
secondaryImageBase64 |
Não | Imagem secundária |
Exemplo
curl -X POST "https://api.ads.uol.com.br/natives/simpleCreate" \
-H "Authorization: SUA_API_KEY" -H "Content-Type: application/json" \
-d '{
"nativeName": "Lançamento Rápido",
"budget": 200,
"rate": 1.8,
"startDate": "17-01-2025",
"endDate": "31-12-2025",
"title": "Novidade chegando",
"description": "Descubra o que preparamos para você nesta temporada de novidades exclusivas.",
"imageBase64": "..."
}'
A resposta traz campaignId, groupId e nativeId com todos os dados criados.
Relatórios e Métricas
Após o início da veiculação dos anúncios, o monitoramento de desempenho é realizado por
meio dos endpoints agrupados sob o caminho /report/metrics/*. Todas as consultas utilizam o
método GET e exigem obrigatoriamente os parâmetros de consulta startDate e endDate
formatados no padrão ISO yyyy-MM-dd.
A jornada de análise
- Comece pelo relatório analítico geral para ter a visão macro (impressões, cliques etc.).
- Aprofunde por domínio, região, dispositivo ou conversões conforme a pergunta que você quer responder.
- Use dimensões para agrupar e filtros (campanhas, grupos, criativos) para recortar.
Relatórios disponíveis
| Relatório | Endpoint | Para responder |
|---|---|---|
| Analítico geral | GET /report/metrics/analytics |
Visão consolidada por múltiplas dimensões |
| Domínios | GET /report/metrics/domains |
Em quais sites/URLs os anúncios apareceram |
| Regiões | GET /report/metrics/regions |
Performance por estado (ex.: SP, RJ) |
| Dispositivos | GET /report/metrics/devices |
Mobile vs desktop etc. |
| Conversões | GET /report/metrics/conversions |
Resultados de conversão |
Filtros e dimensões
dimensions— como agrupar os dados. No relatório analítico e no de conversões é necessário informar ao menos uma dimensão; nos demais é opcional.- Filtros por escopo:
campaignIds,groupIds,displayIds,nativeIds. - Filtros específicos:
formats(native/display),domains,regions(siglas de estado),deviceTypes,conversionIds.
Exemplos
# Relatório analítico agrupado por dia
curl "https://api.ads.uol.com.br/report/metrics/analytics?startDate=2025-01-01&endDate=2025-01-31&dimensions=DAY" \
-H "Authorization: SUA_API_KEY"
# Métricas por região, filtrando por campanha e por SP
curl "https://api.ads.uol.com.br/report/metrics/regions?startDate=2025-01-01&endDate=2025-01-31&campaignIds=1&regions=SP" \
-H "Authorization: SUA_API_KEY"
# Métricas por dispositivo
curl "https://api.ads.uol.com.br/report/metrics/devices?startDate=2025-01-01&endDate=2025-01-31" \
-H "Authorization: SUA_API_KEY"
A lista completa de dimensões e enums (por exemplo, os valores válidos de
dimensions,deviceTypeseregions) fica sempre atualizada no Swagger
Tratamento de Erros
Em cenários de falha na requisição, a API retorna o código de status HTTP apropriado acompanhado de um payload JSON descritivo no corpo da resposta. Compreender a estrutura dessas mensagens de erro otimiza o processo de depuração e acelera o ciclo de desenvolvimento da sua integração.
Formato do erro
Os erros seguem, em geral, a estrutura do objeto AdsError:
{
"status": 400,
"error": "Bad Request",
"message": "Descrição do que ocorreu",
"path": "/groups",
"exception": "MethodArgumentNotValidException"
}
status— código HTTP numérico.error— nome do status HTTP.message— detalhe do erro (inclui as mensagens de validação de campos).path— endpoint que gerou o erro.exception— nome técnico da exceção (útil para depurar).
Principais situações
| Código | Quando ocorre | Como resolver |
|---|---|---|
| 400 Bad Request | Validação de campos falhou, parâmetro obrigatório ausente ou tipo inválido | Cheque limites de caracteres, campos obrigatórios e formatos de data |
| 415 Unsupported Media Type | Content-Type incorreto ou arquivo de tipo não aceito no upload |
Use application/json |
| 503 Service Unavailable | Erro de negócio (AdsException), falha de integração com serviços internos ou erro inesperado |
Verifique a message; se persistir, é falha temporária de backend |
Erros de validação de campo (ex.: descrição fora da faixa de 65–90 caracteres) chegam como 400 com as mensagens detalhadas dentro de
message.
Referência de Status
Tabela consolidada dos status usados na plataforma.
| Recurso | Status possíveis | Como muda |
|---|---|---|
| Campanha | ATIVO, PAUSADO |
PUT .../changeStatus/{RESUME|PAUSE} |
| Grupo | ATIVO, PAUSADO |
PUT .../changeStatus/{RESUME|PAUSE} |
| Native | PENDENTE, APROVADO, REPROVADO, ATIVO, PAUSADO, FINALIZADO, ARQUIVADO, EXCLUIDO (campo único status) |
Pausa/retomada via PUT .../changeStatus/{RESUME|PAUSE}; moderação definida pela plataforma (com reason se reprovado) |
| Display | PENDENTE, APROVADO, REPROVADO, ATIVO, PAUSADO, FINALIZADO, ARQUIVADO, EXCLUIDO (campo único status) |
Pausa/retomada via PUT .../changeStatus/{RESUME|PAUSE}; moderação definida pela plataforma (com reason se reprovado) |
Ações de mudança de estado: RESUME (retomar) e PAUSE (pausar).
Mapa rápido de recursos
| Recurso | Base | Documentado em |
|---|---|---|
| Campanhas | /campaigns |
Campanhas |
| Grupos | /groups |
Grupos |
| Criativos Native | /creatives/natives |
Native |
| Criativos Display | /creatives/displays |
Display |
| Criação Simplificada | /natives/simpleCreate |
Criação Simplificada |
| Segmentos de Conta | /account-segments |
Segmentação |
| Relatórios | /report/metrics/* |
Relatórios |
Perguntas Frequentes (FAQ)
Como envio imagens? Preciso hospedar em algum lugar antes?
Não. As imagens vão em Base64 no corpo da requisição (imageBase64,
secondaryImageBase64, logoBase64). A API processa e devolve as URLs prontas na
resposta (image, secondaryImage, logo).
Por que às vezes a data é YYYY-MM-DD e às vezes dd-MM-yyyy?
É uma diferença real por endpoint: /groups usa YYYY-MM-DD, o /natives/simpleCreate
usa dd-MM-yyyy e os relatórios usam yyyy-MM-dd. Enviar o formato errado é a causa
mais comum de erro 400.
Meu criativo foi criado como PENDENTE. E agora?
É o comportamento normal: todo criativo passa por moderação. Ele vira APROVADO ou
REPROVADO. Se reprovado, leia o campo reason da resposta, corrija e reenvie.
Recebi erro na criação simplificada. A campanha ficou criada parcialmente?
Não. O simpleCreate faz rollback parcial: se der erro durante a criação, a campanha
recém-criada é removida automaticamente.
Quais são os limites de caracteres dos criativos Native?
name até 60, title até 25, brand até 25, description 65–90,
destinationUrl 9–1017. Fora dessas faixas, a API retorna 400 com o detalhe em message.
Posso pausar várias campanhas/grupos/criativos de uma vez?
Sim. Os endpoints de changeStatus aceitam múltiplos IDs separados por vírgula, por
exemplo PUT /campaigns/1,2,3/changeStatus/PAUSE.
Como faço para testar rápido sem escrever código?
Use o Swagger:
clique em Authorize, informe sua API key e dispare as chamadas direto pelo navegador.