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

# Consultar resposta do quiz de reembolso

> Devolve todas as respostas de uma tentativa do quiz de retenção, já legíveis, junto com a compra e a solicitação de reembolso que ela gerou. É a base para decidir aprovar ou recusar. Responde 404 quando a tentativa não existe ou pertence a outra empresa.



## OpenAPI

````yaml /openapi.yaml get /v1/refund-quiz-attempts/{attemptId}
openapi: 3.0.3
info:
  title: Ephra API
  description: >-
    API pública da Ephra: cobranças (PIX, cartão e boleto), transações, webhooks
    e a API do vendedor sobre catálogo, checkout, vendas, reembolsos,
    financeiro, crescimento e plataforma.


    **Limite de requisições.** 1000 requisições por minuto por IP de origem.
    Toda resposta traz `x-ratelimit-limit`, `x-ratelimit-remaining` e
    `x-ratelimit-reset` (segundos até a janela zerar); ao estourar o limite a
    resposta é `429` com `retry-after`.


    **Erros.** Toda falha responde o mesmo envelope: `{ "success": false,
    "message": "..." }`.
  version: 1.0.0
servers:
  - url: https://api.ephra.io
    description: Servidor de produção
security: []
tags:
  - name: Catálogo
    description: Produtos, ofertas, categorias e cupons — o que a empresa vende.
  - name: Checkout
    description: Checkouts, order bumps, upsells e links de pagamento.
  - name: Vendas
    description: Vendas, clientes, assinaturas e entregas já realizadas.
  - name: Reembolsos
    description: Pedidos de reembolso, contestações e o quiz de retenção.
  - name: Financeiro
    description: Saldo, saques, antecipações, taxas e extratos da empresa.
  - name: Crescimento
    description: Afiliados, coprodução, indicações, pixels e integrações de marketing.
  - name: Plataforma
    description: Conta, membros, chaves de API, webhooks e configurações gerais.
