API REST
Tudo o que o painel faz, por HTTPS com uma chave de API.
Autenticação
Crie uma chave em Configurações → API keys e envie como token Bearer. As chaves aparecem uma única vez.
curl https://api.adjoin.dev/v1/me \
-H "Authorization: Bearer adj_live_…"- read
- Requisições GET.
- write
- Criar e alterar campanhas, sites e placements.
- conversions
- Só os endpoints de conversão servidor a servidor.
Uma chave nunca é admin e não pode criar chaves nem pedir saques — isso exige uma pessoa logada.
Valores são sempre inteiros em micros: 1 USD = 1.000.000.
Endpoints
- GET /v1/me
- De quem é a chave.
- GET /v1/campaigns
- Suas campanhas com status, lance, orçamento e gasto.
- POST /v1/campaigns
- Cria uma campanha; começa em revisão. O orçamento é reservado do saldo pré-pago.
- POST /v1/campaigns/plan
- Lance inicial, previsão de alcance e reserva para um orçamento, antes de se comprometer.
- GET /v1/refunds?campaign_id=cmp_…
- Cliques que filtramos e não cobramos, com o motivo.
- POST /v1/conversions/s2s
- Confirma uma conversão pelo seu servidor.
- POST /v1/conversions/s2s/refund
- Estorna um pedido dentro do prazo de devolução.
- GET /v1/sites · POST /v1/sites
- Seus sites; registra um domínio.
- POST /v1/sites/{site_id}/verify
- Verifica a posse do domínio (DNS TXT, arquivo ou meta tag).
- GET /v1/placements?site_id= · POST /v1/placements
- Espaços de um site; cria um.
- GET /v1/placements/{placement_id}/live
- Se um espaço recebeu requisições nas últimas 24 horas.
- GET /v1/boost · POST /v1/boost
- Status do Launch Day Boost; aplicar a uma campanha.
- GET /v1/credits
- Saldo de crédito de promoção cruzada e atividade recente.
- GET /v1/segments
- Rótulos de audiência definidos pelos publishers, com pageviews de 7 dias (só 100+). Use em target_segments / exclude_segments ao criar uma campanha.
Criar uma campanha
pricing_model é cpc, cpm, cpa, affiliate, guaranteed ou cross_promo (pago em crédito, sem orçamento em dinheiro). Um 402 significa saldo disponível insuficiente.
curl -X POST https://api.adjoin.dev/v1/campaigns \
-H "Authorization: Bearer adj_live_…" -H "Content-Type: application/json" \
-d '{
"name": "Launch",
"pricing_model": "cpc",
"bid_micros": 300000,
"total_budget_micros": 50000000,
"daily_cap_micros": 5000000,
"target_categories": ["devtools"],
"creatives": [{ "headline": "Ship faster", "body": "…", "cta": "Try it",
"landing_url": "https://myapp.dev", "format": "card" }]
}'Conversões servidor a servidor
Mude a origem de conversão da campanha para s2s e confirme pedidos pelo seu servidor com uma chave de escopo conversions. O pixel deixa de cobrar essa campanha, então um pedido nunca é cobrado pelos dois caminhos. Cliques podem ser confirmados por 7 dias.
# the ad click lands on https://myapp.dev/?aj_t=… — keep aj_t with the order
curl -X POST https://api.adjoin.dev/v1/conversions/s2s \
-H "Authorization: Bearer adj_live_…" -H "Content-Type: application/json" \
-d '{ "click_token": "<aj_t>", "order_id": "order_1234", "value_micros": 29000000 }'
# a return or cancellation, inside the return window
curl -X POST https://api.adjoin.dev/v1/conversions/s2s/refund \
-H "Authorization: Bearer adj_live_…" -H "Content-Type: application/json" \
-d '{ "campaign_id": "cmp_…", "order_id": "order_1234" }'Erros
Erros são JSON com um campo detail. 401: chave ausente ou inválida. 403: falta o escopo. Objetos de outras contas também retornam 404, sem revelar que existem.
Dúvidas: [email protected]