A API Rex permite gerenciar programaticamente ofertas, afiliados e links de checkout da sua loja. Você também pode iniciar sessões de pagamento e receber notificações de vendas em tempo real via webhooks.
🏷️
Ofertas
Crie e gerencie as ofertas com desconto da sua loja.
👥
Afiliados
Convide afiliados e acompanhe o desempenho deles.
🔗
Links
Gere links de checkout exclusivos por afiliado.
🚀
Checkout
Inicie uma sessão de pagamento e redirecione o comprador.
🪝
Webhooks
Seja notificado instantaneamente quando uma venda for confirmada.
🎟️
Vouchers
O comprador recebe um voucher para resgatar na loja física.
Todas as requisições à API devem incluir a chave de API da sua loja no cabeçalho Authorization usando o esquema Bearer. Cada loja possui duas chaves independentes — Produção (Live) para uso real e Sandbox para testes sem cobranças. Gerencie as chaves em Painel da Loja → Chaves de API.
Cada chave vale apenas no seu próprio ambiente: a chave de produção autentica no host de produção, e a chave sandbox em staging.rex.app.br. Usar uma no ambiente da outra retorna 401 Unauthorized — então aponte cada chave para o host correspondente.
Authorization: Bearer <sua_api_key>
curl https://app.rex.com.br/api/v1/offers \ -H "Authorization: Bearer <chave_producao>"
curl https://staging.rex.app.br/api/v1/offers \ -H "Authorization: Bearer <chave_sandbox>"
Mantenha sua chave de produção privada. Nunca a exponha em código client-side ou repositórios públicos. Se comprometida, regenere-a imediatamente pelo Painel. A chave sandbox não gera cobranças reais, mas só autentica em staging.rex.app.br — ela não funciona contra o host de produção.
A API usa códigos de status HTTP convencionais. Erros retornam um JSON com o campo error (ou array errors para falhas de validação).
{
"errors": ["Title can't be blank", "Commission percent must be greater than 0"]
}
O Rex processa pagamentos via Pagar.me. A integração envolve três passos simples:
Crie uma Sessão de Checkout
Chame POST /api/v1/checkout_sessions com o offer_id (e o offer_variant_id, se a oferta tiver variações). Você recebe um checkout_url.
Redirecione o Comprador
Redirecione o navegador do comprador para o checkout_url. Ele abre a página PIX hospedada pelo próprio Rex, com o QR Code para pagamento.
Receba o Webhook
Após a confirmação do pagamento, o Rex envia um POST para o seu webhook_url configurado com os detalhes da venda.
/api/v1/checkout_sessions
Cria uma sessão de pagamento para uma oferta e retorna um checkout_url para onde você deve redirecionar o comprador.
Parâmetros
{
"offer_id": 3,
"offer_variant_id": 12,
"affiliate_token": "FuVUcvE_t2A",
"buyer_name": "João Silva",
"buyer_email": "joao@exemplo.com",
"buyer_document": "12345678900",
"buyer_phone": "(11) 99999-9999"
}
curl -X POST https://app.rex.com.br/api/v1/checkout_sessions \\
-H "Authorization: Bearer <sua_api_key>" \\
-H "Content-Type: application/json" \\
-d '{"offer_id": 3, "offer_variant_id": 12, "affiliate_token": "FuVUcvE_t2A"}'
HTTP/1.1 201 Created
{
"checkout_url": "https://app.rex.com.br/purchases/42/pix"
}
Configure um endpoint HTTPS público no seu servidor para receber notificações de venda. Defina sua URL em Painel da Loja → Configurações → Webhook URL.
O Rex enviará uma requisição POST para sua URL a cada venda confirmada. Seu endpoint deve responder com 2xx em até 10 segundos.
💡 Dica
Durante o desenvolvimento você pode usar webhook.site ou ngrok para receber webhooks na sua máquina local.
O Rex envia um POST com Content-Type: application/json.
{
"event": "sale.created",
"sale_id": 42,
"offer": "Hambúrguer Artesanal + Fritas",
"customer": "João Silva",
"amount_cents": 3200
}
sale.created.
3200 = R$ 32,00).
/api/v1/offers
Retorna todas as ofertas da loja autenticada, ordenadas por data de criação (mais recente primeiro).
curl https://app.rex.com.br/api/v1/offers \\ -H "Authorization: Bearer <sua_api_key>"
HTTP/1.1 200 OK
[
{
"id": 1,
"title": "Hambúrguer Artesanal + Fritas",
"description": "Pão brioche 200g, batata frita rústica.",
"original_price_cents": 4500,
"discounted_price_cents": 3200,
"commission_percent": 20,
"valid_days": 30,
"active": true,
"created_at": "2026-03-01T10:00:00Z",
"variants": []
},
{
"id": 2,
"title": "Camiseta Básica",
"description": "Algodão penteado.",
"original_price_cents": null,
"discounted_price_cents": null,
"commission_percent": 15,
"valid_days": 30,
"active": true,
"created_at": "2026-03-02T10:00:00Z",
"variants": [
{ "id": 12, "color": "Preto", "size": "M",
"original_price_cents": 8990, "discounted_price_cents": 5990, "active": true },
{ "id": 13, "color": "Branco", "size": "G",
"original_price_cents": 8990, "discounted_price_cents": 6990, "active": false }
]
}
]
/api/v1/offers
Cria uma nova oferta para a loja.
Parâmetros
{
"offer": {
"title": "Camiseta Básica",
"description": "Algodão penteado.",
"commission_percent": 15,
"valid_days": 30,
"variants_attributes": [
{ "color": "Preto", "size": "M",
"original_price_cents": 8990, "discounted_price_cents": 5990 },
{ "color": "Branco", "size": "G",
"original_price_cents": 8990, "discounted_price_cents": 6990 }
]
}
}
curl -X POST https://app.rex.com.br/api/v1/offers \\
-H "Authorization: Bearer <sua_api_key>" \\
-H "Content-Type: application/json" \\
-d '{"offer": {"title": "Hambúrguer + Fritas", "commission_percent": 20, "discounted_price_cents": 3200}}'
201 Created + objeto da oferta (veja Listar Ofertas para o schema)
/api/v1/offers/:id
Atualiza um ou mais campos de uma oferta existente.
Parâmetros
{
"offer": {
"commission_percent": 25,
"discounted_price_cents": 2900
}
}
curl -X PATCH https://app.rex.com.br/api/v1/offers/1 \\
-H "Authorization: Bearer <sua_api_key>" \\
-H "Content-Type: application/json" \\
-d '{"offer": {"commission_percent": 25}}'
200 OK + objeto da oferta atualizada
/api/v1/offers/:id
Exclui permanentemente uma oferta e todos os links de afiliado associados.
curl -X DELETE https://app.rex.com.br/api/v1/offers/1 \\ -H "Authorization: Bearer <sua_api_key>"
HTTP/1.1 204 No Content
Uma oferta pode ter variações por cor e/ou tamanho.
Cada variação carrega o seu próprio preço completo — não é um acréscimo
sobre o preço da oferta. Quando existem variações, o preço padrão da oferta
(discounted_price_cents) pode ficar em branco, e as listagens
passam a exibir o valor da variação ativa mais barata.
Preto). Opcional se size for informado.
M). Opcional se color for informado.
true junto com o id para excluir a variação.
⚠️ Regras que costumam pegar
Preto/M colide com preto/m).offer_variant_id; sem ele a resposta é 422.Atualizar preço de uma variação e excluir outra
curl -X PATCH https://app.rex.com.br/api/v1/offers/2 \
-H "Authorization: Bearer <sua_api_key>" \
-H "Content-Type: application/json" \
-d '{
"offer": {
"variants_attributes": [
{ "id": 12, "discounted_price_cents": 4990 },
{ "id": 13, "_destroy": true },
{ "color": "Azul", "size": "P",
"original_price_cents": 8990, "discounted_price_cents": 6490 }
]
}
}'
/api/v1/affiliates
Sem filtro, retorna os afiliados que possuem links para as ofertas da sua loja. Com <code class='ic'>?doc=</code>, a busca é global à plataforma — serve para localizar um afiliado que já existe antes de convidá-lo.
Parâmetros
curl "https://app.rex.com.br/api/v1/affiliates?doc=123.456.789-00" \\ -H "Authorization: Bearer <sua_api_key>"
HTTP/1.1 200 OK
[
{
"id": 5,
"name": "Maria Afiliada",
"email": "maria@email.com",
"document": "123.456.789-00",
"phone_ddd": "11",
"phone_number": "999990000",
"created_at": "2026-01-15T12:00:00Z"
}
]
/api/v1/affiliates/:id
Retorna um afiliado específico incluindo seus links para as ofertas da sua loja.
curl https://app.rex.com.br/api/v1/affiliates/5 \\ -H "Authorization: Bearer <sua_api_key>"
HTTP/1.1 200 OK
{
"id": 5,
"name": "Maria Afiliada",
"email": "maria@email.com",
"document": "123.456.789-00",
"phone_ddd": "11",
"phone_number": "999990000",
"created_at": "2026-01-15T12:00:00Z",
"affiliate_links": [
{
"id": 12,
"offer_id": 3,
"token": "FuVUcvE_t2A",
"checkout_url": "https://app.rex.com.br/checkout/3?token=FuVUcvE_t2A",
"click_count": 47
}
]
}
/api/v1/affiliates
Cria uma nova conta de afiliado com senha aleatória gerada automaticamente. O afiliado precisa redefinir a senha para acessar o painel.
Parâmetros
{
"affiliate": {
"name": "João Silva",
"email": "joao@email.com",
"document": "987.654.321-00",
"phone_ddd": "21",
"phone_number": "988881234"
}
}
curl -X POST https://app.rex.com.br/api/v1/affiliates \\
-H "Authorization: Bearer <sua_api_key>" \\
-H "Content-Type: application/json" \\
-d '{"affiliate": {"name": "João Silva", "email": "joao@email.com", "document": "98765432100"}}'
201 Created + objeto do afiliado (veja Listar Afiliados para o schema)
/api/v1/affiliate_links
Retorna todos os links de afiliado de todas as ofertas da sua loja, ordenados por data de criação.
curl https://app.rex.com.br/api/v1/affiliate_links \\ -H "Authorization: Bearer <sua_api_key>"
HTTP/1.1 200 OK
[
{
"id": 12,
"offer_id": 3,
"affiliate_id": 5,
"token": "FuVUcvE_t2A",
"checkout_url": "https://app.rex.com.br/checkout/3?token=FuVUcvE_t2A",
"click_count": 47,
"created_at": "2026-02-10T08:00:00Z"
}
]
/api/v1/affiliate_links
Gera uma URL de checkout única e compartilhável para um par afiliado + oferta. Cada par só pode ter um link — retorna 422 se o link já existir.
Parâmetros
{
"offer_id": 3,
"affiliate_id": 5
}
curl -X POST https://app.rex.com.br/api/v1/affiliate_links \\
-H "Authorization: Bearer <sua_api_key>" \\
-H "Content-Type: application/json" \\
-d '{"offer_id": 3, "affiliate_id": 5}'
HTTP/1.1 201 Created
{
"id": 12,
"offer_id": 3,
"affiliate_id": 5,
"token": "FuVUcvE_t2A",
"checkout_url": "https://app.rex.com.br/checkout/3?token=FuVUcvE_t2A",
"click_count": 0,
"created_at": "2026-02-10T08:00:00Z"
}