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

# Obter template

> Retorna um template pelo ID ou slug com suas perguntas, permissões, outputs, documentação e changelog, o que um assistente de deploy precisa.

Retorna um template, com tudo o que é preciso para pedir as respostas ao usuário e mostrar o que acontece em seguida. Templates públicos **não precisam de autenticação**. Um template privado fica visível apenas para o dono ou, quando pertence a um workspace, para os membros que podem ler as aplicações do workspace; para qualquer outra pessoa, a resposta é o mesmo `404` de um template que não existe. Com uma sessão ou uma chave de API (escopo `templates:read`), a resposta também traz o bloco `account`. Um template fechado nunca traz código. As leituras são limitadas a 60 requisições por minuto por cliente.

**template\_id** `string` *required*

O ID do template ou o slug dele. Templates ocultos e descontinuados são servidos aqui, mesmo que a galeria não os liste (veja `visibility`).

**workspace\_id** `string`

O workspace de um template privado. Necessário para resolver um template de workspace pelo **slug**; pelo ID é opcional.

### Resposta

**response** `object`

O template. Ele tem **todos os campos dos itens retornados por [Listar templates](https://docs.vertracloud.app/pt-br/api-reference/endpoint/templates/list.md)** (`id`, `slug`, `origin`, `visibility`, `name`, `description`, `category`, `tags`, `icon_url`, `author_display`, `links`, `landing`, `featured`, `current_version`, `services`, `creates_stack`, `ram_min_total`, `byok`, `required_plan`, `code_view`, `uses_count`, `owner`, `github`, `created_at`, `updated_at` e, quando autenticado, `account`), mais os abaixo.

**Mostrar objeto**

**inputs** `object[]`

As perguntas que o usuário responde ao usar o template. Envie as respostas em `inputs` de [Fazer deploy de template](https://docs.vertracloud.app/pt-br/api-reference/endpoint/templates/deploy.md), pelo `id` de cada pergunta.

**Mostrar objeto**

**id** `string`

O ID da pergunta, único no template.

**type** `string`

`text`, `secret`, `select`, `boolean`, `number`, `url` ou `email`.

**label** `object`

A pergunta nos três idiomas.

**help** `object`

Explicação opcional, nos três idiomas.

**required** `boolean`

Opcional, `false` quando ausente.

**default** `string | number | boolean`

Resposta padrão opcional.

**validation** `object`

Limites opcionais para a resposta: `regex`, `min`, `max`, `min_length` e `max_length`.

**generate** `string`

Para perguntas `secret`: `random:<n>` ou `uuid`. A plataforma gera o valor quando a resposta é deixada vazia.

**editable** `boolean`

`false` junto com `generate` significa que o valor gerado não pode ser substituído.

**when** `object`

A pergunta só se aplica quando a resposta a outra coincide: `input` (o ID da outra pergunta) e `equals`.

**options** `object[]`

Para perguntas `select`. Cada opção tem `value`, um `label` opcional e `sets` opcional, o que a escolha altera: `services` (um ID de serviço para `on` ou `off`), `env` (variáveis por serviço) e `ram_extra` (memória extra em MB por serviço).

**permissions** `object`

O que você pode fazer com uma aplicação criada a partir do template. Todos os valores são booleanos: `code_view`, `code_edit`, `ram_change`, `ram_below_min`, `ram_above_max`, `env_add`, `commands_edit`, `terminal`, `save_as_template` e `detach` (`true` quando editar o código desvincula a aplicação do template; somente em templates abertos). Veja [Templates fechados](https://docs.vertracloud.app/pt-br/templates/use/closed-templates.md).

**outputs** `object[]`

O que é exibido ao final de um deploy. Cada um tem `label`, `value` (um texto ou um texto por idioma, que pode ser um placeholder), `secret` e `once` (o valor é exibido uma vez e nunca mais).

**readme** `object | null`

A documentação do template em Markdown, por idioma, ou `null`.

**changelog** `object | null`

O changelog da versão mais recente, por idioma, ou `null`.

```bash cURL theme={null}
curl https://api.vertracloud.app/v1/templates/discord-bot-js \
  -H "Authorization: Bearer $VERTRA_API_KEY"
```

```json Response theme={null}
{
  "response": {
    "id": "7c1d4f0e-3b8a-4d52-9a66-1f0c2e5a9b41",
    "slug": "discord-bot-js",
    "origin": "vertra",
    "visibility": "public",
    "name": { "pt-br": "Bot de Discord (JavaScript)", "en": "Discord bot (JavaScript)", "es": "Bot de Discord (JavaScript)" },
    "description": { "pt-br": "Bot de Discord com discord.js e o comando /ping. Ponto de partida para o seu bot.", "en": "Discord bot with discord.js and a /ping command. A starting point for your bot." },
    "category": "bots",
    "tags": ["discord", "bot", "javascript", "discordjs"],
    "icon_url": null,
    "author_display": null,
    "links": { "website": "https://discord.js.org", "docs": "https://discordjs.guide" },
    "landing": null,
    "featured": true,
    "current_version": { "id": "e0b7a2c9-5d14-4f8e-8c3a-92d6b1f47a10", "version": "1.0.0", "security": false, "created_at": "2026-10-26T13:05:00Z" },
    "services": [
      { "id": "app", "kind": "app", "source_type": "code", "database": null, "blob_visibility": null, "ram": { "min": 256, "recommended": 256 }, "web": "none", "conditional": false }
    ],
    "creates_stack": false,
    "ram_min_total": 256,
    "byok": false,
    "required_plan": "economy",
    "code_view": true,
    "uses_count": 87,
    "owner": null,
    "github": null,
    "created_at": "2026-10-26T09:00:00Z",
    "updated_at": "2026-10-26T13:05:00Z",
    "inputs": [
      {
        "id": "discord_token",
        "type": "secret",
        "label": { "pt-br": "Token do bot", "en": "Bot token" },
        "required": true,
        "validation": { "min_length": 50, "max_length": 100 }
      }
    ],
    "permissions": {
      "code_view": true,
      "code_edit": true,
      "ram_change": true,
      "ram_below_min": false,
      "ram_above_max": true,
      "env_add": true,
      "commands_edit": true,
      "terminal": false,
      "save_as_template": true,
      "detach": true
    },
    "outputs": [
      {
        "label": { "pt-br": "Próximo passo", "en": "Next step" },
        "value": { "en": "Invite the bot to your server and type /ping." },
        "secret": false,
        "once": false
      }
    ],
    "readme": null,
    "changelog": null
  }
}
```

### Respostas de erro

**code** `string`

O código de erro que indica o motivo da falha. Valores possíveis:

* `VALIDATION_ERROR`: Um parâmetro não é válido (`400`).
* `API_KEY_SCOPE_DENIED`: A chave de API não tem o escopo `templates:read` (`403`).
* `TEMPLATE_NOT_FOUND`: O template não existe, foi removido ou não está visível para você (`404`).
* `WORKSPACE_NOT_FOUND`: O workspace em `workspace_id` não existe ou você não faz parte dele (`404`).
* `RATE_LIMIT_EXCEEDED`: Requisições demais (`429`).
* `INTERNAL_SERVER_ERROR`: Falha inesperada (`500`).

```json Error Response theme={null}
{
  "code": "TEMPLATE_NOT_FOUND"
}
```


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