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

> Os templates da Cube: projetos prontos, com o que cada um pede para iniciar.

Devolve os templates da Cube, com o tipo, a linguagem, a memória sugerida, as variáveis que cada um pede (e onde pegar o valor, em `helpUrl`) e o banco que ele cria junto. É público: não precisa de chave. Guia completo em [Templates](/hosting/templates).

Para criar um projeto a partir de um deles, mande o `id` no campo `template` de [Criar um projeto](/api-reference/projects/create), com as variáveis em `variables`.

<Tip>
  Um template com `database` precisa de um banco: [crie o banco](/api-reference/databases/create) antes e mande o id dele em `databaseId`. A conexão entra na variável de `database.variable` antes da primeira subida.
</Tip>

## Erros comuns

| Código                                           | HTTP | O que fazer                                            |
| ------------------------------------------------ | ---- | ------------------------------------------------------ |
| [`internal_error`](/errors#param-internal-error) | 500  | Algo falhou do nosso lado. Tente de novo em instantes. |

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


## OpenAPI

````yaml GET /templates
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:
  /templates:
    get:
      tags:
        - Templates
      summary: Listar templates
      description: >-
        Os [templates](/hosting/templates) da Cube, com o que cada um pede.
        Público: não precisa de chave.
      operationId: listTemplates
      responses:
        '200':
          description: A lista de templates.
          content:
            application/json:
              schema:
                type: object
                required:
                  - templates
                properties:
                  templates:
                    type: array
                    items:
                      $ref: '#/components/schemas/Template'
              example:
                templates:
                  - id: discord-js-bot
                    name: Bot discord.js
                    description: >-
                      Um bot de Discord em Node.js com o comando /ping, pronto
                      para você criar os seus.
                    type: bot
                    language: node
                    version: '24'
                    memoryMb: 128
                    port: null
                    variables:
                      - name: DISCORD_TOKEN
                        description: >-
                          O token do bot, do Portal de Desenvolvedores do
                          Discord.
                        isRequired: true
                        helpUrl: >-
                          https://docs.cubehosting.com.br/hosting/templates#como-pegar-o-token-do-bot
                    database: null
                  - id: discord-postgres-bot
                    name: Bot com PostgreSQL
                    description: >-
                      Um bot de Discord que guarda anotações num PostgreSQL da
                      sua conta, criado junto e já ligado ao projeto.
                    type: bot
                    language: node
                    version: '24'
                    memoryMb: 192
                    port: null
                    variables:
                      - name: DISCORD_TOKEN
                        description: >-
                          O token do bot, do Portal de Desenvolvedores do
                          Discord.
                        isRequired: true
                        helpUrl: >-
                          https://docs.cubehosting.com.br/hosting/templates#como-pegar-o-token-do-bot
                    database:
                      engine: postgres
                      variable: DATABASE_URL
                      memoryMb: 512
                  - id: express-api
                    name: API Express
                    description: >-
                      Uma API em Node.js com Express, no ar num endereço
                      .cubehost.dev.
                    type: site
                    language: node
                    version: '24'
                    memoryMb: 512
                    port: 8080
                    variables: []
                    database: null
        '500':
          description: Erro do nosso lado. Tente de novo em instantes.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                internal_error:
                  summary: internal_error
                  value:
                    status: error
                    code: internal_error
                    message: Erro inesperado. Tente de novo em instantes.
      security: []
      x-codeSamples:
        - lang: bash
          label: curl
          source: curl https://app.cubehosting.com.br/api/templates
        - 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}/templates`);

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

            for (const t of templates) console.log(t.id, t.memoryMb,
            t.variables.map((v) => v.name));
        - 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}/templates", timeout=30)
            r.raise_for_status()
            for t in r.json()["templates"]:
                print(t["id"], t["memoryMb"], [v["name"] for v in t["variables"]])
components:
  schemas:
    Template:
      type: object
      description: 'Um template da Cube: um projeto pronto, com o código completo.'
      required:
        - id
        - name
        - description
        - type
        - language
        - version
        - memoryMb
        - port
        - variables
        - database
      properties:
        id:
          type: string
          enum:
            - discord-js-bot
            - discord-py-bot
            - discord-music-bot
            - discord-postgres-bot
            - express-api
            - fastapi-api
            - static-site
          description: >-
            O que vai no campo `template` de [Criar um
            projeto](/api-reference/projects/create).
        name:
          type: string
        description:
          type: string
        type:
          type: string
          enum:
            - bot
            - site
        language:
          type: string
          enum:
            - node
            - python
        version:
          type: string
        memoryMb:
          type: integer
          description: A memória sugerida, em MB. Mande outra em `memoryMb` se quiser.
        port:
          type:
            - integer
            - 'null'
          description: 'Só site: a porta do app. `null` em bot.'
        variables:
          type: array
          items:
            type: object
            required:
              - name
              - description
              - isRequired
              - helpUrl
            properties:
              name:
                type: string
              description:
                type: string
              isRequired:
                type: boolean
                description: Sem ela, o projeto instala e não inicia.
              helpUrl:
                type:
                  - string
                  - 'null'
                format: uri
                description: Onde ver como pegar o valor.
        database:
          oneOf:
            - type: object
              required:
                - engine
                - variable
                - memoryMb
              properties:
                engine:
                  type: string
                  enum:
                    - postgres
                    - mysql
                    - redis
                variable:
                  type: string
                  description: A variável que recebe a conexão (`databaseId` no envio).
                memoryMb:
                  type: integer
                  description: A memória sugerida do banco.
            - type: 'null'
          description: >-
            O banco que o painel cria junto. Pela API, [crie o
            banco](/api-reference/databases/create) e mande o `databaseId`.
    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_…`.

````