Skip to main content
POST
/
v1
/
raffles
/
{id}
/
presells
curl -u "pb_xxx:sk_xxx" -X POST \
  -H "Content-Type: application/json" \
  -d '{
    "type": "custom",
    "title": "Oferta antes de fechar",
    "custom": {
      "type": "card",
      "content": "<h1>Leve mais por menos!</h1><a href=\"{{PRESELL_URL}}\">Aproveitar</a>",
      "url": { "placeholder": "{{PRESELL_URL}}", "value": "https://presell.cliente.digital/" }
    }
  }' \
  "https://api.sortify.com.br/v1/raffles/{id}/presells"
{
  "success": true,
  "message": "Presell criado com sucesso",
  "data": {
    "id": "9e8d7c6b-5a4f-3e2d-1c0b-a9f8e7d6c5b4",
    "type": "custom",
    "title": "Oferta antes de fechar",
    "description": null,
    "display_order": 0,
    "custom": {
      "type": "card",
      "content": "<h1>Leve mais por menos!</h1><a href=\"{{PRESELL_URL}}\" rel=\"noopener noreferrer nofollow\" target=\"_blank\">Aproveitar</a>",
      "url": { "placeholder": "{{PRESELL_URL}}", "value": "https://presell.cliente.digital/" }
    },
    "is_active": true,
    "created_at": "2026-07-06T12:00:00.000Z",
    "updated_at": "2026-07-06T12:00:00.000Z"
  }
}
Cria um presell na ação — uma promoção exibida na página de seleção do pedido, antes do pagamento. Máximo de 10 presells por ação.
Presell não suporta o tipo redirect. Redirecionar o comprador enquanto ele monta o pedido interromperia a compra. Tipos válidos: simple, custom e iframe — com o mesmo contrato dos upsells.

Path params

id
string
required
ID da ação (UUID).

Body — campos comuns

type
string
default:"simple"
simple, custom ou iframe. Omitido = simple.
title
string
required
Título (1–255 caracteres).
description
string | null
Descrição (máx. 1000).
display_order
number
default:"0"
Ordem de exibição (menor = primeiro).
is_active
boolean
default:"true"
Se o presell é exibido.

Body — por tipo

simple

simple
object
required

custom

custom
object
required

iframe

iframe
object
required

Erros

HTTPCódigoQuando ocorre
404RAFFLE_NOT_FOUNDAção inexistente ou de outra conta
400PRESELL_LIMIT_REACHEDJá existem 10 presells na ação
400PRESELL_SIMPLE_FIELDS_REQUIREDtipo simple sem o objeto simple completo
400PRESELL_CUSTOM_CONFIG_REQUIREDcustom sem o objeto custom
400PRESELL_IFRAME_CONFIG_REQUIREDiframe sem o objeto iframe
400PRESELL_CONFIG_TYPE_MISMATCHObjeto de configuração não corresponde ao type
400PRESELL_CUSTOM_CONTENT_EMPTYHTML vazio após sanitização
400PRESELL_PLACEHOLDER_NOT_FOUNDPlaceholder não aparece no content
422VALIDATIONFormato inválido — inclusive type: "redirect", que não existe em presells
curl -u "pb_xxx:sk_xxx" -X POST \
  -H "Content-Type: application/json" \
  -d '{
    "type": "custom",
    "title": "Oferta antes de fechar",
    "custom": {
      "type": "card",
      "content": "<h1>Leve mais por menos!</h1><a href=\"{{PRESELL_URL}}\">Aproveitar</a>",
      "url": { "placeholder": "{{PRESELL_URL}}", "value": "https://presell.cliente.digital/" }
    }
  }' \
  "https://api.sortify.com.br/v1/raffles/{id}/presells"
{
  "success": true,
  "message": "Presell criado com sucesso",
  "data": {
    "id": "9e8d7c6b-5a4f-3e2d-1c0b-a9f8e7d6c5b4",
    "type": "custom",
    "title": "Oferta antes de fechar",
    "description": null,
    "display_order": 0,
    "custom": {
      "type": "card",
      "content": "<h1>Leve mais por menos!</h1><a href=\"{{PRESELL_URL}}\" rel=\"noopener noreferrer nofollow\" target=\"_blank\">Aproveitar</a>",
      "url": { "placeholder": "{{PRESELL_URL}}", "value": "https://presell.cliente.digital/" }
    },
    "is_active": true,
    "created_at": "2026-07-06T12:00:00.000Z",
    "updated_at": "2026-07-06T12:00:00.000Z"
  }
}