> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sortify.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

# Listar upsells

> Lista todos os upsells de uma ação, com métricas de conversão

Retorna todos os upsells da ação (ativos e inativos), ordenados por `display_order`, com métricas de conversão e receita de cada um. A ação precisa pertencer à conta das credenciais — diferente dos endpoints de leitura de ações, aqui **qualquer status** de ação é aceito (você pode gerenciar upsells de uma ação ainda não publicada).

## Path params

<ParamField path="id" type="string" required>
  ID da ação (UUID).
</ParamField>

## Resposta

<ResponseField name="data.upsells" type="array">
  <Expandable title="Campos do upsell">
    <ResponseField name="id" type="string">Identificador único (UUID).</ResponseField>
    <ResponseField name="type" type="string">`simple`, `redirect`, `custom` ou `iframe`.</ResponseField>
    <ResponseField name="title" type="string">Título do upsell.</ResponseField>
    <ResponseField name="description" type="string | null">Descrição.</ResponseField>
    <ResponseField name="simple" type="object">Presente apenas no tipo `simple`: `{ button_text, button_url }`.</ResponseField>
    <ResponseField name="redirect" type="object">Presente apenas no tipo `redirect`: `{ to, timeout }`.</ResponseField>
    <ResponseField name="custom" type="object">Presente apenas no tipo `custom`: `{ type, content, url }`.</ResponseField>
    <ResponseField name="iframe" type="object">Presente apenas no tipo `iframe`: `{ type, url }`.</ResponseField>
    <ResponseField name="is_active" type="boolean">Se o upsell está ativo no funil.</ResponseField>
    <ResponseField name="display_order" type="number">Posição no funil (menor = primeiro).</ResponseField>
    <ResponseField name="conversions" type="number">Pedidos pagos originados deste upsell.</ResponseField>
    <ResponseField name="revenue" type="number">Receita das conversões, em **centavos**.</ResponseField>
    <ResponseField name="created_at" type="string">Criação (ISO 8601, UTC).</ResponseField>
    <ResponseField name="updated_at" type="string">Última atualização (ISO 8601, UTC).</ResponseField>
  </Expandable>
</ResponseField>

## Erros

| HTTP  | Código             | Quando ocorre                               |
| ----- | ------------------ | ------------------------------------------- |
| `404` | `RAFFLE_NOT_FOUND` | A ação não existe ou pertence a outra conta |

<RequestExample>
  ```bash curl theme={null}
  curl -u "pb_SEU_TOKEN_PUBLICO:sk_SEU_TOKEN_SECRETO" \
    "https://api.sortify.com.br/v1/raffles/a3f1c9e2-5b7d-4e8a-9c01-2d3e4f5a6b7c/upsells"
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "success": true,
    "message": "Upsells listados com sucesso",
    "data": {
      "upsells": [
        {
          "id": "7c1d2e3f-4a5b-6c7d-8e9f-0a1b2c3d4e5f",
          "type": "redirect",
          "title": "Oferta relâmpago",
          "description": null,
          "display_order": 0,
          "redirect": { "to": "https://upsell.cliente.digital", "timeout": 2000 },
          "is_active": true,
          "conversions": 12,
          "revenue": 238800,
          "created_at": "2026-07-06T12:00:00.000Z",
          "updated_at": "2026-07-06T12:00:00.000Z"
        }
      ]
    }
  }
  ```
</ResponseExample>
