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

# Consultar Saque

> Estado de um saque solicitado: em análise, pago ou recusado.

#### Escopo

```bash theme={null}
    read withdrawals_read
```

## O ciclo de um saque

| `status` | O que significa |
| - | - |
| `pending` | em análise. Todo saque pedido pela API nasce aqui |
| `approved` | dinheiro enviado. `paidAt` traz quando |
| `rejected` | recusado. O valor **volta ao saldo**, e `reason` diz por quê |
| `blocked` | retido. Fale com o suporte |

`rejected` não é perda: o valor retorna ao `available` e o pedido pode ser refeito depois de
resolver o que `reason` aponta — chave Pix ausente ou divergente, por exemplo.

> [!NOTE]
>
> A consulta lê **sempre a conta dona do token**. Um `id` de outra conta responde `404`, nunca
> `403`: responder 403 confirmaria que aquele saque existe.

***

## Exemplo

```python Python theme={null}
import requests

resposta = requests.get(
    "https://api.cakto.com.br/public_api/withdrawals/184620/",
    headers={"Authorization": "Bearer eyJhbGciOiJIUzI1NiIsIn..."},
    timeout=30,
)
resposta.raise_for_status()
saque = resposta.json()

if saque["status"] == "rejected":
    print(f"Recusado: {saque['reason']}")
elif saque["status"] == "approved":
    print(f"Pago em {saque['paidAt']}: R$ {saque['amountReceived']}")
else:
    print("Em análise.")
```

```javascript Node.js theme={null}
const resposta = await fetch(
  "https://api.cakto.com.br/public_api/withdrawals/184620/",
  { headers: { Authorization: "Bearer eyJhbGciOiJIUzI1NiIsIn..." } },
);

if (resposta.status === 404) throw new Error("Saque não encontrado.");
if (!resposta.ok) throw new Error(`Cakto API error ${resposta.status}`);

const saque = await resposta.json();
console.log(saque.status, saque.reason ?? "");
```

***

## Boas práticas

* **Consulte com intervalo, não em laço apertado.** A análise é humana; o estado não muda em
  segundos.
* **Trate `reason` como texto para pessoa, não como regra.** Ele é escrito para o produtor ler e
  pode mudar de redação; decida pelo `status`.


## OpenAPI

````yaml GET /public_api/withdrawals/{id}/
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/withdrawals/{id}/:
    get:
      tags:
        - withdrawals
      description: Estado de um saque da conta autenticada.
      operationId: withdrawals_retrieve
      parameters:
        - in: path
          name: id
          schema:
            type: string
          description: Identificador do saque, como devolvido na solicitação.
          required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Withdrawal'
              examples:
                Sucesso:
                  value:
                    id: '184620'
                    amount: '150.00'
                    fee: '3.67'
                    amountReceived: '146.33'
                    currency: BRL
                    status: pending
                    reason: null
                    createdAt: '2026-09-17T14:32:10.512340-03:00'
                    paidAt: null
                Recusado:
                  value:
                    id: '184455'
                    amount: '150.00'
                    fee: '3.67'
                    amountReceived: '146.33'
                    currency: BRL
                    status: rejected
                    reason: Chave PIX não cadastrada
                    createdAt: '2026-09-17T14:32:10.512340-03:00'
                    paidAt: null
          description: 'Saque recusado: o valor volta ao saldo e `reason` diz por quê.'
        '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
                properties:
                  detail:
                    type: string
              examples:
                NaoEncontrado:
                  value:
                    detail: Saque não encontrado.
          description: >-
            Também é a resposta para saque de outra conta: 403 confirmaria que
            aquele id existe.
        '409':
          content:
            application/json:
              schema:
                type: object
                properties:
                  detail:
                    type: string
              examples:
                ContaSemRecebimento:
                  value:
                    detail: >-
                      Conta ainda não habilitada para recebimento. Conclua o
                      cadastro no painel da Cakto para poder solicitar saques.
          description: >-
            O cadastro de recebimento não foi concluído no painel. Repetir a
            chamada não muda isso.
      security:
        - OAuth Token: []
components:
  schemas:
    Withdrawal:
      type: object
      properties:
        id:
          type: string
          description: Identificador do saque.
        amount:
          type: string
          format: decimal
          example: '2.49'
          description: Valor solicitado, como string decimal.
        fee:
          type: string
          format: decimal
          example: '2.49'
          description: Taxa de saque cobrada.
        amountReceived:
          type: string
          format: decimal
          example: '2.49'
          description: '`amount` menos `fee`: o que efetivamente cai na conta de destino.'
        currency:
          type: string
          description: Moeda do saque.
        status:
          allOf:
            - $ref: '#/components/schemas/WithdrawalStatusEnum'
          description: >-
            Estado do pedido. **Saque solicitado pela API nasce `pending`**:
            entra na fila de análise em vez de sair automático. `approved` é o
            dinheiro já enviado; `rejected` devolve o valor ao saldo, com o
            motivo em `reason`; `blocked` exige contato com o suporte.


            * `pending` - pending

            * `approved` - approved

            * `rejected` - rejected

            * `blocked` - blocked
        reason:
          type: string
          nullable: true
          description: >-
            Motivo da recusa, quando houver — o mesmo texto que o produtor vê no
            painel. `null` enquanto o pedido não foi recusado.
        createdAt:
          type: string
          format: date-time
          description: Quando o saque foi solicitado.
        paidAt:
          type: string
          format: date-time
          nullable: true
          description: Quando o dinheiro foi enviado. `null` enquanto o saque não foi pago.
      required:
        - amount
        - amountReceived
        - createdAt
        - currency
        - fee
        - id
        - paidAt
        - reason
        - status
    UnauthenticatedError:
      type: object
      properties:
        detail:
          type: string
    WithdrawalStatusEnum:
      enum:
        - pending
        - approved
        - rejected
        - blocked
      type: string
      description: |-
        * `pending` - pending
        * `approved` - approved
        * `rejected` - rejected
        * `blocked` - blocked
  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.