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

# Complementar Defesa

> Responde ao pedido de complemento do Compliance, dentro do mesmo prazo.

#### Escopo

```bash theme={null}
    write orders
```

## Quando usar

Quando o Compliance da Cakto pede um ajuste na defesa, a disputa fica com `status: "needs_info"`, e a
mensagem dele está em `defense.infoRequest`. Esta chamada responde: soma PDFs à defesa e, se for o
caso, troca a carta. A disputa volta à conferência.

| Campo | Regra |
| - | - |
| `files` | PDFs somados aos já enviados, nas mesmas regras do envio. Opcional quando a carta é reescrita |
| `letter` | A carta reescrita, que substitui a anterior. De 300 a 5.000 caracteres |
| `message` | Mensagem ao Compliance, até 2.000 caracteres |

Com arquivo, o corpo vai em `multipart/form-data`. Só com a carta reescrita, pode ir em JSON.

> [!WARNING]
>
> O pedido de complemento **não estende o prazo** da contestação. Depois do `deadline`, o
> complemento não é mais aceito (`422`).

## Erros

| Código | Quando |
| - | - |
| `400` | Sem arquivo e sem carta nova, ou campo fora da regra |
| `404` | Pedido sem chargeback ou MED, inexistente ou de outra conta |
| `409` | O Compliance não pediu complemento, ou a disputa já foi encerrada |
| `422` | O prazo terminou |
| `502` | O serviço de pagamentos não respondeu |

Cada chamada soma arquivos. Depois de um timeout, [consulte a disputa](/api-reference/disputes/retrieve.md)
antes de repetir: se `status` já não é `needs_info`, o complemento chegou.


## OpenAPI

````yaml POST /public_api/disputes/{id}/complement/
openapi: 3.0.3
info:
  title: Cakto API
  version: 1.0.0
  description: Documentação da API pública do Cakto.
servers:
  - url: https://api.cakto.com.br
    description: Cakto API
