Rex API Referência
Base URL: https://app.rex.com.br/api/v1

Referência da API

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.


Autenticação

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.

Cabeçalho HTTP
Authorization: Bearer <sua_api_key>
exemplo curl — produção
curl https://app.rex.com.br/api/v1/offers \
  -H "Authorization: Bearer <chave_producao>"
exemplo curl — sandbox
curl https://app.rex.com.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 é segura para testes locais.


Erros

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).

200 OK Requisição bem-sucedida.
201 Created Recurso criado com sucesso.
204 No Content Recurso excluído com sucesso.
401 Unauthorized Chave de API ausente ou inválida.
404 Not Found Recurso não encontrado ou não pertence à sua loja.
422 Unprocessable Entity Validação falhou. Verifique o array errors.
422 — erro de validação
{
  "errors": ["Title can't be blank", "Commission percent must be greater than 0"]
}

Checkout — Como Funciona

O Rex processa pagamentos via Mercado Pago. A integração envolve três passos simples:

1

Crie uma Sessão de Checkout

Chame POST /api/v1/checkout_sessions com o offer_id (e opcionalmente um affiliate_token). Você recebe um checkout_url.

2

Redirecione o Comprador

Redirecione o navegador do comprador para o checkout_url. Ele conclui o pagamento na página hospedada do Mercado Pago.

3

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.


POST /api/v1/checkout_sessions

Criar Sessão de Checkout

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 obrigatório
integer ID da oferta a ser comprada.
affiliate_token
string Token do link de afiliado. Se fornecido, a venda será atribuída ao afiliado.
Corpo da requisição
{
  "offer_id": 3,
  "affiliate_token": "FuVUcvE_t2A"
}
curl
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, "affiliate_token": "FuVUcvE_t2A"}'
Resposta
HTTP/1.1 201 Created

{
  "checkout_url": "https://www.mercadopago.com.br/checkout/v1/redirect?pref_id=123456789-abc"
}

Webhooks — Configuração

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.


Webhooks — Referência do Payload

O Rex envia um POST com Content-Type: application/json.

POST your_webhook_url
{
  "event":      "sale.created",
  "sale_id":    42,
  "offer":      "Hambúrguer Artesanal + Fritas",
  "customer":   "João Silva",
  "amount_cents": 3200
}
event string Tipo do evento. Atualmente sempre sale.created.
sale_id integer Identificador único da venda.
offer string Título da oferta comprada.
customer string Nome do comprador.
amount_cents integer Valor total pago em centavos (ex: 3200 = R$ 32,00).

GET /api/v1/offers

Listar Ofertas

Retorna todas as ofertas da loja autenticada, ordenadas por data de criação (mais recente primeiro).

curl
curl https://app.rex.com.br/api/v1/offers \\
  -H "Authorization: Bearer <sua_api_key>"
Resposta
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"
  }
]

POST /api/v1/offers

Criar Oferta

Cria uma nova oferta para a loja.

Parâmetros

title obrigatório
string Nome da oferta.
description
string Descrição completa exibida para os compradores.
original_price_cents
integer Preço original em centavos (ex: 4500 = R$45,00).
discounted_price_cents
integer Preço com desconto em centavos. Valor cobrado do comprador.
commission_percent obrigatório
integer Percentual da venda creditado ao afiliado (1–100).
valid_days
integer Quantos dias o voucher é válido após a compra.
active
boolean Se a oferta está ativa. Padrão: <code class='ic'>true</code>.
Corpo da requisição
{
  "offer": {
    "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
  }
}
curl
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}}'
Resposta
201 Created  +  objeto da oferta (veja Listar Ofertas para o schema)

PATCH /api/v1/offers/:id

Atualizar Oferta

Atualiza um ou mais campos de uma oferta existente.

Parâmetros

title
string Novo título.
commission_percent
integer Novo percentual de comissão.
discounted_price_cents
integer Novo preço com desconto em centavos.
active
boolean Ativar (<code class='ic'>true</code>) ou desativar (<code class='ic'>false</code>) a oferta.
Corpo da requisição
{
  "offer": {
    "commission_percent": 25,
    "discounted_price_cents": 2900
  }
}
curl
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}}'
Resposta
200 OK  +  objeto da oferta atualizada

DELETE /api/v1/offers/:id

Excluir Oferta

Exclui permanentemente uma oferta e todos os links de afiliado associados.

curl
curl -X DELETE https://app.rex.com.br/api/v1/offers/1 \\
  -H "Authorization: Bearer <sua_api_key>"
Resposta
HTTP/1.1 204 No Content

GET /api/v1/affiliates

Listar Afiliados

Retorna afiliados que possuem links para as ofertas da sua loja. Filtragem opcional por CPF ou CNPJ.

Parâmetros

doc
string Filtra por CPF ou CNPJ do afiliado (query parameter, somente dígitos).
curl
curl "https://app.rex.com.br/api/v1/affiliates?doc=123.456.789-00" \\
  -H "Authorization: Bearer <sua_api_key>"
Resposta
HTTP/1.1 200 OK

[
  {
    "id": 5,
    "name": "Maria Afiliada",
    "email": "maria@email.com",
    "document": "123.456.789-00",
    "phone": "(11) 99999-0000",
    "created_at": "2026-01-15T12:00:00Z"
  }
]

GET /api/v1/affiliates/:id

Buscar Afiliado

Retorna um afiliado específico incluindo seus links para as ofertas da sua loja.

curl
curl https://app.rex.com.br/api/v1/affiliates/5 \\
  -H "Authorization: Bearer <sua_api_key>"
Resposta
HTTP/1.1 200 OK

{
  "id": 5,
  "name": "Maria Afiliada",
  "email": "maria@email.com",
  "document": "123.456.789-00",
  "phone": "(11) 99999-0000",
  "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
    }
  ]
}

POST /api/v1/affiliates

Convidar Afiliado

Cria uma nova conta de afiliado com senha aleatória gerada automaticamente. O afiliado precisa redefinir a senha para acessar o painel.

Parâmetros

name obrigatório
string Nome completo do afiliado.
email obrigatório
string E-mail (será usado para login).
document
string CPF ou CNPJ. Deve ser único entre todos os afiliados.
phone
string Telefone de contato.
Corpo da requisição
{
  "affiliate": {
    "name": "João Silva",
    "email": "joao@email.com",
    "document": "987.654.321-00",
    "phone": "(21) 98888-1234"
  }
}
curl
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"}}'
Resposta
201 Created  +  objeto do afiliado (veja Listar Afiliados para o schema)


Rex API v1
© 2026 Rex