rstr_ no header Authorization: Bearer. A base URL é https://api.userepass.com.
Antes de começar, vale conhecer as convenções da API: IDs são opacos com prefixo de tipo + ULID (
prog_, aff_, link_, conv_, comm_), dinheiro é sempre inteiro em centavos e percentuais em basis points (10000 bps = 100%). Todo POST aceita o header Idempotency-Key.Visão do fluxo
Pré-requisitos
1
Tenha uma organização e uma API key
A organização é o seu tenant. Todo recurso é escopado por ela. Gere uma API key server-to-server (formato
rstr_…) no painel da organização. A key herda a role do membro dono; para os passos abaixo, use uma key com role admin ou owner.Guarde a key em local seguro: ela é mostrada uma única vez. Detalhes completos em Autenticação.Exporte a key
Passos
1
Crie um programa
Um Programa define moeda (atualmente BRL), modelo e janela de atribuição, hold de comissão e modo de aprovação de afiliados.
cURL
Resposta 201
2
Crie e aprove um afiliado
O Afiliado é identificado por e-mail dentro do programa. O Aprove o afiliado. A aprovação muda
mode define o status inicial: direct (padrão) já nasce approved; invite respeita o approvalMode do programa. Com manual, nasce pending e precisa ser aprovado. Usamos invite para ilustrar o fluxo de aprovação.cURL (criar)
Resposta 201
pending → approved e, nesse momento, o Repass cria automaticamente um Link default para ele.cURL (aprovar)
Resposta 200
3
Gere um link rastreável
Cada Afiliado pode ter vários Links. O token é único globalmente e imutável; você pode opcionalmente informar um O afiliado divulga a URL pública de redirect
subId para segmentar a divulgação. O destino (destinationUrl) precisa estar na whitelist de domínios da organização.cURL
Resposta 201
https://api.userepass.com/t/{token}. Quando um visitante acessa, o Repass registra o Clique (visitante, geo, detecção de bot), seta um cookie first-party e responde 302 para o destino.Redirect público (chamado pelo visitante)
4
Registre uma conversão server-to-server
Quando a venda acontece, registre a Conversão via A resposta sempre traz o envelope Se o matching não encontra um afiliado, a API responde
POST /conversions. A API roda atribuição (resolvendo a qual afiliado a venda pertence) e o score de fraude de forma síncrona, e retorna a decisão completa.O customer.id (identificador estável do cliente no seu sistema) é obrigatório. Para o matching, informe o clickId quando você o tiver, ou sinais alternativos (visitorId, emailHash, fingerprint, couponCode ou customer.email). Ao menos um é exigido. O sourceEventId torna a chamada idempotente por fato de negócio: o mesmo sourceEventId retorna a conversão existente com o header Idempotent-Replay: true.cURL
{ attributed, deduplicated, replayed, conversion }. Quando há atribuição e a conversão é nova, o status é 201 e a conversão vem em conversion.Resposta 201 (atribuída)
200 com attributed: false e conversion: null. Sem afiliado não há vínculo a registrar, então nada é persistido.Resposta 200 (sem atribuição)
Atribuição, regra e fraude são congelados em snapshots na conversão no momento do registro. O cálculo nunca é relido das tabelas vivas. Para o passo a passo completo desse fluxo, veja o guia de conversões server-to-server.
5
Consulte a comissão gerada
Ao registrar uma conversão atribuída, o Repass cria automaticamente a Comissão do primeiro ciclo de cobrança. Liste as comissões filtrando pela conversão.A comissão nasce
cURL
Resposta 200
pending e fica em hold até ser aprovada (pending → approved → paid). O detalhe (GET /commissions/{id}) traz o cálculo aberto: base, percentual em basis points, versão da regra aplicada. O ciclo de vida completo, incluindo clawbacks, está em Comissões.Pronto: você registrou uma venda e o Repass calculou a comissão devida ao afiliado. A partir daqui, as comissões aprovadas são agregadas num payout no fechamento de ciclo.
Idempotência e erros
POSTs aceitam o headerIdempotency-Key (escopo por organização + usuário, TTL de 24h): repetir a mesma chave com o mesmo corpo devolve a resposta original e o header Idempotent-Replay: true. Veja Idempotência.
Erros seguem um envelope único { "error": { "type", "code", "message", "param?" } } com status HTTP semântico:
Exemplo de erro 404
Próximos passos
Autenticação
API keys
rstr_, roles e escopo da organização.Conversões S2S
O fluxo completo de matching, atribuição e fraude.
Comissões
Cálculo inteiro, recorrência, tiers, clawback e estados.
Webhooks
Receba eventos de domínio assinados em tempo real.