security: []
paths:
  /public_api/disputes/{id}/complement/:
    post:
      tags:
        - disputes
      description: >-
        Responde ao pedido de complemento do Compliance (`status` `needs_info`):
        soma PDFs (`files`) e, se for o caso, troca a carta (`letter`), com uma
        mensagem opcional (`message`, até 2.000 caracteres). Só com a carta
        reescrita, o envio pode ir em JSON. O pedido de complemento não estende
        o prazo da contestação. Cada chamada soma arquivos: depois de um
        timeout, consulte a disputa antes de repetir.
      operationId: disputes_complement_create
      parameters:
        - in: path
          name: id
          schema:
            type: string
          description: Id do pedido com chargeback ou MED.
          required: true
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/DisputeComplementRequestSchema'
          application/json:
            schema:
              $ref: '#/components/schemas/DisputeComplementRequestSchema'
      responses:
        '200':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
              examples:
                ComplementoEnviado:
                  value:
                    paymentId: 0c9d4e7a-1b2f-4a6e-8d35-7f1e2a9c4b60
                    kind: chargeback
                    status: submitted
                    statusLabel: Em análise pela Cakto
                    canSubmit: false
                    canComplement: false
                    openedAt: '2026-10-19T10:12:40.118302-03:00'
                    deadline: '2026-10-25T23:59:59-03:00'
                    reason: null
                    amount: '197.00'
                    currency: BRL
                    submittedAt: '2026-10-20T09:41:22.873610-03:00'
                    sentAt: null
                    decidedAt: null
                    rules:
                      maxFiles: 10
                      maxFileSizeBytes: 1900000
                      acceptedTypes:
                        - application/pdf
                      letterMaxLength: 5000
                      letterMinLength: 300
                      messageMaxLength: 2000
                    guideUrl: >-
                      https://ajuda.cakto.com.br/pt-br/articles/73-chargeback-pre-chargeback-e-med
                    defense:
                      status: submitted
                      submittedAt: '2026-10-20T09:41:22.873610-03:00'
                      letter: >-
                        Prezado banco, a compradora Maria Souza adquiriu o Curso
                        de Exemplo em 02/10/2026 e acessou as aulas em 03/10 e
                        05/10, como mostra o registro de acesso anexo...
                      documents:
                        - id: 912
                          name: registro-de-acesso.pdf
                          sizeBytes: 184213
                          origin: seller
                          uploadedAt: '2026-10-20T09:41:22.873610-03:00'
                      infoRequest: null
                      declineReason: null
                      sentAt: null
                      decidedAt: null
                      timeline:
                        - at: '2026-10-19T10:12:40.118302-03:00'
                          label: Chargeback registrado na sua conta
                          detail: null
                          state: done
                        - at: '2026-10-20T09:41:22.873610-03:00'
                          label: Defesa enviada por você
                          detail: 1 arquivo
                          state: done
                        - at: null
                          label: Conferência da Cakto
                          detail: null
                          state: current
                    refId: Q7W2k9P
                    orderId: 5f2a1c3e-8b7d-4e21-9f10-3c6d7a2b9e41
                    order:
                      productName: Curso de Exemplo
                      amount: '197.00'
                      formattedAmount: R$ 197,00
                      paymentMethod: credit_card
                      paymentMethodLabel: Cartão de Crédito
                      installments: 1
                      createdAt: '2026-10-02T14:03:11.204871-03:00'
                      paidAt: '2026-10-02T14:03:15.664021-03:00'
                      customerName: Maria Souza
                      customerEmail: maria.souza@example.com
                  summary: Complemento enviado
          description: 'Complemento gravado: a disputa volta à conferência do Compliance.'
        '400':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
              examples:
                CamposInvalidos:
                  value:
                    detail: Revise os campos destacados.
                    errors:
                      files:
                        - Anexe ao menos um PDF ou reescreva a carta.
          description: Sem arquivo e sem carta nova, ou campo fora da regra.
        '401':
          description: Request não autenticado devido à ausência ou invalidez do token.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UnauthenticatedError'
              examples:
                Token ausente ou inválido:
                  $ref: '#/components/examples/UnauthenticatedErrorExample'
        '404':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
              examples:
                NaoEncontrado:
                  value:
                    detail: Não encontrado.
          description: >-
            Pedido sem chargeback ou MED, ou de outra conta: 403 confirmaria que
            o id existe.
        '409':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
              examples:
                SemPedidoDeComplemento:
                  value:
                    detail: O Compliance não pediu complemento para esta defesa.
          description: >-
            A defesa não está com `status` `needs_info`, ou a disputa já foi
            encerrada.
        '422':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
              examples:
                PrazoEncerrado:
                  value:
                    detail: O prazo para complementar terminou em 25/10/2026 às 23:59.
          description: O pedido de complemento não estende o prazo da contestação.
        '502':
          content:
            application/json:
              schema:
                type: object
                additionalProperties: {}
              examples:
                ServicoIndisponivel:
                  value:
                    detail: >-
                      Não foi possível falar com o serviço de pagamentos. Tente
                      de novo em instantes.
          description: >-
            O serviço de pagamentos não respondeu. Nada foi gravado: repita a
            chamada.
      security:
        - OAuth Token: []
components:
  schemas:
    DisputeComplementRequestSchema:
      type: object
      properties:
        files:
          type: array
          items:
            type: string
            format: binary
          description: PDFs somados à defesa. Opcional quando a carta é reescrita.
        letter:
          type: string
          description: >-
            Carta reescrita, que substitui a anterior. De 300 a 5.000
            caracteres.
        message:
          type: string
          description: Mensagem ao Compliance, até 2.000 caracteres.
    UnauthenticatedError:
      type: object
      properties:
        detail:
          type: string
  examples:
    UnauthenticatedErrorExample:
      summary: Token ausente ou inválido
      description: Token ausente ou inválido
      value:
        detail: As credenciais de autenticação não foram fornecidas.
  securitySchemes:
    OAuth Token:
      type: http
      scheme: bearer
      in: header
      name: Authorization
      description: >-
        Token de autenticação do tipo `Bearer {access_token}`, onde
        `{access_token}` é o token obtido no fluxo de
        [autenticação](/authentication).

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.