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

# Listar os backups da conta

> Os backups de todos os projetos, também os de um projeto apagado, e os dos bancos excluídos.

Excluir um projeto não apaga os backups dele: eles ficam aqui com `isDeleted: true` por até 30 dias (somando os projetos apagados, a conta guarda os mais recentes até o número do plano). Cada backup traz `hasConfig` e `hasVariables`, o que ele guardou para voltar, e o projeto traz `type` (`bot` ou `site`; `null` num apagado sem nenhum backup com a configuração). Pegue o `id` de um backup `ready` e use [Restaurar como novo](/api-reference/backups/restore-as-new) para ter o projeto de volta, com outro ID. Os bancos excluídos vêm em `deletedDatabases` (7 dias, os 7 mais recentes da conta); restaurá-los como um banco novo é só pelo painel. Vale com a chave de leitura.

## Erros comuns

| Código | HTTP | O que fazer |
| - | - | - |
| [`invalid_api_key`](/errors#param-invalid-api-key) | 401 | Confira o cabeçalho `Authorization: Bearer cube_…`. |
| [`rate_limit_exceeded`](/errors#param-rate-limit-exceeded) | 429 | Espere o tempo do `Retry-After`. |

Todos os códigos, com o formato do erro, em [Códigos de erro](/errors).


## OpenAPI

````yaml GET /account/backups
openapi: 3.1.0
info:
  title: API da Cube Hosting
  version: 1.0.0
  description: >-
    Hospede bots de Discord, sites e APIs em Node.js e Python: envie o .zip,
    inicie, pare, reinicie, leia logs e métricas, cuide das variáveis de
    ambiente, faça e baixe backups, volte para uma versão anterior, crie bancos
    de dados (PostgreSQL, MySQL, MongoDB e Redis), guarde arquivos privados no
    Blob, use um domínio seu nos sites e veja o uso do plano. Para agentes de
    IA, o servidor MCP da conta (`POST https://app.cubehosting.com.br/api/mcp`,
    JSON-RPC, com a mesma chave) está em
    https://docs.cubehosting.com.br/account-mcp.
  contact:
    name: Cube Hosting
    url: https://discord.gg/pv6D9tUsDV
servers:
  - url: https://app.cubehosting.com.br/api
security:
  - bearerAuth: []
tags:
  - name: Projetos
  - name: Controle
  - name: Logs e métricas
  - name: Variáveis de ambiente
  - name: Backups
  - name: Versões dos envios
  - name: Bancos de dados
  - name: Blob
  - name: Domínios
  - name: Templates
  - name: Avisos
  - name: Conta
paths:
  /account/backups:
    get:
      tags:
        - Backups
      summary: Listar os backups da conta
      description: >-
        Os backups de todos os projetos da conta, um item por projeto, e depois
        os de um projeto **apagado**, que ficam por até 30 dias para baixar pelo
        painel ou [restaurar como novo](/api-reference/backups/restore-as-new);
        somando os projetos apagados, a conta guarda os mais recentes até o
        número do plano (`limit`). Os bancos de dados excluídos vêm em
        `deletedDatabases`, com os backups dos últimos 7 dias (os 7 mais
        recentes da conta). Vale com a chave de leitura.
      operationId: listAccountBackups
      responses:
        '200':
          description: Os backups da conta.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountBackups'
              example:
                limit: 5
                retentionDays: 30
                isDailyAvailable: true
                projects:
                  - id: 01J8Z3W6N0Q4Y7V2K5T9D1H3XA
                    name: Meu bot
                    type: bot
                    isDeleted: false
                    isDailyEnabled: true
                    backups:
                      - id: 5b0c7a4e-2f1d-4c8e-9a36-7d2b1e0f4c11
                        type: manual
                        status: ready
                        sizeBytes: 184320
                        error: null
                        createdAt: '2026-09-27T18:00:00.000Z'
                        finishedAt: '2026-09-27T18:00:04.000Z'
                        expiresAt: '2026-10-27T18:00:00.000Z'
                        hasConfig: true
                        hasVariables: true
                  - id: 01J8Z5C3R1T6V8X0Z2B4D6F8HK
                    name: Bot antigo
                    type: bot
                    isDeleted: true
                    isDailyEnabled: false
                    backups:
                      - id: 7c1d9e2f-3a4b-4c5d-8e6f-0a1b2c3d4e5f
                        type: manual
                        status: ready
                        sizeBytes: 184320
                        error: null
                        createdAt: '2026-09-27T18:00:00.000Z'
                        finishedAt: '2026-09-27T18:00:04.000Z'
                        expiresAt: '2026-10-27T18:00:00.000Z'
                        hasConfig: true
                        hasVariables: true
                deletedDatabases:
                  - id: 01J9A2C4E6G8J0K2M4P6R8T0V2
                    name: loja-db
                    engine: postgres
                    engineName: PostgreSQL
                    memoryMb: 512
                    backups:
                      - id: 595bf272-a3da-4d8d-b7d5-ac70868c032d
                        type: daily
                        status: ready
                        sizeBytes: 2732
                        error: null
                        createdAt: '2026-09-28T12:29:15.000Z'
                        finishedAt: '2026-09-28T12:29:17.000Z'
                        expiresAt: '2026-10-05T12:29:15.000Z'
        '401':
          description: Chave ausente, inválida ou revogada.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                invalid_api_key:
                  summary: invalid_api_key
                  value:
                    status: error
                    code: invalid_api_key
                    message: >-
                      Chave de API inválida ou revogada. Confira o cabeçalho
                      "Authorization: Bearer <chave>" ou crie outra em Chaves de
                      API no painel.
        '429':
          description: Limite de pedidos. Traz o cabeçalho `Retry-After`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                rate_limit_exceeded:
                  summary: rate_limit_exceeded
                  value:
                    status: error
                    code: rate_limit_exceeded
                    message: >-
                      A sua conta passou do limite da API do plano Free: 10
                      pedidos por minuto. Espere 42 s e tente de novo.
                too_many_attempts:
                  summary: too_many_attempts
                  value:
                    status: error
                    code: too_many_attempts
                    message: Muitas tentativas. Tente de novo em 15 minutos.
      x-codeSamples:
        - lang: bash
          label: curl
          source: |-
            curl https://app.cubehosting.com.br/api/account/backups \
              -H "Authorization: Bearer $CUBE_API_KEY"
        - lang: javascript
          label: Node.js
          source: >-
            const API = 'https://app.cubehosting.com.br/api';

            const headers = { Authorization: `Bearer
            ${process.env.CUBE_API_KEY}` };


            const res = await fetch(`${API}/account/backups`, { headers });

            const { projects } = await res.json();

            const apagados = projects.filter((p) => p.isDeleted);

            console.log(apagados.map((p) => [p.name, p.backups[0]?.id]));
        - lang: python
          label: Python
          source: >-
            import os

            import requests


            API = "https://app.cubehosting.com.br/api"

            headers = {"Authorization": f"Bearer {os.environ['CUBE_API_KEY']}"}


            r = requests.get(f"{API}/account/backups", headers=headers,
            timeout=30)

            r.raise_for_status()

            for p in r.json()["projects"]:
                if p["isDeleted"]:
                    print(p["name"], p["backups"][0]["id"] if p["backups"] else None)
components:
  schemas:
    AccountBackups:
      type: object
      description: >-
        Os backups de todos os projetos da conta, também os de um projeto
        apagado, e os dos bancos excluídos.
      required:
        - limit
        - retentionDays
        - isDailyAvailable
        - projects
        - deletedDatabases
      properties:
        limit:
          type: integer
          description: Quantos backups manuais e automáticos o plano guarda por projeto.
        retentionDays:
          type: integer
          description: Por quantos dias no máximo um backup fica guardado (30).
        isDailyAvailable:
          type: boolean
          description: '`true` nos planos pagos, que têm o backup automático diário.'
        projects:
          type: array
          description: >-
            Um item por projeto da conta (com ou sem backup) e, depois, um por
            projeto apagado que ainda tem backup.
          items:
            type: object
            required:
              - id
              - name
              - type
              - isDeleted
              - isDailyEnabled
              - backups
            properties:
              id:
                type: string
                description: ID do projeto (o de antes, se ele foi apagado).
              name:
                type: string
              type:
                type:
                  - string
                  - 'null'
                enum:
                  - bot
                  - site
                  - null
                description: >-
                  O tipo do projeto (o subdomínio só volta no site). Do projeto
                  apagado, o do backup mais novo que guardou a configuração;
                  `null` quando nenhum guardou.
              isDeleted:
                type: boolean
                description: >-
                  `true` no projeto apagado: os backups dele ficam por até 30
                  dias e voltam pelo [Restaurar como
                  novo](/api-reference/backups/restore-as-new).
              isDailyEnabled:
                type: boolean
              backups:
                type: array
                description: Do mais novo para o mais antigo.
                items:
                  allOf:
                    - $ref: '#/components/schemas/Backup'
                    - type: object
                      required:
                        - hasConfig
                        - hasVariables
                      properties:
                        hasConfig:
                          type: boolean
                          description: >-
                            O backup guardou a configuração do projeto. `false`
                            só nos de antes de 28/09/2026: voltam pelo
                            `cube.json` do `.zip`, sem as variáveis.
                        hasVariables:
                          type: boolean
                          description: >-
                            O backup guardou alguma variável de ambiente, que
                            volta no Restaurar como novo.
        deletedDatabases:
          type: array
          description: >-
            Um item por banco de dados excluído que ainda tem backup (7 dias;
            somando os bancos excluídos, a conta guarda os 7 mais recentes).
            Restaurar como um banco novo é só pelo painel.
          items:
            type: object
            required:
              - id
              - name
              - engine
              - engineName
              - memoryMb
              - backups
            properties:
              id:
                type: string
                description: ID do banco excluído.
              name:
                type: string
              engine:
                type: string
                enum:
                  - postgres
                  - mysql
                  - mongodb
                  - redis
              engineName:
                type: string
              memoryMb:
                type: integer
              backups:
                type: array
                items:
                  $ref: '#/components/schemas/DatabaseBackup'
    Error:
      type: object
      required:
        - status
        - code
        - message
      properties:
        status:
          type: string
          const: error
        code:
          type: string
          description: Código fixo em inglês. Veja [Códigos de erro](/errors).
        message:
          type: string
          description: Texto em português para mostrar a uma pessoa.
      additionalProperties: true
    Backup:
      type: object
      description: Uma cópia dos arquivos do projeto (sem as dependências).
      required:
        - id
        - type
        - status
        - sizeBytes
        - error
        - createdAt
        - finishedAt
        - expiresAt
      properties:
        id:
          type: string
          format: uuid
        type:
          type: string
          enum:
            - manual
            - daily
            - before_suspension
            - before_deletion
          description: >-
            `manual` (Fazer backup agora ou a API), `daily` (o automático dos
            planos pagos), `before_suspension` (a cópia feita quando a conta é
            suspensa), `before_deletion` (a cópia antes de apagar um projeto
            parado).
        status:
          type: string
          enum:
            - pending
            - creating
            - ready
            - failed
          description: >-
            `pending` (na fila), `creating` (sendo feito), `ready` (pronto para
            baixar e restaurar), `failed` (não deu certo; o motivo vem em
            `error`).
        sizeBytes:
          type:
            - integer
            - 'null'
          description: Tamanho do `.zip`, em bytes. `null` até ficar pronto.
        error:
          oneOf:
            - $ref: '#/components/schemas/BackupError'
            - type: 'null'
          description: O motivo, quando `status` é `failed`.
        createdAt:
          type: string
          format: date-time
        finishedAt:
          type:
            - string
            - 'null'
          format: date-time
        expiresAt:
          type: string
          format: date-time
          description: >-
            Até quando o backup fica guardado (30 dias). Pode sair antes, quando
            o histórico passa do limite do plano.
    DatabaseBackup:
      type: object
      required:
        - id
        - type
        - status
        - sizeBytes
        - error
        - createdAt
        - finishedAt
        - expiresAt
      properties:
        id:
          type: string
          format: uuid
        type:
          type: string
          enum:
            - manual
            - daily
          description: >-
            `manual` (Fazer backup agora, no painel ou pela API) ou `daily` (o
            automático).
        status:
          type: string
          enum:
            - pending
            - creating
            - ready
            - failed
        sizeBytes:
          type:
            - integer
            - 'null'
          description: Tamanho do backup, em bytes. `null` até ficar pronto.
        error:
          oneOf:
            - type: object
              required:
                - code
                - message
              properties:
                code:
                  type: string
                  enum:
                    - backup_failed
                message:
                  type: string
            - type: 'null'
          description: >-
            Quando `failed`: o backup não saiu (o automático tenta de novo em 1
            hora).
        createdAt:
          type: string
          format: date-time
        finishedAt:
          type:
            - string
            - 'null'
          format: date-time
        expiresAt:
          type: string
          format: date-time
          description: Até quando fica guardado (7 dias).
    BackupError:
      type: object
      required:
        - code
        - message
      properties:
        code:
          type: string
          enum:
            - too_large
            - empty
            - backup_failed
          description: >-
            `too_large`: o projeto passa de 500 MB ou de 20.000 arquivos sem as
            dependências. `empty`: não há arquivo para guardar. `backup_failed`:
            falha do nosso lado; tente de novo.
        message:
          type: string
          description: Explicação em português.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Chave de API da Cube (`cube_…`), criada no painel em **Chaves de API**.
        Mande como `Authorization: Bearer cube_…`.

````