This call saves a stack as a private template with a first version and answers 201 with the template, one service per member you choose. The connection variables of the stack become placeholders that point at the other services ({{services.db.url}}, for example), and each Blob folder of the stack becomes a Blob service. A member left out of the template also leaves out the variables that pointed at it. Databases are recreated empty: their data is never copied.Needs the templates:write scope when called with an API key. The plan, limit and workspace rules of Create a Private Template apply, the template is not verified by Vertra Cloud, and the refusals of Create Template from App apply to each application member. Read the proposal first with Review Template Draft.
One review per variable of an application. A variable without a review is left out of the template. Each review has:
key: the variable name.
mode: question (becomes a question the user answers; the value is not copied), keep (the value is copied; refused when it looks like a credential), generate (becomes a secret the platform generates for each user, with generate set to random:<n> or uuid), hidden (copied but hidden from whoever uses the template; the value stays out of sight of whoever uses the template) or omit (left out).
label and help: texts by language (pt-br, en, es), used by question and generate.
generate: how the secret is generated, random:<n> or uuid.
The paths of the application’s /app that go into the template, for applications with code. Without it, everything goes in except what the draft leaves unselected. .env* files, the platform folder and dependency folders can never be included.
The error code indicating the reason for the failure. Possible values:
API_KEY_SCOPE_DENIED: The API key does not have the templates:write scope (403).
STACK_NOT_FOUND: The stack does not exist or is not yours.
APP_NOT_FOUND: A member application does not exist.
TEMPLATE_SAVE_NOT_ALLOWED: A member application came from a share link, or runs a platform image (403).
TEMPLATE_CLOSED: A member comes from a closed template (403).
TEMPLATE_MANIFEST_INVALID: The result is not a valid manifest; details.issues lists the findings.
TEMPLATE_SECRET_IN_SOURCE: A selected file holds a secret; details.files lists the paths (400).
TEMPLATE_SLUG_TAKEN: The slug is already in use among your templates or is reserved.
TEMPLATE_PRIVATE_LIMIT_REACHED: The account already has 5 private templates.
PLAN_DOES_NOT_SUPPORT_CUSTOM_IMAGES: The plan cannot create templates.
WORKSPACE_OWNER_ONLY: Only the workspace owner saves templates in it.
{ "code": "TEMPLATE_CLOSED"}
Last modified on October 28, 2026
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Vertra Cloud","description":"Vertra Cloud is a Brazilian application hosting platform (PaaS): deploy from GitHub or a zip file, isolated containers, managed databases, file storage, snapshots, a CLI and a VS Code extension.","colors":{"primary":"#ff6100","light":"#ff7a24","dark":"#e65700"},"logo":{"light":"https://mintcdn.com/vertracloud/2O7-bfMOIoy6MCUx/logo/light.svg?fit=max\u0026auto=format\u0026n=2O7-bfMOIoy6MCUx\u0026q=85\u0026s=2fcb392041b562c0aab2f07ebef0f12e","dark":"https://mintcdn.com/vertracloud/2O7-bfMOIoy6MCUx/logo/light.svg?fit=max\u0026auto=format\u0026n=2O7-bfMOIoy6MCUx\u0026q=85\u0026s=2fcb392041b562c0aab2f07ebef0f12e"},"favicon":"https://mintcdn.com/vertracloud/2O7-bfMOIoy6MCUx/favicon.svg?fit=max\u0026auto=format\u0026n=2O7-bfMOIoy6MCUx\u0026q=85\u0026s=1bab95e4f8e35419e5901e69c7caa4b2","api":{"playground":{"display":"interactive"},"examples":{"defaults":"required","languages":["curl","javascript","python","go"]},"mdx":{"auth":{"method":"bearer"},"server":"https://api.vertracloud.app"}},"background":{"color":{"light":"#f7f7f6","dark":"#121212"}},"navbar":{"links":[{"href":"mailto:[email protected]","label":"Support"}],"primary":{"type":"button","label":"Dashboard","href":"https://vertracloud.app/dashboard"}},"footer":{"socials":{"github":"https://github.com/vertracloud","instagram":"https://instagram.com/vertracloud","x":"https://x.com/vertracloud","youtube":"https://www.youtube.com/@vertracloud","discord":"https://discord.gg/vertracloud"}},"seo":{"metatags":{"og:site_name":"Vertra Cloud Docs","og:type":"website","og:image":"https://docs.vertracloud.app/images/og.png","twitter:card":"summary_large_image","twitter:image":"https://docs.vertracloud.app/images/og.png","description":"Vertra Cloud is a Brazilian application hosting platform (PaaS): deploy from GitHub or a zip file, isolated containers, managed databases, file storage, snapshots, a CLI and a VS Code extension."},"indexing":"navigable"},"fonts":{"family":"Geist"},"contextual":{"options":["copy","view","chatgpt","claude","mcp","cursor","vscode"],"display":"header"},"metadata":{"timestamp":true},"styling":{"latex":false},"navigation":{"languages":[{"language":"en","default":true,"href":""},{"language":"pt-BR","navbar":{"links":[{"href":"mailto:[email protected]","label":"Suporte"}],"primary":{"type":"button","label":"Dashboard","href":"https://vertracloud.app/dashboard"}},"href":"pt-br"},{"language":"es","navbar":{"links":[{"href":"mailto:[email protected]","label":"Soporte"}],"primary":{"type":"button","label":"Panel","href":"https://vertracloud.app/dashboard"}},"href":"es-es"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"vertracloud","hasAudioNarration":false,"actualSubdomain":"vertracloud","customDomains":["docs.vertracloud.app"],"gitSource":{"type":"github","owner":"vertracloud","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6adfccf1a2bef6f7629a5c5c","collectionId":"d2809f99-d115-4a9b-850f-551c23e42657","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6adfccf1a2bef6f7629a5c5c"},"entitlements":{},"buildId":"6ae51f8fceb92005b37aba26","clientVersion":"0.0.4043","searchFilterCounts":[{"language":"en","tag":"API Reference","count":159},{"language":"es","tag":"Referencia de la API","count":159},{"language":"pt-BR","tag":"Referência da API","count":159},{"language":"en","tag":"Endpoints","count":156},{"language":"es","tag":"Endpoints","count":156},{"language":"pt-BR","tag":"Endpoints","count":156},{"language":"en","tag":"Templates","count":64},{"language":"es","tag":"Plantillas","count":64},{"language":"pt-BR","tag":"Templates","count":64},{"language":"es","tag":"Blob Storage","count":58},{"language":"pt-BR","tag":"Blob Storage","count":58},{"language":"en","tag":"Blob Storage","count":56},{"language":"en","tag":"Applications","count":46},{"language":"en","tag":"Changelog","count":46},{"language":"es","tag":"Aplicaciones","count":46},{"language":"es","tag":"Changelog","count":46},{"language":"pt-BR","tag":"Aplicações","count":46},{"language":"pt-BR","tag":"Changelog","count":46},{"language":"en","tag":"v26","count":35},{"language":"es","tag":"v26","count":35},{"language":"pt-BR","tag":"v26","count":35},{"language":"en","tag":"Blob API reference","count":30},{"language":"es","tag":"Referencia de la API de Blob","count":30},{"language":"pt-BR","tag":"Referência da API do Blob","count":30},{"language":"en","tag":"Workspaces","count":26},{"language":"en","tag":"Tutorials","count":26},{"language":"es","tag":"Workspaces","count":26},{"language":"es","tag":"Tutoriales","count":26},{"language":"pt-BR","tag":"Workspaces","count":26},{"language":"pt-BR","tag":"Tutoriais","count":26}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[{"filePath":"style.css","content":":root{--gray-50:247 247 246;--gray-100:241 241 240;--gray-200:230 230 228;--gray-300:211 211 209;--gray-400:162 162 162;--gray-500:115 115 115;--gray-600:83 83 83;--gray-700:61 61 61;--gray-800:42 42 42;--gray-900:26 26 26;--gray-950:13 13 13}.vc-home{--vc-orange:#ff6100;--vc-orange-strong:#e65700;--vc-paper:#f7f7f6;--vc-surface:#ffffff;--vc-ink:#141414;--vc-ink-2:#3d3d3d;--vc-muted:#737373;--vc-line:#e6e6e4;color:var(--vc-ink)}.dark .vc-home{--vc-orange-strong:#ff7a24;--vc-paper:#121212;--vc-surface:#1a1a1a;--vc-ink:#f4f4f4;--vc-ink-2:#c6c6c6;--vc-muted:#8e8e8e;--vc-line:#2a2a2a}.vc-hero,.vc-hero-inner{display:flex;flex-direction:column;box-sizing:border-box;margin:0}.vc-hero{min-height:calc(100dvh - 120px);overflow:hidden;border-bottom:1px solid var(--vc-line);background-color:var(--vc-paper)}.vc-hero-inner{flex:0 0 auto;justify-content:center;max-width:40rem;padding:2.75rem 1.25rem 1.75rem;text-align:left}.vc-hero h1{margin:0;color:var(--vc-ink);font-size:clamp(2.15rem,.85rem + 1.9vw,3.15rem);font-weight:600;line-height:1.02;letter-spacing:-.045em;text-wrap:balance}.vc-hero-copy{max-width:36rem;margin:1.15rem 0 0;color:var(--vc-ink-2);font-size:1.05rem;line-height:1.55;text-wrap:pretty}.vc-actions{display:flex;flex-wrap:wrap;justify-content:flex-start;gap:.75rem;margin-top:1.75rem}.vc-btn{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-height:44px;padding:0 1.15rem;border-radius:.5rem;font-size:.92rem;font-weight:500;line-height:1;text-decoration:none!important;border:1px solid transparent;transition:background-color .18s cubic-bezier(.22,1,.36,1),border-color .18s cubic-bezier(.22,1,.36,1)}.vc-btn:focus-visible{outline:2px solid var(--vc-orange);outline-offset:2px}.vc-btn-primary{background:var(--vc-orange);color:#fff!important}.vc-btn-primary:hover{background:var(--vc-orange-strong)}.vc-btn-ghost{background:0 0;border-color:var(--vc-line);color:var(--vc-ink)!important}.vc-btn-ghost:hover{border-color:var(--vc-ink)}.vc-hero-art{flex:1 1 auto;min-height:240px;border-top:1px solid var(--vc-line);background:#f4efe4 url(/images/hero-pillar.webp) 70% 68%/cover no-repeat}@media (min-width:1024px){.vc-hero{flex-direction:row;align-items:stretch;min-height:calc(100dvh - 112px)}.vc-hero-inner{flex:.78 1 0;max-width:none;padding:4rem clamp(1.75rem,4vw,4.5rem)}.vc-hero-art{flex:1.22 1 0;min-height:0;border-top:0;border-left:1px solid var(--vc-line);background-position:72% 50%}}.vc-section{max-width:1040px;margin:0 auto;padding:4.5rem 1.5rem 0}.vc-section:last-of-type{padding-bottom:4.5rem}.vc-heading{max-width:620px;margin-bottom:1.75rem}.vc-kicker{color:var(--vc-orange);font:600 .72rem ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.12em;text-transform:uppercase}.vc-heading h2{margin:.5rem 0 .6rem;color:var(--vc-ink);font-size:clamp(1.55rem,3vw,2.05rem);font-weight:700;letter-spacing:-.03em;text-wrap:balance}.vc-heading p{margin:0;color:var(--vc-muted);line-height:1.65}.vc-home .card{border-radius:.85rem;transition:border-color .18s ease,transform .18s ease}.vc-home a.card:hover{border-color:rgba(255,97,0,.6)!important;transform:translateY(-2px)}.vc-chips{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.6rem}.vc-chip{display:flex;align-items:center;gap:.6rem;padding:.7rem .85rem;border:1px solid var(--vc-line);border-radius:.7rem;background:var(--vc-chip);color:var(--vc-ink)!important;font-size:.9rem;font-weight:500;text-decoration:none!important;transition:border-color .15s ease,transform .15s ease}.vc-chip:hover{border-color:rgba(255,97,0,.6);transform:translateY(-1px)}.vc-chip svg{flex-shrink:0}.vc-help{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.75rem}.vc-footer{display:flex;flex-wrap:wrap;justify-content:space-between;gap:.75rem;max-width:1040px;margin:4.5rem auto 0;padding:1.5rem 1.5rem 3rem;border-top:1px solid var(--vc-line);color:var(--vc-muted);font:.72rem ui-monospace,SFMono-Regular,Menlo,monospace;letter-spacing:.04em}.vc-footer a{color:var(--vc-ink)!important;text-decoration:none!important}.vc-footer a:hover{color:var(--vc-orange)!important}@media (max-width:760px){.vc-section{padding:3.25rem 1rem 0}}[data-component-part=language-switcher] [data-language=en] a::before{content:'🇺🇸 '}[data-component-part=language-switcher] [data-language=pt-BR] a::before{content:'🇧🇷 '}[data-component-part=language-switcher] [data-language=es] a::before{content:'🇪🇸 '}"}],"page":{"pagePath":"api-reference/endpoint/templates/create-from-stack","slug":"/api-reference/endpoint/templates/create-from-stack","pageMetadata":{"title":"Save a Stack as a Template","sidebarTitle":"Create from Stack","api":"POST https://api.vertracloud.app/v1/templates/from-stack/{stack_id}","authMethod":"bearer","description":"Saves one of your stacks as a private template with one service per member, choosing variables and files for each application.","href":"/api-reference/endpoint/templates/create-from-stack"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Saves one of your stacks as a private template with one service per member, choosing variables and files for each application.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,ul:`ul`,..._provideComponents(),...props.components},{Expandable,Heading,ParamField,ResponseField}=_components;if(!Expandable)_missingMdxReference(`Expandable`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!ParamField)_missingMdxReference(`ParamField`,true);if(!ResponseField)_missingMdxReference(`ResponseField`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`This call saves a stack as a private template with a first version and answers `,_jsx(_components.code,{children:`201`}),` with the template, one service per member you choose. The connection variables of the stack become placeholders that point at the other services (`,_jsx(_components.code,{children:`{{services.db.url}}`}),`, for example), and each Blob folder of the stack becomes a Blob service. A member left out of the template also leaves out the variables that pointed at it. Databases are recreated empty: their data is never copied.`]}),`\n`,_jsxs(_components.p,{children:[`Needs the `,_jsx(_components.code,{children:`templates:write`}),` scope when called with an API key. The plan, limit and workspace rules of `,_jsx(_components.a,{href:`/api-reference/endpoint/templates/create`,children:`Create a Private Template`}),` apply, the template is not verified by Vertra Cloud, and the refusals of `,_jsx(_components.a,{href:`/api-reference/endpoint/templates/create-from-app`,children:`Create Template from App`}),` apply to each application member. Read the proposal first with `,_jsx(_components.a,{href:`/api-reference/endpoint/templates/draft`,children:`Review Template Draft`}),`.`]}),`\n`,_jsx(ParamField,{path:`stack_id`,type:`string`,required:true,id:`param-stack-id`,children:_jsx(_components.p,{children:`The stack ID.`})}),`\n`,_jsx(ParamField,{query:`workspace_id`,type:`string`,id:`param-workspace-id`,children:_jsx(_components.p,{children:`If the stack belongs to a workspace, the workspace’s ID.`})}),`\n`,_jsx(ParamField,{body:`id`,type:`string`,required:true,id:`param-id`,children:_jsx(_components.p,{children:`The slug of the template, lowercase letters, digits and hyphens.`})}),`\n`,_jsx(ParamField,{body:`name`,type:`object`,required:true,id:`param-name`,children:_jsxs(_components.p,{children:[`The name by language: `,_jsx(_components.code,{children:`pt-br`}),` (required), `,_jsx(_components.code,{children:`en`}),` and `,_jsx(_components.code,{children:`es`}),`, up to 50 characters each.`]})}),`\n`,_jsx(ParamField,{body:`description`,type:`object`,required:true,id:`param-description`,children:_jsxs(_components.p,{children:[`The description by language, same shape as `,_jsx(_components.code,{children:`name`}),`, up to 128 characters each.`]})}),`\n`,_jsx(ParamField,{body:`category`,type:`string`,required:true,id:`param-category`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`automation`}),`, `,_jsx(_components.code,{children:`ai-agents`}),`, `,_jsx(_components.code,{children:`bots`}),`, `,_jsx(_components.code,{children:`apis`}),`, `,_jsx(_components.code,{children:`cms`}),`, `,_jsx(_components.code,{children:`monitoring`}),`, `,_jsx(_components.code,{children:`starters`}),`, `,_jsx(_components.code,{children:`databases`}),` or `,_jsx(_components.code,{children:`other`}),`.`]})}),`\n`,_jsx(ParamField,{body:`tags`,type:`string[]`,id:`param-tags`,children:_jsx(_components.p,{children:`Up to 10 tags.`})}),`\n`,_jsx(ParamField,{body:`version`,type:`string`,id:`param-version`,children:_jsxs(_components.p,{children:[`The first version, as a semantic version. Default `,_jsx(_components.code,{children:`1.0.0`}),`.`]})}),`\n`,_jsx(ParamField,{body:`permissions`,type:`object`,id:`param-permissions`,children:_jsxs(_components.p,{children:[`What users of the template may do, as in the `,_jsx(_components.a,{href:`/templates/create/permissions`,children:`permissions`}),` of the manifest.`]})}),`\n`,_jsxs(ParamField,{body:`members`,type:`object[]`,required:true,id:`param-members`,children:[_jsx(_components.p,{children:`What to save of each member of the stack, an application or a database.`}),_jsxs(Expandable,{title:`member object`,children:[_jsx(ResponseField,{name:`resource_id`,type:`string`,required:true,id:`param-resource-id`,children:_jsx(_components.p,{children:`The ID of the application or database to save.`})}),_jsx(ResponseField,{name:`service_id`,type:`string`,required:true,id:`param-service-id`,children:_jsx(_components.p,{children:`The id the service gets in the manifest.`})}),_jsxs(ResponseField,{name:`env`,type:`object[]`,id:`param-env`,children:[_jsx(_components.p,{children:`One review per variable of an application. A variable without a review is left out of the template. Each review has:`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`key`}),`: the variable name.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`mode`}),`: `,_jsx(_components.code,{children:`question`}),` (becomes a question the user answers; the value is not copied), `,_jsx(_components.code,{children:`keep`}),` (the value is copied; refused when it looks like a credential), `,_jsx(_components.code,{children:`generate`}),` (becomes a secret the platform generates for each user, with `,_jsx(_components.code,{children:`generate`}),` set to `,_jsx(_components.code,{children:`random:\u003cn>`}),` or `,_jsx(_components.code,{children:`uuid`}),`), `,_jsx(_components.code,{children:`hidden`}),` (copied but hidden from whoever uses the template; the value stays out of sight of whoever uses the template) or `,_jsx(_components.code,{children:`omit`}),` (left out).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`label`}),` and `,_jsx(_components.code,{children:`help`}),`: texts by language (`,_jsx(_components.code,{children:`pt-br`}),`, `,_jsx(_components.code,{children:`en`}),`, `,_jsx(_components.code,{children:`es`}),`), used by `,_jsx(_components.code,{children:`question`}),` and `,_jsx(_components.code,{children:`generate`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`generate`}),`: how the secret is generated, `,_jsx(_components.code,{children:`random:\u003cn>`}),` or `,_jsx(_components.code,{children:`uuid`}),`.`]}),`\n`]}),_jsxs(_components.p,{children:[`Read the suggestions first with `,_jsx(_components.a,{href:`/api-reference/endpoint/templates/draft`,children:`Review Template Draft`}),`.`]})]}),_jsx(ResponseField,{name:`paths`,type:`string[]`,id:`param-paths`,children:_jsxs(_components.p,{children:[`The paths of the application’s `,_jsx(_components.code,{children:`/app`}),` that go into the template, for applications with code. Without it, everything goes in except what the draft leaves unselected. `,_jsx(_components.code,{children:`.env*`}),` files, the platform folder and dependency folders can never be included.`]})}),_jsx(ResponseField,{name:`ram`,type:`object`,id:`param-ram`,children:_jsxs(_components.p,{children:[`The memory of the service in MB: `,_jsx(_components.code,{children:`min`}),`, `,_jsx(_components.code,{children:`recommended`}),` and optional `,_jsx(_components.code,{children:`max`}),`.`]})})]})]}),`\n`,_jsx(ParamField,{body:`workspace_id`,type:`string`,id:`param-workspace-id-1`,children:_jsx(_components.p,{children:`The workspace that will own the template. Without it, the template belongs to you.`})}),`\n`,`\n`,_jsx(Heading,{level:`3`,id:`response`,children:`Response`}),`\n`,_jsxs(_components.p,{children:[`The same template object returned by `,_jsx(_components.a,{href:`/api-reference/endpoint/templates/create`,children:`Create a Private Template`}),`, with `,_jsx(_components.code,{children:`201 Created`}),`. `,_jsx(_components.code,{children:`creates_stack`}),` is `,_jsx(_components.code,{children:`true`}),` and `,_jsx(_components.code,{children:`services`}),` has one entry per member.`]}),`\n`,`\n`,_jsx(Heading,{level:`3`,id:`error-responses`,children:`Error Responses`}),`\n`,_jsxs(ResponseField,{name:`code`,type:`string`,id:`param-code`,children:[_jsx(_components.p,{children:`The error code indicating the reason for the failure. Possible values:`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`API_KEY_SCOPE_DENIED`}),`: The API key does not have the `,_jsx(_components.code,{children:`templates:write`}),` scope (`,_jsx(_components.code,{children:`403`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`STACK_NOT_FOUND`}),`: The stack does not exist or is not yours.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`APP_NOT_FOUND`}),`: A member application does not exist.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`TEMPLATE_SAVE_NOT_ALLOWED`}),`: A member application came from a share link, or runs a platform image (`,_jsx(_components.code,{children:`403`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`TEMPLATE_CLOSED`}),`: A member comes from a closed template (`,_jsx(_components.code,{children:`403`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`TEMPLATE_MANIFEST_INVALID`}),`: The result is not a valid manifest; `,_jsx(_components.code,{children:`details.issues`}),` lists the findings.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`TEMPLATE_SECRET_IN_SOURCE`}),`: A selected file holds a secret; `,_jsx(_components.code,{children:`details.files`}),` lists the paths (`,_jsx(_components.code,{children:`400`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`TEMPLATE_SLUG_TAKEN`}),`: The slug is already in use among your templates or is reserved.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`TEMPLATE_PRIVATE_LIMIT_REACHED`}),`: The account already has 5 private templates.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`PLAN_DOES_NOT_SUPPORT_CUSTOM_IMAGES`}),`: The plan cannot create templates.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`WORKSPACE_OWNER_ONLY`}),`: Only the workspace owner saves templates in it.`]}),`\n`]})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Save a Stack as a Template","sidebarTitle":"Create from Stack","api":"POST https://api.vertracloud.app/v1/templates/from-stack/{stack_id}","authMethod":"bearer","description":"Saves one of your stacks as a private template with one service per member, choosing variables and files for each application.","href":"/api-reference/endpoint/templates/create-from-stack"}}},"mdxSourceWithNoJs":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Expandable,Heading,ParamField,RequestExample,ResponseExample,ResponseField}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Expandable)_missingMdxReference(`Expandable`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!ParamField)_missingMdxReference(`ParamField`,true);if(!RequestExample)_missingMdxReference(`RequestExample`,true);if(!ResponseExample)_missingMdxReference(`ResponseExample`,true);if(!ResponseField)_missingMdxReference(`ResponseField`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`This call saves a stack as a private template with a first version and answers `,_jsx(_components.code,{children:`201`}),` with the template, one service per member you choose. The connection variables of the stack become placeholders that point at the other services (`,_jsx(_components.code,{children:`{{services.db.url}}`}),`, for example), and each Blob folder of the stack becomes a Blob service. A member left out of the template also leaves out the variables that pointed at it. Databases are recreated empty: their data is never copied.`]}),`\n`,_jsxs(_components.p,{children:[`Needs the `,_jsx(_components.code,{children:`templates:write`}),` scope when called with an API key. The plan, limit and workspace rules of `,_jsx(_components.a,{href:`/api-reference/endpoint/templates/create`,children:`Create a Private Template`}),` apply, the template is not verified by Vertra Cloud, and the refusals of `,_jsx(_components.a,{href:`/api-reference/endpoint/templates/create-from-app`,children:`Create Template from App`}),` apply to each application member. Read the proposal first with `,_jsx(_components.a,{href:`/api-reference/endpoint/templates/draft`,children:`Review Template Draft`}),`.`]}),`\n`,_jsx(ParamField,{path:`stack_id`,type:`string`,required:true,id:`param-stack-id`,children:_jsx(_components.p,{children:`The stack ID.`})}),`\n`,_jsx(ParamField,{query:`workspace_id`,type:`string`,id:`param-workspace-id`,children:_jsx(_components.p,{children:`If the stack belongs to a workspace, the workspace’s ID.`})}),`\n`,_jsx(ParamField,{body:`id`,type:`string`,required:true,id:`param-id`,children:_jsx(_components.p,{children:`The slug of the template, lowercase letters, digits and hyphens.`})}),`\n`,_jsx(ParamField,{body:`name`,type:`object`,required:true,id:`param-name`,children:_jsxs(_components.p,{children:[`The name by language: `,_jsx(_components.code,{children:`pt-br`}),` (required), `,_jsx(_components.code,{children:`en`}),` and `,_jsx(_components.code,{children:`es`}),`, up to 50 characters each.`]})}),`\n`,_jsx(ParamField,{body:`description`,type:`object`,required:true,id:`param-description`,children:_jsxs(_components.p,{children:[`The description by language, same shape as `,_jsx(_components.code,{children:`name`}),`, up to 128 characters each.`]})}),`\n`,_jsx(ParamField,{body:`category`,type:`string`,required:true,id:`param-category`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`automation`}),`, `,_jsx(_components.code,{children:`ai-agents`}),`, `,_jsx(_components.code,{children:`bots`}),`, `,_jsx(_components.code,{children:`apis`}),`, `,_jsx(_components.code,{children:`cms`}),`, `,_jsx(_components.code,{children:`monitoring`}),`, `,_jsx(_components.code,{children:`starters`}),`, `,_jsx(_components.code,{children:`databases`}),` or `,_jsx(_components.code,{children:`other`}),`.`]})}),`\n`,_jsx(ParamField,{body:`tags`,type:`string[]`,id:`param-tags`,children:_jsx(_components.p,{children:`Up to 10 tags.`})}),`\n`,_jsx(ParamField,{body:`version`,type:`string`,id:`param-version`,children:_jsxs(_components.p,{children:[`The first version, as a semantic version. Default `,_jsx(_components.code,{children:`1.0.0`}),`.`]})}),`\n`,_jsx(ParamField,{body:`permissions`,type:`object`,id:`param-permissions`,children:_jsxs(_components.p,{children:[`What users of the template may do, as in the `,_jsx(_components.a,{href:`/templates/create/permissions`,children:`permissions`}),` of the manifest.`]})}),`\n`,_jsxs(ParamField,{body:`members`,type:`object[]`,required:true,id:`param-members`,children:[_jsx(_components.p,{children:`What to save of each member of the stack, an application or a database.`}),_jsxs(Expandable,{title:`member object`,children:[_jsx(ResponseField,{name:`resource_id`,type:`string`,required:true,id:`param-resource-id`,children:_jsx(_components.p,{children:`The ID of the application or database to save.`})}),_jsx(ResponseField,{name:`service_id`,type:`string`,required:true,id:`param-service-id`,children:_jsx(_components.p,{children:`The id the service gets in the manifest.`})}),_jsxs(ResponseField,{name:`env`,type:`object[]`,id:`param-env`,children:[_jsx(_components.p,{children:`One review per variable of an application. A variable without a review is left out of the template. Each review has:`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`key`}),`: the variable name.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`mode`}),`: `,_jsx(_components.code,{children:`question`}),` (becomes a question the user answers; the value is not copied), `,_jsx(_components.code,{children:`keep`}),` (the value is copied; refused when it looks like a credential), `,_jsx(_components.code,{children:`generate`}),` (becomes a secret the platform generates for each user, with `,_jsx(_components.code,{children:`generate`}),` set to `,_jsx(_components.code,{children:`random:\u003cn>`}),` or `,_jsx(_components.code,{children:`uuid`}),`), `,_jsx(_components.code,{children:`hidden`}),` (copied but hidden from whoever uses the template; the value stays out of sight of whoever uses the template) or `,_jsx(_components.code,{children:`omit`}),` (left out).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`label`}),` and `,_jsx(_components.code,{children:`help`}),`: texts by language (`,_jsx(_components.code,{children:`pt-br`}),`, `,_jsx(_components.code,{children:`en`}),`, `,_jsx(_components.code,{children:`es`}),`), used by `,_jsx(_components.code,{children:`question`}),` and `,_jsx(_components.code,{children:`generate`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`generate`}),`: how the secret is generated, `,_jsx(_components.code,{children:`random:\u003cn>`}),` or `,_jsx(_components.code,{children:`uuid`}),`.`]}),`\n`]}),_jsxs(_components.p,{children:[`Read the suggestions first with `,_jsx(_components.a,{href:`/api-reference/endpoint/templates/draft`,children:`Review Template Draft`}),`.`]})]}),_jsx(ResponseField,{name:`paths`,type:`string[]`,id:`param-paths`,children:_jsxs(_components.p,{children:[`The paths of the application’s `,_jsx(_components.code,{children:`/app`}),` that go into the template, for applications with code. Without it, everything goes in except what the draft leaves unselected. `,_jsx(_components.code,{children:`.env*`}),` files, the platform folder and dependency folders can never be included.`]})}),_jsx(ResponseField,{name:`ram`,type:`object`,id:`param-ram`,children:_jsxs(_components.p,{children:[`The memory of the service in MB: `,_jsx(_components.code,{children:`min`}),`, `,_jsx(_components.code,{children:`recommended`}),` and optional `,_jsx(_components.code,{children:`max`}),`.`]})})]})]}),`\n`,_jsx(ParamField,{body:`workspace_id`,type:`string`,id:`param-workspace-id-1`,children:_jsx(_components.p,{children:`The workspace that will own the template. Without it, the template belongs to you.`})}),`\n`,_jsx(RequestExample,{children:_jsx(CodeBlock,{filename:`cURL`,numberOfLines:`13`,language:`shellscript`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`shellscript`,children:_jsxs(_components.code,{language:`shellscript`,numberOfLines:`13`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#DCDCAA`},children:`curl`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -X`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` POST`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` https://api.vertracloud.app/v1/templates/from-stack/stk-abc123def456`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Authorization: Bearer `}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#9CDCFE`},children:`$VERTRA_API_KEY`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -H`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"Content-Type: application/json\"`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D7BA7D`},children:` \\\\`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:` -d`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` '{`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"id\": \"api-with-postgres\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"name\": { \"pt-br\": \"API com Postgres\", \"en\": \"API with Postgres\" },`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"description\": { \"pt-br\": \"API e banco prontos.\" },`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"category\": \"apis\",`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"members\": [`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` { \"resource_id\": \"app-abc123def456\", \"service_id\": \"api\" },`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` { \"resource_id\": \"db-abc123def456\", \"service_id\": \"db\" }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` ]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` }'`})}),`\n`]})})})}),`\n`,_jsx(Heading,{level:`3`,id:`response`,children:`Response`}),`\n`,_jsxs(_components.p,{children:[`The same template object returned by `,_jsx(_components.a,{href:`/api-reference/endpoint/templates/create`,children:`Create a Private Template`}),`, with `,_jsx(_components.code,{children:`201 Created`}),`. `,_jsx(_components.code,{children:`creates_stack`}),` is `,_jsx(_components.code,{children:`true`}),` and `,_jsx(_components.code,{children:`services`}),` has one entry per member.`]}),`\n`,_jsx(ResponseExample,{children:_jsx(CodeBlock,{filename:`Response`,numberOfLines:`17`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`17`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"response\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"tpl-abc123def456\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"slug\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"api-with-postgres\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"origin\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"private\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"name\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: { `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"pt-br\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"API com Postgres\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"en\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"API with Postgres\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"category\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"apis\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"creates_stack\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"services\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"api\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"kind\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"app\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"source_type\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"code\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"database\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`null`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"blob_visibility\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`null`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"ram\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: { `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"min\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`256`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"recommended\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`512`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"web\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"required\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"conditional\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`false`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"db\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"kind\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"database\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"source_type\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`null`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"database\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"postgres\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"blob_visibility\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`null`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"ram\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: { `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"min\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`256`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"recommended\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`256`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"web\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`null`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"conditional\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`false`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ],`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"ram_min_total\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`512`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"created_at\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2026-10-27T14:02:00Z\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"updated_at\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2026-10-27T14:02:00Z\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})})}),`\n`,_jsx(Heading,{level:`3`,id:`error-responses`,children:`Error Responses`}),`\n`,_jsxs(ResponseField,{name:`code`,type:`string`,id:`param-code`,children:[_jsx(_components.p,{children:`The error code indicating the reason for the failure. Possible values:`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`API_KEY_SCOPE_DENIED`}),`: The API key does not have the `,_jsx(_components.code,{children:`templates:write`}),` scope (`,_jsx(_components.code,{children:`403`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`STACK_NOT_FOUND`}),`: The stack does not exist or is not yours.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`APP_NOT_FOUND`}),`: A member application does not exist.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`TEMPLATE_SAVE_NOT_ALLOWED`}),`: A member application came from a share link, or runs a platform image (`,_jsx(_components.code,{children:`403`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`TEMPLATE_CLOSED`}),`: A member comes from a closed template (`,_jsx(_components.code,{children:`403`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`TEMPLATE_MANIFEST_INVALID`}),`: The result is not a valid manifest; `,_jsx(_components.code,{children:`details.issues`}),` lists the findings.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`TEMPLATE_SECRET_IN_SOURCE`}),`: A selected file holds a secret; `,_jsx(_components.code,{children:`details.files`}),` lists the paths (`,_jsx(_components.code,{children:`400`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`TEMPLATE_SLUG_TAKEN`}),`: The slug is already in use among your templates or is reserved.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`TEMPLATE_PRIVATE_LIMIT_REACHED`}),`: The account already has 5 private templates.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`PLAN_DOES_NOT_SUPPORT_CUSTOM_IMAGES`}),`: The plan cannot create templates.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`WORKSPACE_OWNER_ONLY`}),`: Only the workspace owner saves templates in it.`]}),`\n`]})]}),`\n`,_jsx(ResponseExample,{children:_jsx(CodeBlock,{filename:`Error Response`,numberOfLines:`3`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`3`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"code\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"TEMPLATE_CLOSED\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Save a Stack as a Template","sidebarTitle":"Create from Stack","api":"POST https://api.vertracloud.app/v1/templates/from-stack/{stack_id}","authMethod":"bearer","description":"Saves one of your stacks as a private template with one service per member, choosing variables and files for each application.","href":"/api-reference/endpoint/templates/create-from-stack"}}}},"mdxExtracts":{"tableOfContents":[{"title":"Response","slug":"response","depth":3,"children":[]},{"title":"Error Responses","slug":"error-responses","depth":3,"children":[]}],"codeExamples":{"request":{"type":"RequestExample","children":[{"filename":"cURL","html":"\u003cpre class=\"shiki shiki-themes github-light-default dark-plus\" style=\"background-color:#ffffff;--shiki-dark-bg:#0B0C0E;color:#1f2328;--shiki-dark:#D4D4D4\" language=\"shellscript\">\u003ccode language=\"shellscript\" numberOfLines=\"13\">\u003cspan class=\"line\">\u003cspan style=\"color:#953800;--shiki-dark:#DCDCAA\">curl\u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\"> -X\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> POST\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> https://api.vertracloud.app/v1/templates/from-stack/stk-abc123def456\u003c/span>\u003cspan style=\"color:#CF222E;--shiki-dark:#D7BA7D\"> \\\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\"> -H\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> \"Authorization: Bearer \u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#9CDCFE\">$VERTRA_API_KEY\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"\u003c/span>\u003cspan style=\"color:#CF222E;--shiki-dark:#D7BA7D\"> \\\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\"> -H\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> \"Content-Type: application/json\"\u003c/span>\u003cspan style=\"color:#CF222E;--shiki-dark:#D7BA7D\"> \\\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\"> -d\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> '{\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> \"id\": \"api-with-postgres\",\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> \"name\": { \"pt-br\": \"API com Postgres\", \"en\": \"API with Postgres\" },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> \"description\": { \"pt-br\": \"API e banco prontos.\" },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> \"category\": \"apis\",\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> \"members\": [\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> { \"resource_id\": \"app-abc123def456\", \"service_id\": \"api\" },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> { \"resource_id\": \"db-abc123def456\", \"service_id\": \"db\" }\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> ]\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> }'\u003c/span>\u003c/span>\n\u003c/code>\u003c/pre>"}],"attributes":[]},"response":{"type":"ResponseExample","children":[{"filename":"Response","html":"\u003cpre class=\"shiki shiki-themes github-light-default dark-plus\" style=\"background-color:#ffffff;--shiki-dark-bg:#0B0C0E;color:#1f2328;--shiki-dark:#D4D4D4\" language=\"json\">\u003ccode language=\"json\" numberOfLines=\"17\">\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">{\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"response\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"id\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"tpl-abc123def456\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"slug\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"api-with-postgres\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"origin\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"private\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"name\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: { \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"pt-br\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"API com Postgres\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">, \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"en\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"API with Postgres\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"category\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"apis\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"creates_stack\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">true\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"services\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: [\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> { \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"id\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"api\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">, \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"kind\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"app\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">, \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"source_type\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"code\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">, \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"database\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">null\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">, \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"blob_visibility\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">null\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">, \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"ram\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: { \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"min\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">256\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">, \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"recommended\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">512\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> }, \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"web\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"required\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">, \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"conditional\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">false\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> { \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"id\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"db\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">, \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"kind\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"database\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">, \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"source_type\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">null\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">, \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"database\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"postgres\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">, \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"blob_visibility\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">null\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">, \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"ram\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: { \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"min\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">256\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">, \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"recommended\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">256\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> }, \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"web\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">null\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">, \u003c/span>\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\">\"conditional\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">false\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> }\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> ],\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"ram_min_total\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">512\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"created_at\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"2026-10-27T14:02:00Z\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"updated_at\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"2026-10-27T14:02:00Z\"\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> }\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">}\u003c/span>\u003c/span>\n\u003c/code>\u003c/pre>"}],"attributes":[]}},"endpoint":{"title":"Save a Stack as a Template","path":"/v1/templates/from-stack/{stack_id}","servers":[{"url":"https://api.vertracloud.app"}],"method":"post","request":{"security":[{"title":"Bearer Auth","parameters":{"header":{"Authorization":{"type":"http","scheme":"bearer","description":"Bearer authentication header of the form `Bearer \u003ctoken>`, where `\u003ctoken>` is your auth token."}},"query":{},"cookie":{}}}],"parameters":{"query":{"workspace_id":{"schema":[{"type":"string","description":"If the stack belongs to a workspace, the workspace’s ID."}]}},"header":{},"cookie":{},"path":{"stack_id":{"schema":[{"type":"string","description":"The stack ID.","required":true}]}}},"body":{"application/json":{"schemaArray":[{"type":"object","properties":{"id":[{"type":"string","description":"The slug of the template, lowercase letters, digits and hyphens.","required":true}],"name":[{"type":"object","properties":{},"description":"The name by language: `pt-br` (required), `en` and `es` , up to 50 characters each.","required":true}],"description":[{"type":"object","properties":{},"description":"The description by language, same shape as `name` , up to 128 characters each.","required":true}],"category":[{"type":"string","description":"`automation` , `ai-agents` , `bots` , `apis` , `cms` , `monitoring` , `starters` , `databases` or `other` .","required":true}],"tags":[{"type":"array","items":[{"type":"string"}],"description":"Up to 10 tags."}],"version":[{"type":"string","description":"The first version, as a semantic version. Default `1.0.0` ."}],"permissions":[{"type":"object","properties":{},"description":"What users of the template may do, as in the permissions of the manifest."}],"members":[{"type":"array","items":[{"type":"object","properties":{}}],"description":"What to save of each member of the stack, an application or a database.","required":true}],"workspace_id":[{"type":"string","description":"The workspace that will own the template. Without it, the template belongs to you."}]}}],"examples":{"example":{"value":{"id":"\u003cstring>","name":{},"description":{},"category":"\u003cstring>","tags":["\u003cstring>"],"version":"\u003cstring>","permissions":{},"members":[{}],"workspace_id":"\u003cstring>"}}}}}},"response":{"200":{"application/json":{"schemaArray":[{"type":"object","properties":{"code":[{"type":"string","description":"The error code indicating the reason for the failure. Possible values: `API_KEY_SCOPE_DENIED` : The API key does not have the `templates:write` scope ( `403` ). `STACK_NOT_FOUND` : The stack does not exist or is not yours. `APP_NOT_FOUND` : A member application does not exist. `TEMPLATE_SAVE_NOT_ALLOWED` : A member application came from a share link, or runs a platform image ( `403` ). `TEMPLATE_CLOSED` : A member comes from a closed template ( `403` ). `TEMPLATE_MANIFEST_INVALID` : The result is not a valid manifest; `details.issues` lists the findings. `TEMPLATE_SECRET_IN_SOURCE` : A selected file holds a secret; `details.files` lists the paths ( `400` ). `TEMPLATE_SLUG_TAKEN` : The slug is already in use among your templates or is reserved. `TEMPLATE_PRIVATE_LIMIT_REACHED` : The account already has 5 private templates. `PLAN_DOES_NOT_SUPPORT_CUSTOM_IMAGES` : The plan cannot create templates. `WORKSPACE_OWNER_ONLY` : Only the workspace owner saves templates in it."}]}}],"examples":{"example":{"value":{"code":"\u003cstring>"}}}}}},"deprecated":false}},"jsLinks":[],"subdomain":"vertracloud","siteName":"Vertra Cloud","title":"Save a Stack as a Template - Vertra Cloud","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/api-reference/endpoint/templates/create-from-stack","matchLevel":0},"pt-BR":{"href":"/pt-br/api-reference/endpoint/templates/create-from-stack","matchLevel":1},"es":{"href":"/es-es","matchLevel":4}}},"lastModified":"2026-10-30T22:45:18.888Z","gitLastModified":"2026-10-28T22:06:31.000Z","originalFileLocation":"api-reference/endpoint/templates/create-from-stack.mdx","locale":"en"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Saves one of your stacks as a private template with one service per member, choosing variables and files for each application.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Vertra Cloud\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/vertracloud/pOhcCJNRkRisP0nY/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/vertracloud/pOhcCJNRkRisP0nY/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/vertracloud/pOhcCJNRkRisP0nY/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/vertracloud/pOhcCJNRkRisP0nY/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/vertracloud/pOhcCJNRkRisP0nY/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/vertracloud/pOhcCJNRkRisP0nY/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/vertracloud/pOhcCJNRkRisP0nY/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/vertracloud/pOhcCJNRkRisP0nY/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/vertracloud/pOhcCJNRkRisP0nY/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Save a Stack as a Template - Vertra Cloud\">\u003cmeta data-mint-head property=\"og:description\" content=\"Saves one of your stacks as a private template with one service per member, choosing variables and files for each application.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Vertra Cloud Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.vertracloud.app/api-reference/endpoint/templates/create-from-stack\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://docs.vertracloud.app/images/og.png\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Save a Stack as a Template - Vertra Cloud\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Saves one of your stacks as a private template with one service per member, choosing variables and files for each application.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://docs.vertracloud.app/images/og.png\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/vertracloud/pOhcCJNRkRisP0nY/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Vertra Cloud\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#ff6100\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.vertracloud.app/api-reference/endpoint/templates/create-from-stack\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/endpoint/templates/create-from-stack.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://docs.vertracloud.app/api-reference/endpoint/templates/create-from-stack\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"pt-BR\" href=\"https://docs.vertracloud.app/pt-br/api-reference/endpoint/templates/create-from-stack\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://docs.vertracloud.app/api-reference/endpoint/templates/create-from-stack\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.vertracloud.app/#organization\",\"name\":\"Vertra Cloud\",\"url\":\"https://docs.vertracloud.app\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/vertracloud/2O7-bfMOIoy6MCUx/logo/light.svg?fit=max\u0026auto=format\u0026n=2O7-bfMOIoy6MCUx\u0026q=85\u0026s=2fcb392041b562c0aab2f07ebef0f12e\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.vertracloud.app#website\",\"name\":\"Vertra Cloud\",\"url\":\"https://docs.vertracloud.app\",\"publisher\":{\"@id\":\"https://docs.vertracloud.app/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.vertracloud.app/api-reference/endpoint/templates/create-from-stack#webpage\",\"url\":\"https://docs.vertracloud.app/api-reference/endpoint/templates/create-from-stack\",\"name\":\"Save a Stack as a Template\",\"description\":\"Saves one of your stacks as a private template with one service per member, choosing variables and files for each application.\",\"dateModified\":\"2026-10-28T22:06:31.000Z\",\"isPartOf\":{\"@id\":\"https://docs.vertracloud.app#website\"},\"breadcrumb\":{\"@id\":\"https://docs.vertracloud.app/api-reference/endpoint/templates/create-from-stack#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.vertracloud.app/api-reference/endpoint/templates/create-from-stack#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Endpoints\",\"item\":\"https://docs.vertracloud.app/api-reference/endpoint/users/me\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Templates\",\"item\":\"https://docs.vertracloud.app/api-reference/endpoint/templates/list\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Save a Stack as a Template\",\"item\":\"https://docs.vertracloud.app/api-reference/endpoint/templates/create-from-stack\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.vertracloud.app/api-reference/endpoint/templates/create-from-stack#apireference\",\"headline\":\"Save a Stack as a Template\",\"name\":\"Save a Stack as a Template\",\"description\":\"Saves one of your stacks as a private template with one service per member, choosing variables and files for each application.\",\"url\":\"https://docs.vertracloud.app/api-reference/endpoint/templates/create-from-stack\",\"mainEntityOfPage\":{\"@id\":\"https://docs.vertracloud.app/api-reference/endpoint/templates/create-from-stack#webpage\"},\"image\":\"https://docs.vertracloud.app/images/og.png\",\"dateModified\":\"2026-10-28T22:06:31.000Z\",\"publisher\":{\"@id\":\"https://docs.vertracloud.app/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.vertracloud.app#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Vertra Cloud\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Vertra Cloud","nav":{"global":null,"languages":[{"language":"en","default":true,"tabs":[{"tab":"Getting Started","pages":[{"title":"Getting Started","href":""}]},{"tab":"Resources","pages":[{"title":"Resources","href":"/applications"}]},{"tab":"Tutorials","pages":[{"title":"Tutorials","href":"/tutorials/introduction"}]},{"tab":"Guides","pages":[{"title":"Guides","href":"/guides/custom-domain"}]},{"tab":"Tools","pages":[{"title":"Tools","href":"/cli"}]},{"tab":"Blob Storage","pages":[{"title":"Blob Storage","href":"/blob/overview"}]},{"tab":"Templates","pages":[{"title":"Templates","href":"/templates/overview"}]},{"tab":"API Reference","groups":[{"group":"Overview","icon":"book","pages":[{"title":"Vertra Cloud Public API Reference","sidebarTitle":"Public API","href":"/api-reference/introduction"},{"title":"Platform Limits and Quotas on Vertra Cloud","sidebarTitle":"Limitations","href":"/api-reference/limitations"},{"title":"Vertra Cloud API Error Codes","sidebarTitle":"Error Codes","href":"/api-reference/errors"}]},{"group":"Endpoints","icon":"plug","pages":[{"group":"Users","icon":"user","pages":[{"title":"User Information","sidebarTitle":"User Info","api":"GET https://api.vertracloud.app/v1/users/me","href":"/api-reference/endpoint/users/me"},{"title":"Update User Profile","sidebarTitle":"Update Profile","api":"PATCH https://api.vertracloud.app/v1/users/me","href":"/api-reference/endpoint/users/update-me"},{"title":"List All Snapshots of the Account","sidebarTitle":"All Snapshots","api":"GET https://api.vertracloud.app/v1/users/snapshots","href":"/api-reference/endpoint/users/snapshots"},{"title":"Personal Resource Organization","sidebarTitle":"Folders and favorites","href":"/api-reference/endpoint/users/resource-organization"},{"title":"List Sessions","sidebarTitle":"Sessions","api":"GET https://api.vertracloud.app/v1/users/me/sessions","href":"/api-reference/endpoint/users/sessions"}]},{"group":"Status","icon":"heart-pulse","pages":[{"title":"Check Infrastructure Status","sidebarTitle":"Check Status","api":"GET https://api.vertracloud.app/v1/status","href":"/api-reference/endpoint/services/status"}]},{"group":"Applications","icon":"rocket","pages":[{"title":"Application Details","sidebarTitle":"Get Application","api":"GET https://api.vertracloud.app/v1/apps/{id}","href":"/api-reference/endpoint/apps/get"},{"title":"Application Status","sidebarTitle":"Get Application Status","api":"GET https://api.vertracloud.app/v1/apps/{id}/status","href":"/api-reference/endpoint/apps/status"},{"title":"All Applications Status","sidebarTitle":"All Applications Status","api":"GET https://api.vertracloud.app/v1/apps/status","href":"/api-reference/endpoint/apps/allstatus"},{"title":"List Runtimes","sidebarTitle":"Runtimes","api":"GET https://api.vertracloud.app/v1/apps/runtimes","href":"/api-reference/endpoint/apps/runtimes"},{"title":"Application Metrics","sidebarTitle":"Application Metrics","api":"GET https://api.vertracloud.app/v1/apps/{id}/metrics","href":"/api-reference/endpoint/apps/metrics"},{"title":"Real-Time Application Logs","sidebarTitle":"Real-Time Application Logs","api":"GET https://api.vertracloud.app/v1/apps/{id}/realtime","href":"/api-reference/endpoint/apps/realtime"},{"title":"Download Application","sidebarTitle":"Download Application","api":"GET https://api.vertracloud.app/v1/apps/{id}/download","href":"/api-reference/endpoint/apps/download"},{"title":"Application Logs","sidebarTitle":"Application Logs","api":"GET https://api.vertracloud.app/v1/apps/{id}/logs","href":"/api-reference/endpoint/apps/logs"},{"title":"Create Application","sidebarTitle":"Create Application","api":"POST https://api.vertracloud.app/v1/apps","href":"/api-reference/endpoint/apps/create"},{"title":"Create Application from Image","sidebarTitle":"Create from Image","api":"POST https://api.vertracloud.app/v1/apps/image","href":"/api-reference/endpoint/apps/create-from-image"},{"title":"Start Application","sidebarTitle":"Start Application","api":"POST https://api.vertracloud.app/v1/apps/{id}/start","href":"/api-reference/endpoint/apps/start"},{"title":"Restart Application","sidebarTitle":"Restart Application","api":"POST https://api.vertracloud.app/v1/apps/{id}/restart","href":"/api-reference/endpoint/apps/restart"},{"title":"Stop Application","sidebarTitle":"Stop Application","api":"POST https://api.vertracloud.app/v1/apps/{id}/stop","href":"/api-reference/endpoint/apps/stop"},{"title":"Update Application Configuration","sidebarTitle":"Update Configuration","api":"PATCH https://api.vertracloud.app/v1/apps/{id}/config","href":"/api-reference/endpoint/apps/updateconfig"},{"title":"Delete Application","sidebarTitle":"Delete Application","api":"DELETE https://api.vertracloud.app/v1/apps/{id}","href":"/api-reference/endpoint/apps/delete"},{"group":"Network","icon":"globe","pages":[{"title":"Publish Application on the Web","sidebarTitle":"Publish / Unpublish","api":"POST https://api.vertracloud.app/v1/apps/{id}/network/publish","href":"/api-reference/endpoint/apps/network/publish"},{"title":"Change Application Subdomain","sidebarTitle":"Change Subdomain","api":"PATCH https://api.vertracloud.app/v1/apps/{id}/network/subdomain","href":"/api-reference/endpoint/apps/network/subdomain"},{"title":"Purge Cache","sidebarTitle":"Purge Cache","api":"POST https://api.vertracloud.app/v1/apps/{id}/network/purge-cache","href":"/api-reference/endpoint/apps/network/purgecache"}]},{"group":"Domains","icon":"link","pages":[{"title":"List Application Domains","sidebarTitle":"List Domains","api":"GET https://api.vertracloud.app/v1/apps/{id}/domains","href":"/api-reference/endpoint/apps/domains/list"},{"title":"Add Application Domain","sidebarTitle":"Add Domain","api":"POST https://api.vertracloud.app/v1/apps/{id}/domains","href":"/api-reference/endpoint/apps/domains/create"},{"title":"Update Application Domain","sidebarTitle":"Update Domain","api":"PATCH https://api.vertracloud.app/v1/apps/{id}/domains/{domain_id}","href":"/api-reference/endpoint/apps/domains/update"},{"title":"Remove Application Domain","sidebarTitle":"Remove Domain","api":"DELETE https://api.vertracloud.app/v1/apps/{id}/domains/{domain_id}","href":"/api-reference/endpoint/apps/domains/delete"},{"title":"Domain DNS Records","sidebarTitle":"Domain DNS Records","api":"GET https://api.vertracloud.app/v1/apps/{id}/domains/{domain_id}/dns","href":"/api-reference/endpoint/apps/domains/dns"},{"title":"Configure Domain Automatically","sidebarTitle":"Configure Automatically","api":"POST https://api.vertracloud.app/v1/apps/{id}/domains/{domain_id}/connect","href":"/api-reference/endpoint/apps/domains/connect"}]},{"group":"File Manager","icon":"folder-open","pages":[{"title":"Get Application File Content","sidebarTitle":"Get File Content","api":"GET https://api.vertracloud.app/v1/apps/{id}/files/content","href":"/api-reference/endpoint/apps/filemanager/content"},{"title":"Get Application Files","sidebarTitle":"Get Files","api":"GET https://api.vertracloud.app/v1/apps/{id}/files","href":"/api-reference/endpoint/apps/filemanager/files"},{"title":"Get Application File Tree","sidebarTitle":"Get File Tree","api":"GET https://api.vertracloud.app/v1/apps/{id}/files/tree","href":"/api-reference/endpoint/apps/filemanager/tree"},{"title":"Upload Files to Application","sidebarTitle":"Upload Files","api":"POST https://api.vertracloud.app/v1/apps/{id}/files/upload","href":"/api-reference/endpoint/apps/filemanager/upload"},{"title":"Delete Application File or Folder","sidebarTitle":"Delete File or Folder","api":"DELETE https://api.vertracloud.app/v1/apps/{id}/files","href":"/api-reference/endpoint/apps/filemanager/delete"},{"title":"Move Application File or Folder","sidebarTitle":"Move File or Folder","api":"PATCH https://api.vertracloud.app/v1/apps/{id}/files","href":"/api-reference/endpoint/apps/filemanager/move"},{"title":"Create or Update Application File or Folder","sidebarTitle":"Create/Update File or Folder","api":"PUT https://api.vertracloud.app/v1/apps/{id}/files","href":"/api-reference/endpoint/apps/filemanager/save"}]},{"group":"Environments","icon":"key","pages":[{"title":"Get Application Environment Variables","sidebarTitle":"Get Environment Variables","api":"GET https://api.vertracloud.app/v1/apps/{id}/envs","href":"/api-reference/endpoint/apps/enviroments/get"},{"title":"Delete an Application Environment Variable","sidebarTitle":"Delete Environment Variable","api":"DELETE https://api.vertracloud.app/v1/apps/{id}/envs/{envId}","href":"/api-reference/endpoint/apps/enviroments/delete"},{"title":"Create or Edit Application Environment Variables","sidebarTitle":"Create/Edit Environment Variables","api":"POST https://api.vertracloud.app/v1/apps/{id}/envs","href":"/api-reference/endpoint/apps/enviroments/createOrEdit"}]},{"group":"Snapshots","icon":"camera","pages":[{"title":"Get Application Snapshots","sidebarTitle":"Get Snapshots","api":"GET https://api.vertracloud.app/v1/users/{id}/snapshots","href":"/api-reference/endpoint/apps/snapshots/getall"},{"title":"Create Application Snapshot","sidebarTitle":"Create Snapshot","api":"POST https://api.vertracloud.app/v1/users/{id}/snapshots","href":"/api-reference/endpoint/apps/snapshots/create"},{"title":"Restore Application Snapshot","sidebarTitle":"Restore Snapshot","api":"POST https://api.vertracloud.app/v1/users/{id}/snapshots/{snapshot_id}/restore","href":"/api-reference/endpoint/apps/snapshots/restore"},{"title":"Download Application Snapshot","sidebarTitle":"Download Snapshot","api":"GET https://api.vertracloud.app/v1/users/{id}/snapshots/{snapshot_id}/download","href":"/api-reference/endpoint/apps/snapshots/download"}]},{"group":"Deploys","icon":"code-branch","pages":[{"title":"Get Deploy Webhook URL","sidebarTitle":"Get Webhook URL","api":"GET https://api.vertracloud.app/v1/apps/{app_id}/deploys/webhook","href":"/api-reference/endpoint/apps/deploys/webhookurl"},{"title":"Get Recent Deployments","sidebarTitle":"Recent Deployments","api":"GET https://api.vertracloud.app/v1/apps/{app_id}/deploys","href":"/api-reference/endpoint/apps/deploys/recents"},{"title":"Delete Deploy Webhook","sidebarTitle":"Delete Webhook","api":"DELETE https://api.vertracloud.app/v1/apps/{app_id}/deploys/webhook","href":"/api-reference/endpoint/apps/deploys/delete"},{"title":"Create Deploy Webhook","sidebarTitle":"Create Webhook","api":"POST https://api.vertracloud.app/v1/apps/{app_id}/deploys/webhook","href":"/api-reference/endpoint/apps/deploys/create"}]},{"group":"Releases","icon":"clock-rotate-left","pages":[{"title":"List Application Releases","sidebarTitle":"List Releases","api":"GET https://api.vertracloud.app/v1/apps/{id}/releases","href":"/api-reference/endpoint/apps/releases/list"},{"title":"Get Application Release Log","sidebarTitle":"Get Release Log","api":"GET https://api.vertracloud.app/v1/apps/{id}/releases/{release_id}/log","href":"/api-reference/endpoint/apps/releases/log"},{"title":"Preview Application Rollback","sidebarTitle":"Preview Rollback","api":"GET https://api.vertracloud.app/v1/apps/{id}/releases/{release_id}/rollback","href":"/api-reference/endpoint/apps/releases/rollback-preview"},{"title":"Roll Back Application to a Release","sidebarTitle":"Roll Back","api":"POST https://api.vertracloud.app/v1/apps/{id}/releases/{release_id}/rollback","href":"/api-reference/endpoint/apps/releases/rollback"}]}]},{"group":"Docker Images","icon":"docker","pages":[{"title":"List Images","sidebarTitle":"List Images","api":"GET https://api.vertracloud.app/v1/images","href":"/api-reference/endpoint/images/list"},{"title":"Get Image","sidebarTitle":"Get Image","api":"GET https://api.vertracloud.app/v1/images/{image_id}","href":"/api-reference/endpoint/images/get"},{"title":"Check Dockerfile","sidebarTitle":"Check Dockerfile","api":"POST https://api.vertracloud.app/v1/images/check","href":"/api-reference/endpoint/images/check"},{"title":"Create Image","sidebarTitle":"Create Image","api":"POST https://api.vertracloud.app/v1/images","href":"/api-reference/endpoint/images/create"},{"title":"Update Image","sidebarTitle":"Update Image","api":"PATCH https://api.vertracloud.app/v1/images/{image_id}","href":"/api-reference/endpoint/images/update"},{"title":"Rebuild Image","sidebarTitle":"Rebuild Image","api":"PUT https://api.vertracloud.app/v1/images/{image_id}","href":"/api-reference/endpoint/images/rebuild"},{"title":"List Image Versions","sidebarTitle":"List Versions","api":"GET https://api.vertracloud.app/v1/images/{image_id}/versions","href":"/api-reference/endpoint/images/versions"},{"title":"Image Build Logs","sidebarTitle":"Build Logs","api":"GET https://api.vertracloud.app/v1/images/{image_id}/logs","href":"/api-reference/endpoint/images/logs"},{"title":"Download Image Context","sidebarTitle":"Download Context","api":"GET https://api.vertracloud.app/v1/images/{image_id}/context","href":"/api-reference/endpoint/images/context"},{"title":"Link Image to GitHub","sidebarTitle":"Link GitHub","api":"PUT https://api.vertracloud.app/v1/images/{image_id}/github","href":"/api-reference/endpoint/images/github-link"},{"title":"Unlink Image from GitHub","sidebarTitle":"Unlink GitHub","api":"DELETE https://api.vertracloud.app/v1/images/{image_id}/github","href":"/api-reference/endpoint/images/github-unlink"},{"title":"Delete Image","sidebarTitle":"Delete Image","api":"DELETE https://api.vertracloud.app/v1/images/{image_id}","href":"/api-reference/endpoint/images/delete"}]},{"group":"Templates","icon":"shapes","pages":[{"title":"List Templates","sidebarTitle":"List Templates","api":"GET https://api.vertracloud.app/v1/templates","href":"/api-reference/endpoint/templates/list"},{"title":"List Template Categories","sidebarTitle":"List Categories","api":"GET https://api.vertracloud.app/v1/templates/categories","href":"/api-reference/endpoint/templates/categories"},{"title":"Get Template","sidebarTitle":"Get Template","api":"GET https://api.vertracloud.app/v1/templates/{template_id}","href":"/api-reference/endpoint/templates/get"},{"title":"List Template Versions","sidebarTitle":"List Versions","api":"GET https://api.vertracloud.app/v1/templates/{template_id}/versions","href":"/api-reference/endpoint/templates/versions"},{"title":"Validate Template Manifest","sidebarTitle":"Validate Manifest","api":"POST https://api.vertracloud.app/v1/templates/validate","href":"/api-reference/endpoint/templates/validate"},{"title":"Deploy Template","sidebarTitle":"Deploy Template","api":"POST https://api.vertracloud.app/v1/templates/{template_id}/deploy","href":"/api-reference/endpoint/templates/deploy"},{"title":"Get Template Deploy Job","sidebarTitle":"Get Deploy Job","api":"GET https://api.vertracloud.app/v1/template-deploys/{deploy_id}","href":"/api-reference/endpoint/templates/deploy-status"},{"title":"Stream Template Deploy Events","sidebarTitle":"Deploy Events","api":"GET https://api.vertracloud.app/v1/template-deploys/{deploy_id}/events","href":"/api-reference/endpoint/templates/deploy-events"},{"title":"Get Template Update Info","sidebarTitle":"Update Info","api":"GET https://api.vertracloud.app/v1/apps/{id}/template/update","href":"/api-reference/endpoint/templates/update-info"},{"title":"Update a Template or Move an App to Its Latest Version","sidebarTitle":"Update Template","api":"POST https://api.vertracloud.app/v1/apps/{id}/template/update","href":"/api-reference/endpoint/templates/update"},{"title":"Create a Private Template","sidebarTitle":"Create Template","api":"POST https://api.vertracloud.app/v1/templates","href":"/api-reference/endpoint/templates/create"},{"title":"Save an Application as a Template","sidebarTitle":"Create from App","api":"POST https://api.vertracloud.app/v1/templates/from-app/{app_id}","description":"Saves one of your applications as a private template, choosing which variables become questions and which files go in.","href":"/api-reference/endpoint/templates/create-from-app"},{"title":"Save a Stack as a Template","sidebarTitle":"Create from Stack","api":"POST https://api.vertracloud.app/v1/templates/from-stack/{stack_id}","href":"/api-reference/endpoint/templates/create-from-stack"},{"title":"Review the Draft of a Template from an App or Stack","sidebarTitle":"Review Draft","api":"GET https://api.vertracloud.app/v1/templates/from-app/{app_id}/draft","description":"Lists the variables and files the platform proposes when you save an application or a stack as a template, never including values.","href":"/api-reference/endpoint/templates/draft"},{"title":"Publish a New Version of a Private Template","sidebarTitle":"New Version","api":"POST https://api.vertracloud.app/v1/templates/{template_id}/versions","href":"/api-reference/endpoint/templates/new-version"},{"title":"Delete a Private Template","sidebarTitle":"Delete Template","api":"DELETE https://api.vertracloud.app/v1/templates/{template_id}","href":"/api-reference/endpoint/templates/delete"},{"title":"Link a Private Template to GitHub","sidebarTitle":"Link GitHub","api":"PUT https://api.vertracloud.app/v1/templates/{template_id}/github","href":"/api-reference/endpoint/templates/github-link"},{"title":"Unlink a Private Template from GitHub","sidebarTitle":"Unlink GitHub","api":"DELETE https://api.vertracloud.app/v1/templates/{template_id}/github","href":"/api-reference/endpoint/templates/github-unlink"},{"title":"Detach an Application or Stack from a Template","sidebarTitle":"Detach","api":"POST https://api.vertracloud.app/v1/apps/{id}/template/detach","href":"/api-reference/endpoint/templates/detach"},{"group":"Share links","icon":"share-nodes","pages":[{"title":"Preview a Template Share Link","sidebarTitle":"Preview Link","api":"GET https://api.vertracloud.app/v1/share/templates/{token}","href":"/api-reference/endpoint/templates/share-links/preview"},{"title":"Use a Template Share Link to Create Applications","sidebarTitle":"Use Link","api":"POST https://api.vertracloud.app/v1/share/templates/{token}/deploy","href":"/api-reference/endpoint/templates/share-links/deploy"},{"title":"Copy a Template from a Full-Copy Share Link","sidebarTitle":"Copy from Link","api":"POST https://api.vertracloud.app/v1/share/templates/{token}/copy","href":"/api-reference/endpoint/templates/share-links/copy"},{"title":"Report a Template","sidebarTitle":"Report Template","api":"POST https://api.vertracloud.app/v1/share/templates/{token}/report","href":"/api-reference/endpoint/templates/share-links/report"},{"title":"Create a Share Link for a Template","sidebarTitle":"Create Link","api":"POST https://api.vertracloud.app/v1/templates/{template_id}/share-links","href":"/api-reference/endpoint/templates/share-links/create"},{"title":"List the Share Links of a Template","sidebarTitle":"List Links","api":"GET https://api.vertracloud.app/v1/templates/{template_id}/share-links","href":"/api-reference/endpoint/templates/share-links/list"},{"title":"Revoke a Share Link","sidebarTitle":"Revoke Link","api":"DELETE https://api.vertracloud.app/v1/templates/{template_id}/share-links/{link_id}","href":"/api-reference/endpoint/templates/share-links/revoke"}]}]},{"group":"Stacks","icon":"layer-group","pages":[{"title":"List Stacks","sidebarTitle":"List Stacks","api":"GET https://api.vertracloud.app/v1/stacks","href":"/api-reference/endpoint/stacks/list"},{"title":"Get Stack","sidebarTitle":"Get Stack","api":"GET https://api.vertracloud.app/v1/stacks/{stack_id}","href":"/api-reference/endpoint/stacks/get"},{"title":"Create Stack","sidebarTitle":"Create Stack","api":"POST https://api.vertracloud.app/v1/stacks","href":"/api-reference/endpoint/stacks/create"},{"title":"Update Stack","sidebarTitle":"Update Stack","api":"PATCH https://api.vertracloud.app/v1/stacks/{stack_id}","href":"/api-reference/endpoint/stacks/update"},{"title":"Delete Stack","sidebarTitle":"Delete Stack","api":"DELETE https://api.vertracloud.app/v1/stacks/{stack_id}","href":"/api-reference/endpoint/stacks/delete"},{"title":"Transform Folder into Stack","sidebarTitle":"Transform into Stack","api":"POST https://api.vertracloud.app/v1/stacks/transform","href":"/api-reference/endpoint/stacks/transform"},{"title":"Get Stack Connection Code","sidebarTitle":"Connection Code","api":"GET https://api.vertracloud.app/v1/stacks/{stack_id}/connection","href":"/api-reference/endpoint/stacks/connection"},{"title":"Set Stack Network Mode","sidebarTitle":"Network Mode","api":"POST https://api.vertracloud.app/v1/stacks/{stack_id}/network-mode","href":"/api-reference/endpoint/stacks/network-mode"},{"group":"Members","icon":"user-group","pages":[{"title":"Add Stack Member","sidebarTitle":"Add Member","api":"POST https://api.vertracloud.app/v1/stacks/{stack_id}/members","href":"/api-reference/endpoint/stacks/members/add"},{"title":"Remove Stack Member","sidebarTitle":"Remove Member","api":"DELETE https://api.vertracloud.app/v1/stacks/{stack_id}/members/{resource_type}/{resource_id}","href":"/api-reference/endpoint/stacks/members/remove"}]},{"group":"Connections","icon":"arrows-left-right","pages":[{"title":"Create Stack Connection","sidebarTitle":"Create Connection","api":"POST https://api.vertracloud.app/v1/stacks/{stack_id}/bindings","href":"/api-reference/endpoint/stacks/bindings/create"},{"title":"Delete Stack Connection","sidebarTitle":"Delete Connection","api":"DELETE https://api.vertracloud.app/v1/stacks/{stack_id}/bindings/{binding_id}","href":"/api-reference/endpoint/stacks/bindings/delete"},{"title":"List Stack Connections","sidebarTitle":"List Connections","api":"GET https://api.vertracloud.app/v1/stacks/{stack_id}/bindings","href":"/api-reference/endpoint/stacks/bindings/list"},{"title":"Update Stack Connection","sidebarTitle":"Update Connection","api":"PATCH https://api.vertracloud.app/v1/stacks/{stack_id}/bindings/{binding_id}","href":"/api-reference/endpoint/stacks/bindings/update"}]},{"group":"Databases","icon":"database","pages":[{"title":"Add Database to Stack","sidebarTitle":"Add Database","api":"POST https://api.vertracloud.app/v1/stacks/{stack_id}/databases","href":"/api-reference/endpoint/stacks/databases/create"}]},{"group":"Blob","icon":"box-archive","pages":[{"title":"Add Blob Folder to Stack","sidebarTitle":"Add Blob Folder","api":"POST https://api.vertracloud.app/v1/stacks/{stack_id}/blob","href":"/api-reference/endpoint/stacks/blob/create"}]},{"group":"Snapshots","icon":"camera","pages":[{"title":"Create Stack Snapshot","sidebarTitle":"Create Snapshot","api":"POST https://api.vertracloud.app/v1/stacks/{stack_id}/snapshots","href":"/api-reference/endpoint/stacks/snapshots/create"},{"title":"List Stack Snapshots","sidebarTitle":"List Snapshots","api":"GET https://api.vertracloud.app/v1/stacks/{stack_id}/snapshots","href":"/api-reference/endpoint/stacks/snapshots/list"},{"title":"Restore Stack Snapshot","sidebarTitle":"Restore Snapshot","api":"POST https://api.vertracloud.app/v1/stacks/{stack_id}/snapshots/{snapshot_id}/restore","href":"/api-reference/endpoint/stacks/snapshots/restore"}]}]},{"group":"Databases","icon":"database","pages":[{"title":"Create Database","sidebarTitle":"Create Database","api":"POST https://api.vertracloud.app/v1/databases","href":"/api-reference/endpoint/databases/create"},{"title":"Get Database by ID","sidebarTitle":"Get Database","api":"GET https://api.vertracloud.app/v1/databases/{id}","href":"/api-reference/endpoint/databases/get"},{"title":"List Database Versions","sidebarTitle":"Versions","api":"GET https://api.vertracloud.app/v1/databases/versions","href":"/api-reference/endpoint/databases/versions"},{"title":"Get Database Status by ID","sidebarTitle":"Get Database Status","api":"GET https://api.vertracloud.app/v1/databases/{id}/status","href":"/api-reference/endpoint/databases/status"},{"title":"Get All Databases Status","sidebarTitle":"All Databases Status","api":"GET https://api.vertracloud.app/v1/databases/status","href":"/api-reference/endpoint/databases/allstatus"},{"title":"Get Database Metrics by ID","sidebarTitle":"Get Database Metrics","api":"GET https://api.vertracloud.app/v1/databases/{id}/metrics","href":"/api-reference/endpoint/databases/metrics"},{"title":"Reset Database","sidebarTitle":"Reset Database","api":"POST https://api.vertracloud.app/v1/databases/{id}/reset","href":"/api-reference/endpoint/databases/reset"},{"title":"Start Database","sidebarTitle":"Start Database","api":"POST https://api.vertracloud.app/v1/databases/{id}/start","href":"/api-reference/endpoint/databases/start"},{"title":"Stop Database","sidebarTitle":"Stop Database","api":"POST https://api.vertracloud.app/v1/databases/{id}/stop","href":"/api-reference/endpoint/databases/stop"},{"title":"Update Database","sidebarTitle":"Update Database","api":"PUT https://api.vertracloud.app/v1/databases/{id}","href":"/api-reference/endpoint/databases/update"},{"title":"Delete Database","sidebarTitle":"Delete Database","api":"DELETE https://api.vertracloud.app/v1/databases/{id}","href":"/api-reference/endpoint/databases/delete"},{"group":"Credentials","icon":"lock","pages":[{"title":"Get Database Certificate","sidebarTitle":"Get Certificate","api":"GET https://api.vertracloud.app/v1/databases/{id}/credentials/certificate","href":"/api-reference/endpoint/databases/credentials/get"},{"title":"Reset Database Certificates","sidebarTitle":"Reset Certificates","api":"POST https://api.vertracloud.app/v1/databases/{id}/credentials/certificate/reset","href":"/api-reference/endpoint/databases/credentials/reset"},{"title":"Reset Database Password","sidebarTitle":"Reset Password","api":"POST https://api.vertracloud.app/v1/databases/{id}/credentials/reset","href":"/api-reference/endpoint/databases/credentials/resetpassword"}]}]},{"group":"Workspaces","icon":"users","pages":[{"title":"List Workspaces","sidebarTitle":"List","api":"GET https://api.vertracloud.app/v1/workspaces","href":"/api-reference/endpoint/workspaces/get-all"},{"title":"Get Workspace","sidebarTitle":"Get","api":"GET https://api.vertracloud.app/v1/workspaces/{id}","href":"/api-reference/endpoint/workspaces/get"},{"title":"Create Workspace","sidebarTitle":"Create","api":"POST https://api.vertracloud.app/v1/workspaces","href":"/api-reference/endpoint/workspaces/create"},{"title":"Update Workspace","sidebarTitle":"Update","api":"PUT https://api.vertracloud.app/v1/workspaces/{id}","href":"/api-reference/endpoint/workspaces/update"},{"title":"Delete Workspace","sidebarTitle":"Delete","api":"DELETE https://api.vertracloud.app/v1/workspaces/{id}","href":"/api-reference/endpoint/workspaces/delete"},{"group":"Members","icon":"user-group","pages":[{"title":"List Members","sidebarTitle":"List","api":"GET https://api.vertracloud.app/v1/workspaces/{id}/members","href":"/api-reference/endpoint/workspaces/members/list"},{"title":"Update Member","sidebarTitle":"Update","api":"PUT https://api.vertracloud.app/v1/workspaces/{id}/members/{user_id}","href":"/api-reference/endpoint/workspaces/members/update"},{"title":"Remove Member","sidebarTitle":"Remove","api":"DELETE https://api.vertracloud.app/v1/workspaces/{id}/members/{user_id}","href":"/api-reference/endpoint/workspaces/members/remove"}]},{"group":"Roles","icon":"id-badge","pages":[{"title":"List Roles","sidebarTitle":"List","api":"GET https://api.vertracloud.app/v1/workspaces/{id}/roles","href":"/api-reference/endpoint/workspaces/roles/list"},{"title":"Create Role","sidebarTitle":"Create","api":"POST https://api.vertracloud.app/v1/workspaces/{id}/roles","href":"/api-reference/endpoint/workspaces/roles/create"},{"title":"Update Role","sidebarTitle":"Update","api":"PUT https://api.vertracloud.app/v1/workspaces/{id}/roles/{role_id}","href":"/api-reference/endpoint/workspaces/roles/update"},{"title":"Delete Role","sidebarTitle":"Delete","api":"DELETE https://api.vertracloud.app/v1/workspaces/{id}/roles/{role_id}","href":"/api-reference/endpoint/workspaces/roles/delete"}]},{"group":"Invites","icon":"envelope","pages":[{"title":"List Invites","sidebarTitle":"List","api":"GET https://api.vertracloud.app/v1/workspaces/{id}/invites","href":"/api-reference/endpoint/workspaces/invites/list"},{"title":"Revoke Invite","sidebarTitle":"Revoke","api":"DELETE https://api.vertracloud.app/v1/workspaces/{id}/invites/{invite_id}","href":"/api-reference/endpoint/workspaces/invites/revoke"},{"title":"Preview Invite","sidebarTitle":"Preview","api":"GET https://api.vertracloud.app/v1/workspaces/invites/{token}","href":"/api-reference/endpoint/workspaces/invites/preview"},{"title":"Accept Invite","sidebarTitle":"Accept","api":"POST https://api.vertracloud.app/v1/workspaces/invites/{token}/accept","href":"/api-reference/endpoint/workspaces/invites/accept"},{"title":"Decline Invite","sidebarTitle":"Decline","api":"POST https://api.vertracloud.app/v1/workspaces/invites/{token}/decline","href":"/api-reference/endpoint/workspaces/invites/decline"}]},{"group":"Apps \u0026 Databases","icon":"window-maximize","pages":[{"title":"Link Application","sidebarTitle":"Link App","api":"POST https://api.vertracloud.app/v1/workspaces/{id}/apps/{app_id}","href":"/api-reference/endpoint/workspaces/links/add-app"},{"title":"Unlink Application","sidebarTitle":"Unlink App","api":"DELETE https://api.vertracloud.app/v1/workspaces/{id}/apps/{app_id}","href":"/api-reference/endpoint/workspaces/links/remove-app"},{"title":"Link Database","sidebarTitle":"Link Database","api":"POST https://api.vertracloud.app/v1/workspaces/{id}/databases/{db_id}","href":"/api-reference/endpoint/workspaces/links/add-database"},{"title":"Unlink Database","sidebarTitle":"Unlink Database","api":"DELETE https://api.vertracloud.app/v1/workspaces/{id}/databases/{db_id}","href":"/api-reference/endpoint/workspaces/links/remove-database"},{"title":"Link Template or Stack","sidebarTitle":"Link Template or Stack","api":"POST https://api.vertracloud.app/v1/workspaces/{id}/templates/{template_id}","href":"/api-reference/endpoint/workspaces/links/add-template"},{"title":"Unlink Template or Stack","sidebarTitle":"Unlink Template or Stack","api":"DELETE https://api.vertracloud.app/v1/workspaces/{id}/templates/{template_id}","href":"/api-reference/endpoint/workspaces/links/remove-template"}]},{"group":"Resource Organization","icon":"folder-tree","pages":[{"title":"Workspace Resource Organization","sidebarTitle":"Folders and favorites","href":"/api-reference/endpoint/workspaces/resource-organization"}]},{"group":"Action Requests","icon":"square-check","pages":[{"title":"List Action Requests","sidebarTitle":"List","api":"GET https://api.vertracloud.app/v1/workspaces/{id}/action-requests","href":"/api-reference/endpoint/workspaces/action-requests/list"},{"title":"Create Action Request","sidebarTitle":"Create","api":"POST https://api.vertracloud.app/v1/workspaces/{id}/action-requests","href":"/api-reference/endpoint/workspaces/action-requests/create"}]}]},{"group":"Billing","icon":"credit-card","pages":[{"title":"List Orders","sidebarTitle":"List Orders","api":"GET https://api.vertracloud.app/v1/orders","href":"/api-reference/endpoint/billing/list-orders"},{"title":"Get Order Status","sidebarTitle":"Order Status","api":"GET https://api.vertracloud.app/v1/orders/{orderId}/status","href":"/api-reference/endpoint/billing/order-status"},{"title":"Create Order","sidebarTitle":"Create Order","api":"POST https://api.vertracloud.app/v1/orders","href":"/api-reference/endpoint/billing/create-order"},{"title":"Initiate PIX Payment","sidebarTitle":"Initiate PIX","api":"POST https://api.vertracloud.app/v1/orders/{orderId}/initiate/pix","href":"/api-reference/endpoint/billing/initiate-pix"},{"title":"Get Billing Details","sidebarTitle":"Get Billing Details","api":"GET https://api.vertracloud.app/v1/users/me/billing","href":"/api-reference/endpoint/billing/get-billing-details"},{"title":"Update Billing Details","sidebarTitle":"Update Billing Details","api":"PUT https://api.vertracloud.app/v1/users/me/billing","href":"/api-reference/endpoint/billing/update-billing-details"}]},{"group":"Redeem","icon":"ticket","pages":[{"title":"Redeem Code","sidebarTitle":"Redeem Code","api":"POST https://api.vertracloud.app/v1/redeem/{code}","href":"/api-reference/endpoint/redeem/redeem"}]}]}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog"}]}],"global":{"anchors":[{"anchor":"Documentation","icon":"book-open-cover","href":"https://docs.vertracloud.app"},{"anchor":"Discord","icon":"discord","href":"https://discord.gg/vertracloud"},{"anchor":"Status","icon":"heart-pulse","href":"https://status.vertracloud.app"}]}},{"language":"pt-BR","navbar":{"links":[{"href":"mailto:[email protected]","label":"Suporte"}],"primary":{"type":"button","label":"Dashboard","href":"https://vertracloud.app/dashboard"}},"pages":[{"title":"pt-BR","href":"/pt-br/api-reference/endpoint/templates/create-from-stack"}]},{"language":"es","navbar":{"links":[{"href":"mailto:[email protected]","label":"Soporte"}],"primary":{"type":"button","label":"Panel","href":"https://vertracloud.app/dashboard"}},"pages":[{"title":"es","href":"/es-es"}]}]},"basePath":"","title":"Save a Stack as a Template - Vertra Cloud","buildId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","deploymentId":"dpl_G9nrg4qeJSZtah1Ziwbc2n6WkLch","dynamics":["c2aa737661","2b790eda92","b0f84f53ff"],"chunks":["OpenApiReferenceProvider-B7XKH4J3.js","utils-lOYzL7z-.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DF6jUUIM.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Dpsj5f7C.js","snippetPresets-CYeiDe8v.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CUFz1YZ_.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-D8H_iLS4.js","shallow-DdluZBHX.js","getApiPlaygroundDisplay-B9922vev.js","CodeSnippet-CMoRNGYs.js","CodeSnippets-DwyrPHuw.js","Page-DSVu9Ucl.js","getPastedJson-G-zIvlHh.js","icon-B03fnEy0.js","MethodPill-CW7teklc.js","DuplicateIcon-CtO8eekd.js","createIcon-DZTKdM_A.js","DynamicMarkdown-D5M2At0B.js","SectionHeading-C_2NaA2U.js","axios-vUo_bRtp.js"]}