API Docs · Enterprise

API para automatizar links de afiliado e enviar ofertas

Integre seu sistema para converter links de afiliado com suas credenciais ou enviar ofertas aos grupos da sua conta. A API REST v1 exige Enterprise ativo e chave Bearer; conversão e envio têm resultados e limites distintos.

Autenticação

Base e chave Bearer

Todas as chamadas usam HTTPS e a base https://afilira.com/api/v1. Os caminhos abaixo são relativos a essa base.

No painel, abra Conta → Integrações Enterprise e use sua chave no cabeçalho Authorization: Bearer SUA_CHAVE_DE_API. Ela pertence à conta e exige Enterprise ativo. A chave da extensão é diferente e não autentica a API v1.

Os exemplos mostram o formato dos dados. Substitua os valores ilustrativos por seus links, identificadores e chave. Envie um objeto JSON nas chamadas POST, com Content-Type: application/json.

Consultar a conta
curl https://afilira.com/api/v1/account \
  -H "Authorization: Bearer SUA_CHAVE_DE_API"

Consultar a conta

GET/account

Consulta a conta vinculada à chave e o limite geral da API. Não recebe corpo JSON.

  • user_id identifica a conta; email é string ou null. plan_type é o plano efetivo.
  • api_access indica acesso à API; rate_limit_per_minute é o limite geral por conta.
Resposta HTTP 200 — exemplo de formato
{
  "ok": true,
  "user_id": "UUID_DA_CONTA",
  "email": "EMAIL_DA_CONTA",
  "plan_type": "enterprise",
  "api_access": true,
  "rate_limit_per_minute": 120
}

Converter um link

POST/links/convert

Recebe um link de produto e prepara o link com as credenciais de afiliado cadastradas. Não envia mensagens.

  • url: string obrigatória, contendo um link válido de uma plataforma reconhecida.
  • É necessário ter as credenciais da loja configuradas e o WhatsApp conectado na conta.
  • original_url é a URL normalizada usada na conversão; converted_link é o link resultante.
  • ok: true confirma a conversão do link. Não consulta nem confirma comissão, elegibilidade do anúncio, estoque ou variantes do produto.
Corpo JSON da requisição
{
  "url": "https://produto.mercadolivre.com.br/URL_DO_PRODUTO"
}
Resposta HTTP 200 — exemplo de formato
{
  "ok": true,
  "platform": "Mercado Livre",
  "original_url": "https://produto.mercadolivre.com.br/URL_DO_PRODUTO",
  "converted_link": "https://LINK_CONVERTIDO_DA_RESPOSTA"
}

Converter e disparar para grupos

POST/messages/dispatch

Converte o link e envia uma mensagem aos grupos WhatsApp escolhidos. Não inclui a oferta na fila de revisão.

  • url: string obrigatória. caption: string opcional; a legenda é limitada a 2.000 caracteres.
  • group_jids: array opcional de strings, com os identificadores dos grupos das suas sessões. Quando omitido ou vazio, usa os destinos configurados da sessão conectada com atualização mais recente, respeitando a exclusividade de espelhos.
  • Na seleção explícita, são usados até 50 identificadores. Identificadores de grupos de outras contas são descartados; sem nenhum pertencente às suas sessões e sem prévia, a resposta é 403 group_jids_not_owned.
  • preview_only: true prepara a mensagem, mas não envia. A prévia também exige credenciais da loja e WhatsApp conectado.
  • Sem preview_only: true, o resultado traz sent, failed e total; errors é uma lista de até cinco detalhes. Esses contadores não confirmam leitura ou compra.
  • O resultado pode ser HTTP 200 com ok: false quando sent é zero. Confira os contadores e errors; o código HTTP sozinho não confirma envio.
Corpo JSON da requisição
{
  "url": "https://produto.mercadolivre.com.br/URL_DO_PRODUTO",
  "caption": "Legenda opcional",
  "group_jids": [
    "ID_DO_GRUPO@g.us"
  ],
  "preview_only": false
}
Resposta HTTP 200 — exemplo de formato
{
  "ok": true,
  "sent": 1,
  "failed": 0,
  "total": 1,
  "converted_link": "https://LINK_CONVERTIDO_DA_RESPOSTA",
  "errors": []
}
Resposta com preview_only: true — sem envio
{
  "ok": true,
  "preview": true,
  "platform": "Mercado Livre",
  "converted_link": "https://LINK_CONVERTIDO_DA_RESPOSTA",
  "message_text": "Texto preparado e link convertido"
}
Limites e erros

Limites por conta

O limite geral é de 120 requisições por minuto por conta. As chaves da mesma conta compartilham esse limite.