paths:
  /v1/refund-quiz-attempts/{attemptId}:
    get:
      tags:
        - Reembolsos
      summary: Consultar resposta do quiz de reembolso
      description: >-
        Devolve todas as respostas de uma tentativa do quiz de retenção, já
        legíveis, junto com a compra e a solicitação de reembolso que ela gerou.
        É a base para decidir aprovar ou recusar. Responde 404 quando a
        tentativa não existe ou pertence a outra empresa.
      operationId: getRefundQuizAttempt
      parameters:
        - schema:
            type: string
            minLength: 1
          in: path
          name: attemptId
          required: true
          description: Identificador da tentativa de quiz.
      responses:
        '200':
          description: Tentativa de quiz encontrada.
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    description: Sempre `true` em uma resposta bem-sucedida.
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                        description: Identificador da tentativa de quiz.
                      transactionId:
                        type: string
                        description: Venda que o comprador quer estornar.
                      customerName:
                        type: string
                        nullable: true
                        description: Nome do comprador que respondeu o quiz.
                      customerEmail:
                        type: string
                        nullable: true
                        description: E-mail do comprador.
                      productName:
                        type: string
                        nullable: true
                        description: Produto cujo quiz foi respondido, como rótulo curto.
                      products:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: integer
                              description: Identificador do item da venda.
                            name:
                              type: string
                              description: Nome do produto no momento da compra.
                            amount:
                              type: integer
                              description: Valor do item em centavos (R$ 49,90 = 4990).
                          required:
                            - id
                            - name
                            - amount
                          additionalProperties: false
                        description: Todos os itens da compra, incluindo order bumps.
                      amount:
                        type: integer
                        nullable: true
                        description: >-
                          Valor da COMPRA inteira em centavos — é o que seria
                          estornado.
                      requestedAt:
                        type: string
                        format: date-time
                        description: Momento em que o comprador começou o quiz.
                      completedAt:
                        type: string
                        format: date-time
                        nullable: true
                        description: Momento em que terminou; `null` se abandonou no meio.
                      customerPhone:
                        type: string
                        nullable: true
                        description: Telefone do comprador.
                      paymentMethod:
                        type: string
                        enum:
                          - pix
                          - credit_card
                          - boleto
                          - multiple_cards
                        description: Forma de pagamento da compra.
                        nullable: true
                      purchasedAt:
                        type: string
                        format: date-time
                        nullable: true
                        description: Momento em que a compra foi aprovada.
                      answers:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                              description: Identificador da resposta.
                            questionId:
                              type: string
                              nullable: true
                              description: >-
                                Pergunta configurada pelo produtor; `null` em
                                passo de sistema.
                            systemKey:
                              type: string
                              nullable: true
                              description: >-
                                Chave do passo automático da plataforma; `null`
                                quando é pergunta do produtor.
                            question:
                              type: string
                              description: Título da pergunta como o comprador a leu.
                            answer:
                              type: string
                              description: >-
                                Resposta já legível: o rótulo da opção
                                escolhida, não o valor interno.
                            createdAt:
                              type: string
                              format: date-time
                              description: Momento em que a resposta foi gravada.
                          required:
                            - id
                            - questionId
                            - systemKey
                            - question
                            - answer
                            - createdAt
                          additionalProperties: false
                        description: >-
                          As respostas do comprador, na ordem em que foram
                          dadas.
                      refundRequest:
                        type: object
                        properties:
                          id:
                            type: integer
                            description: >-
                              Identificador da solicitação de reembolso gerada
                              pelo quiz.
                          status:
                            type: string
                            enum:
                              - pending
                              - approved
                              - rejected
                              - processed
                              - canceled
                            description: Situação da solicitação.
                          rejectionReason:
                            type: string
                            nullable: true
                            description: Justificativa da recusa, quando houve.
                          approvalReason:
                            type: string
                            nullable: true
                            description: Motivo da aprovação, quando houve.
                          reviewedAt:
                            type: string
                            format: date-time
                            nullable: true
                            description: Momento em que o vendedor decidiu.
                        required:
                          - id
                          - status
                          - rejectionReason
                          - approvalReason
                          - reviewedAt
                        additionalProperties: false
                        nullable: true
                        description: >-
                          Solicitação de reembolso nascida desta tentativa;
                          `null` enquanto o quiz não terminou.
                    required:
                      - id
                      - transactionId
                      - customerName
                      - customerEmail
                      - productName
                      - products
                      - amount
                      - requestedAt
                      - completedAt
                      - customerPhone
                      - paymentMethod
                      - purchasedAt
                      - answers
                      - refundRequest
                    additionalProperties: false
                required:
                  - success
                  - data
                additionalProperties: false
                description: Tentativa de quiz encontrada.
              example:
                success: true
                data:
                  id: clx9c4m5r0003qz0a2k3l4m5n
                  transactionId: clx9b3k2p0007qz0a7h8i9j0k
                  customerName: Mariana Ribeiro
                  customerEmail: mariana.ribeiro@exemplo.com.br
                  customerPhone: '+5521988887777'
                  productName: Curso de Tráfego Pago
                  products:
                    - id: 90321
                      name: Curso de Tráfego Pago
                      amount: 14900
                    - id: 90322
                      name: Pacote de Criativos Prontos
                      amount: 4800
                  amount: 19700
                  paymentMethod: pix
                  purchasedAt: '2026-09-05T14:02:00.000Z'
                  requestedAt: '2026-09-12T10:28:00.000Z'
                  completedAt: '2026-09-12T10:31:00.000Z'
                  answers:
                    - id: clx9c4m5r0004qz0a5n6o7p8q
                      questionId: clx7z1a2b0001qz0a3c4d5e6f
                      systemKey: null
                      question: Qual o principal motivo do pedido?
                      answer: Não era o que eu esperava
                      createdAt: '2026-09-12T10:30:00.000Z'
                    - id: clx9c4m5r0005qz0a9r0s1t2u
                      questionId: clx7z1a2b0002qz0a7f8g9h0i
                      systemKey: null
                      question: O que faltou no conteúdo?
                      answer: Achei o conteúdo raso
                      createdAt: '2026-09-12T10:31:00.000Z'
                  refundRequest:
                    id: 48127
                    status: pending
                    rejectionReason: null
                    approvalReason: null
                    reviewedAt: null
        '401':
          description: Token ausente, inválido, expirado ou de empresa bloqueada.
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    description: Sempre `false` em uma resposta de erro.
                  message:
                    type: string
                    description: Mensagem legível explicando a falha.
                required:
                  - success
                  - message
                additionalProperties: false
                description: Token ausente, inválido, expirado ou de empresa bloqueada.
              example:
                success: false
                message: Token inválido ou expirado
        '404':
          description: O recurso não existe, foi excluído ou pertence a outra empresa.
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    description: Sempre `false` em uma resposta de erro.
                  message:
                    type: string
                    description: Mensagem legível explicando a falha.
                required:
                  - success
                  - message
                additionalProperties: false
                description: >-
                  O recurso não existe, foi excluído ou pertence a outra
                  empresa.
              example:
                success: false
                message: Recurso não encontrado
        '422':
          description: A requisição não passou na validação de schema.
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    description: Sempre `false` em uma resposta de erro.
                  message:
                    type: string
                    description: Mensagem legível explicando a falha.
                required:
                  - success
                  - message
                additionalProperties: false
                description: A requisição não passou na validação de schema.
              example:
                success: false
                message: 'name: Nome é obrigatório'
        '429':
          description: >-
            Requisições demais: o limite é de 1000 requisições por minuto por IP
            de origem. Espere o número de segundos do header `retry-after` e
            repita com recuo exponencial.
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    description: Sempre `false` em uma resposta de erro.
                  message:
                    type: string
                    description: Mensagem legível explicando a falha.
                required:
                  - success
                  - message
                additionalProperties: false
                description: >-
                  Requisições demais: o limite é de 1000 requisições por minuto
                  por IP de origem. Espere o número de segundos do header
                  `retry-after` e repita com recuo exponencial.
              example:
                success: false
                message: Muitas requisições. Tente novamente em breve.
          headers:
            retry-after:
              $ref: '#/components/headers/retry-after'
            x-ratelimit-limit:
              $ref: '#/components/headers/x-ratelimit-limit'
            x-ratelimit-remaining:
              $ref: '#/components/headers/x-ratelimit-remaining'
            x-ratelimit-reset:
              $ref: '#/components/headers/x-ratelimit-reset'
        '500':
          description: >-
            Falha interna ao processar a requisição. Repita; se persistir, abra
            chamado com o horário e a rota.
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                    description: Sempre `false` em uma resposta de erro.
                  message:
                    type: string
                    description: Mensagem legível explicando a falha.
                required:
                  - success
                  - message
                additionalProperties: false
                description: >-
                  Falha interna ao processar a requisição. Repita; se persistir,
                  abra chamado com o horário e a rota.
              example:
                success: false
                message: Erro interno do servidor
      security:
        - bearerAuth: []
components:
  headers:
    retry-after:
      description: Segundos a esperar antes de repetir a requisição.
      schema:
        type: integer
    x-ratelimit-limit:
      description: Teto de requisições na janela (1000). Presente em toda resposta.
      schema:
        type: integer
    x-ratelimit-remaining:
      description: >-
        Quantas requisições ainda cabem na janela atual. Presente em toda
        resposta.
      schema:
        type: integer
    x-ratelimit-reset:
      description: Segundos até o contador da janela zerar. Presente em toda resposta.
      schema:
        type: integer
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

````