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

# Uso do plano

> O plano da conta, a memória livre e o tamanho máximo do .zip, para conferir antes de enviar.

Mostra o plano da conta e os limites dele, a memória reservada, livre e em uso, e quantos projetos existem e estão no ar. Vale com uma chave de **leitura**.

O uso de cada projeto (processador, rede e disco) fica só no painel, na página **Uso**.

<Tip>
  Antes de enviar um `.zip`, confira `plan.zipMaxMb`: 5 MB no Free e 10 MB nos planos pagos. A [CLI](/cli) faz isso sozinha no `cube deploy`.
</Tip>

## Erros comuns

| Código                                                     | HTTP | O que fazer                                                             |
| ---------------------------------------------------------- | ---- | ----------------------------------------------------------------------- |
| [`invalid_api_key`](/errors#param-invalid-api-key)         | 401  | Confira o cabeçalho `Authorization: Bearer cube_…` ou crie outra chave. |
| [`rate_limit_exceeded`](/errors#param-rate-limit-exceeded) | 429  | Espere o `Retry-After`: a conta passou do limite do plano.              |
| [`too_many_attempts`](/errors#param-too-many-attempts)     | 429  | Corrija a chave: chaves erradas desse IP ficam barradas por 15 minutos. |

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


## OpenAPI

````yaml GET /account/usage
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 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: Avisos
  - name: Conta
paths:
  /account/usage:
    get:
      tags:
        - Conta
      summary: Uso do plano
      description: >-
        O plano da conta e os limites dele, a memória reservada, livre e em uso,
        e quantos projetos existem e estão no ar. Use `plan.zipMaxMb` para
        conferir o tamanho do .zip antes de enviar (a [CLI](/cli) faz isso no
        `cube deploy`). O uso por projeto (processador, rede e disco) fica só no
        painel, na página Uso.
      operationId: getAccountUsage
      responses:
        '200':
          description: O uso do plano.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountUsage'
              example:
                plan:
                  id: block
                  name: Block
                  memoryMb: 1024
                  vcpu: 1
                  maxBots: 10
                  maxSites: 2
                  hasAutoRestart: true
                  zipMaxMb: 10
                memory:
                  reservedMb: 356
                  freeMb: 668
                  inUseMb: 141
                projects:
                  total: 3
                  running: 2
        '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/usage" \
              -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/usage`, { headers });

            const { plan, memory } = await res.json();

            console.log(`${plan.name}: ${memory.freeMb} MB livres, .zip até
            ${plan.zipMaxMb} MB`);
        - 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/usage", headers=headers,
            timeout=30)

            r.raise_for_status()

            usage = r.json()

            print(f"{usage['plan']['name']}: .zip até
            {usage['plan']['zipMaxMb']} MB")
components:
  schemas:
    AccountUsage:
      type: object
      required:
        - plan
        - memory
        - projects
      properties:
        plan:
          type: object
          required:
            - id
            - name
            - memoryMb
            - vcpu
            - maxBots
            - maxSites
            - hasAutoRestart
            - zipMaxMb
          properties:
            id:
              type: string
              description: '`free`, `block`, `stack`, `tower`, `fortress` ou `monolith`.'
            name:
              type: string
            memoryMb:
              type: integer
              description: Memória do plano, dividida entre os projetos.
            vcpu:
              type: number
            maxBots:
              type: integer
              description: Quantos projetos cabem no plano.
            maxSites:
              type: integer
              description: Quantos sites e APIs cabem no plano (0 no Free).
            hasAutoRestart:
              type: boolean
              description: Se o projeto que cai volta sozinho (planos pagos).
            zipMaxMb:
              type: integer
              description: 'Tamanho máximo do .zip: 5 no Free, 10 nos pagos.'
        memory:
          type: object
          required:
            - reservedMb
            - freeMb
            - inUseMb
          properties:
            reservedMb:
              type: integer
              description: Soma da memória de todos os projetos, ligados ou não.
            freeMb:
              type: integer
              description: O que sobra do plano para projetos novos ou maiores.
            inUseMb:
              type: integer
              description: Memória em uso agora pelos projetos no ar.
        projects:
          type: object
          required:
            - total
            - running
          properties:
            total:
              type: integer
            running:
              type: integer
    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
  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_…`.

````