O dispatch também tem um limite adicional de 10 disparos por minuto por conta, que inclui chamadas de prévia. Exceder qualquer limite aplicável retorna HTTP 429. Faça suas chamadas respeitando os dois limites.

As respostas abaixo têm error como string e podem incluir message. A mensagem de credenciais muda conforme a loja. Não há um objeto de erro aninhado.

HTTPQuandoCorpo JSON
401Todos — cabeçalho ausente{"error":"missing_authorization","message":"Use Authorization: Bearer afi_live_..."}
401Todos — formato da chave{"error":"invalid_api_key_format"}
401Todos — chave desconhecida, revogada ou segredo inválido{"error":"invalid_api_key"}
403Todos — acesso ao plano{"error":"api_access_requires_enterprise","message":"A API REST está disponível apenas no plano Enterprise."}
429Todos — limite geral da conta{"error":"rate_limited","message":"Limite de requisições por minuto atingido."}
400Convert e dispatch — corpo JSON inválido{"error":"invalid_json"}
400Convert e dispatch — url ausente ou vazia{"error":"url_required"}
400Convert e dispatch — link inválido{"error":"Informe um link válido (https://...)"}
400Convert e dispatch — plataforma desconhecida{"error":"Plataforma não reconhecida neste link."}
400Convert e dispatch — credenciais da loja (exemplo Mercado Livre){"error":"Configure suas credenciais de Mercado Livre antes de converter."}
400Convert e dispatch — sessão desconectada{"error":"WhatsApp não conectado."}
422Convert e dispatch — conversão sem resultado{"error":"Não foi possível converter o link."}
429Dispatch — limite de disparos{"error":"dispatch_rate_limited","message":"Máximo 10 disparos por minuto via API."}
403Dispatch — nenhum grupo da conta na seleção explícita{"error":"group_jids_not_owned","message":"Nenhum group_jid pertence às suas sessões."}
400Dispatch sem prévia — sem destinos{"error":"Nenhum grupo destino cadastrado."}
Webhook do painel · Enterprise

Aviso depois do envio

O webhook de saída é configurado no painel e é separado da API v1. No plano Enterprise, o evento delivery.success é emitido depois do envio a grupos, no caminho de entrega do bot. Ele não é um evento de captura ou revisão antes do envio, nem confirmação de leitura ou compra.

É um POST JSON para a URL HTTPS configurada, com Content-Type: application/json e User-Agent: Afilira-Webhook/1.0. Não há assinatura de autenticação nem repetição automática: cada chamada faz uma tentativa, com timeout de 5 segundos. Falhas ficam registradas e não garantem o recebimento do aviso.

O payload contém event, destJid, instanceName, user_id, firstChannelLink e ts. Esses campos não trazem a oferta completa; user_id e firstChannelLink podem ser null. ts é a data/hora do aviso.

Payload de delivery.success — valores ilustrativos
{
  "event": "delivery.success",
  "destJid": "ID_DO_GRUPO@g.us",
  "instanceName": "NOME_DA_SESSAO",
  "user_id": "UUID_DA_CONTA",
  "firstChannelLink": null,
  "ts": "2026-10-08T12:00:00.000Z"
}

O que a API v1 não oferece

Não há endpoint público para consultar a fila do Garimpar, ofertas capturadas ou em revisão. Não há busca por termo nem consulta de comissão, elegibilidade, estoque ou atributos de variantes. A conversão prepara o link; esses dados precisam ser conferidos na origem e no programa de afiliados.

Não existe conector nativo de Make, n8n ou Zapier. Nessas ferramentas, use uma chamada HTTP aos endpoints documentados acima com sua chave Bearer. Para converter sem enviar, use links/convert; messages/dispatch pode enviar aos grupos e não é uma etapa de revisão.

Automatizar links pelo painel ou pela API?

Para receber novas ofertas de grupos e publicar automaticamente, o monitoramento pelo painel está disponível desde o Starter. Para integrar um sistema próprio, confira os endpoints Enterprise acima.

FAQ

Perguntas frequentes

Se você ainda está escolhendo um bot de afiliados, comece pela visão geral do Afilira.

Precisa converter links pela API?

A API REST v1 está disponível no plano Enterprise. Conta, conversão de links e disparo para grupos.

Criar conta

Conta gratuita para configurar · Publicação exige assinatura

Sua privacidade

Usamos cookies essenciais para o funcionamento e a segurança do site. Com o seu consentimento, também usamos cookies de publicidade para medir o desempenho dos nossos anúncios. Você pode alterar sua escolha a qualquer momento em Preferências de cookies. Saiba mais na nossa Política de Cookies.