La aplicación tiene dos orígenes mutuamente excluyentes: envía exactamente uno de file o
snapshot_id. Si no envías ninguno → SOURCE_REQUIRED; si envías los dos → SOURCE_CONFLICT.
Origen alternativo a file: el ID de un snapshot de aplicación desde el que crear la aplicación. La
plataforma descarga el snapshot (que ya incluye el vertracloud.config) y construye la aplicación a partir de él.
Se envía como campo de texto del cuerpo multipart; tiene el mismo límite de tamaño que file (100 MB).
La cantidad de RAM que se asigna a la aplicación, en MB. Mínimo 100 MB. Es obligatoria con file; con
snapshot_id es opcional y, si no se envía, se usa el vertracloud.config del snapshot. Cuando se pide un
subdomain, el valor sube automáticamente a al menos 512 MB: las aplicaciones web tienen su propio mínimo de memoria.
Un comando de build opcional, de hasta 512 caracteres (por ejemplo, npm run build). Se ejecuta después de
instalar las dependencias y antes de que la aplicación arranque, en un entorno de build aislado: 2× la RAM de la
aplicación (mínimo 1.024 MB, máximo 4.096 MB) con un tiempo límite de 10 minutos. Las devDependencies se
instalan cuando hay un comando de build. Disponible en todos los planes. Consulta
Actualizar configuración de la aplicación para cambiarlo más adelante.
El archivo principal de la aplicación. Es obligatorio con file; con snapshot_id es opcional y, si no se envía,
se usa el vertracloud.config del snapshot.
Opcional. Fuerza el lenguaje de ejecución en lugar de detectarlo a partir del proyecto: uno de javascript,
typescript, bun, python, static, php, go, ruby, java, rust, deno, dotnet, elixir.
Precedencia: este campo, después LANGUAGE= en vertracloud.config, y por último la detección. Cualquier otro
valor se rechaza con INVALID_LANGUAGE.
Obligatoria con file; con snapshot_id se usa la versión del vertracloud.config del snapshot. La versión del
runtime de la aplicación: recommended, latest o una versión concreta soportada por el runtime detectado
(por ejemplo, 22).
El subdominio de la aplicación (por ejemplo, miapp). Los espacios se reemplazan por - y el valor se pasa a
minúsculas antes de validarlo; el formato aceptado es ^[a-z0-9-]+$. Envía random para que la plataforma elija
uno por ti. Omite el campo por completo para crear una aplicación privada, sin publicación web; más adelante puedes
activarla con Publicar aplicación en la web.Requiere que el plan admita la publicación web.
Una cadena JSON con un array de variables de entorno, cada una con key, value y un note opcional. Longitud
máxima de la clave 255, del valor 3072 y de la nota 50.
La creación es asíncrona: la respuesta es 202 Accepted con la aplicación en status: "building". Después, consulta los
Detalles de la aplicación o los logs en tiempo real
hasta que status sea up o down. Mientras esté en building, iniciar, detener, reiniciar, los despliegues de archivos,
el rollback, los snapshots, las restauraciones y los cambios de configuración responden 409 APP_BUILDING; eliminar la aplicación
sí está permitido. Si el build se interrumpe, la aplicación queda en down y BUILD_INTERRUPTED aparece en sus logs; si la
plataforma cancela la creación (por ejemplo, porque la cola está llena), la aplicación deja de existir y los Detalles de la
aplicación responden 404.
El estado de la aplicación. La creación responde 202 Accepted con building; la instalación y el build continúan en
segundo plano. Cuando terminan, el estado pasa a up, o a down si fallaron la instalación de dependencias o el
comando build (la salida está en los logs, así que puedes corregir los archivos y volver a iniciar sin subirlos de nuevo).
El código del último fallo de build o de instalación, o null tras un build correcto. Uno de BUILD_FAILED,
BUILD_TIMEOUT, BUILD_INTERRUPTED, INSTALL_FAILED, INSTALL_OUT_OF_MEMORY, INSTALL_TIMEOUT o
INSTALL_SHIELD_BLOCKED. El detalle está en los logs de la aplicación; consulta Errores
para saber qué hacer con cada código.
Presente mientras Vertra Shield ha pausado la aplicación. Incluye until (fin de la pausa), reason (burst o
rate_limit) y direction (in o out); null cuando no hay ninguna pausa activa.
Repositorio de GitHub vinculado (repo_owner, repo_name) cuando el despliegue automático está conectado; null
cuando la aplicación se creó desde un ZIP o un snapshot. La URL del webhook no se incluye: para obtenerla usa
GET /v1/apps/{id}/deploys/webhook.
La imagen Docker personalizada desde la que se ejecuta la aplicación; null en una aplicación normal. Con una imagen,
language, version, main_file, start_command y build_command no se aplican: vienen de la imagen. Consulta
Imágenes Docker personalizadas.
Lo que se aplica al siguiente reinicio o despliegue: true en Enterprise cuando zero_downtime es on, o cuando es auto y la aplicación recibe tráfico web.
Solo cuando creas desde el snapshot de una aplicación que ejecuta una imagen Docker personalizada y la versión de la imagen registrada en el snapshot ya no existe: IMAGE_VERSION_NOT_FOUND. La aplicación se crea con la versión actual de la imagen.
El código de error que indica el motivo del fallo. Valores posibles:
VALIDATION_ERROR: El cuerpo multipart no superó la validación (400). La respuesta incluye también message y path, que apuntan al campo con el problema.
USER_NOT_FOUND: No se pudo resolver el usuario autenticado (401).
MAX_APPS_REACHED: Se alcanzó el límite de aplicaciones del plan (403).
INVALID_ZIP: El archivo subido no es un ZIP legible (truncado o dañado) (400).
MAIN_FILE_NOT_FOUND: El archivo indicado en main no existe dentro del ZIP (400).
ZIP_TOO_SMALL: El archivo subido pesa menos de 100 bytes (400).
FILE_TOO_LARGE: El archivo subido supera el límite de 100 MB (400).
SOURCE_REQUIRED: No se envió ni file ni snapshot_id (400).
SOURCE_CONFLICT: Se enviaron file y snapshot_id a la vez (400).
SNAPSHOT_NOT_FOUND: El snapshot_id no existe o no pertenece a quien hace la llamada (404).
SNAPSHOT_TYPE_MISMATCH: El snapshot es de una base de datos, no de una aplicación (400).
SNAPSHOT_TOO_LARGE: El snapshot supera el mismo límite de creación de 100 MB que file (400).
MEMORY_REQUIRED: No se envió memory y el vertracloud.config del snapshot no tiene un MEMORY utilizable (400).
PLAN_REQUIRED: El propietario no tiene un plan activo, así que no se puede crear una aplicación nueva, o se pidió un subdomain sin plan (403).
PLAN_DOES_NOT_SUPPORT_WEB_PUBLISH: Se pidió un subdomain, pero el plan del propietario no incluye la publicación web (403).
INVALID_MEMORY_FORMAT: memory no es un número (400).
MEMORY_MUST_BE_INTEGER: memory no es un entero (400).
MEMORY_BELOW_MINIMUM: memory está por debajo del mínimo para el tipo de aplicación (400).
MEMORY_LIMIT_EXCEEDED: La memoria pedida supera la que aún tiene disponible el plan (400).
SUBDOMAIN_TAKEN: Otra aplicación ya usa ese subdominio (409).
SUBDOMAIN_FORBIDDEN: El subdominio pedido está en la lista de reservados de la plataforma (400).
USER_LIMITS_NOT_FOUND: No se pudo cargar el registro de límites del propietario (404).
INVALID_LANGUAGE: El lenguaje no es compatible o no se pudo determinar (400).
Una descripción detallada con información adicional sobre el error. Presente en VALIDATION_ERROR.
{ "code": "VALIDATION_ERROR", "message": "Main file is required", "path": "main"}
{ "code": "MAIN_FILE_NOT_FOUND"}
{ "code": "PLAN_REQUIRED"}
Una aplicación creada sin subdomain sigue siendo privada. Puedes activar la publicación web más adelante con
Publicar aplicación en la web, y desactivarla con la misma ruta.
Última modificación el 28 de octubre de 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":"6ae51deb3bf34bcad38c5814","collectionId":"9f590012-0485-47b3-af80-9ffed670518c","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae51deb3bf34bcad38c5814"},"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":"es-es/api-reference/endpoint/apps/create","slug":"/es-es/api-reference/endpoint/apps/create","pageMetadata":{"title":"Crear aplicación","sidebarTitle":"Crear aplicación","api":"POST https://api.vertracloud.app/v1/apps","authMethod":"bearer","description":"Crea una aplicación nueva con la configuración y los archivos indicados.","href":"/es-es/api-reference/endpoint/apps/create"},"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: \"Crea una aplicación nueva con la configuración y los archivos indicados.\"\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`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{Expandable,Heading,Note,ParamField,ResponseField}=_components;if(!Expandable)_missingMdxReference(`Expandable`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!ParamField)_missingMdxReference(`ParamField`,true);if(!ResponseField)_missingMdxReference(`ResponseField`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`La aplicación tiene `,_jsx(_components.strong,{children:`dos orígenes mutuamente excluyentes`}),`: envía exactamente uno de `,_jsx(_components.code,{children:`file`}),` o\n`,_jsx(_components.code,{children:`snapshot_id`}),`. Si no envías ninguno → `,_jsx(_components.code,{children:`SOURCE_REQUIRED`}),`; si envías los dos → `,_jsx(_components.code,{children:`SOURCE_CONFLICT`}),`.`]}),`\n`,_jsx(ParamField,{body:`file`,type:`file`,id:`param-file`,children:_jsxs(_components.p,{children:[`El archivo ZIP con el código de la aplicación (tamaño máximo: 100 MB). No se envía cuando el origen es\n`,_jsx(_components.code,{children:`snapshot_id`}),`.`]})}),`\n`,_jsx(ParamField,{body:`snapshot_id`,type:`string`,id:`param-snapshot-id`,children:_jsxs(_components.p,{children:[`Origen alternativo a `,_jsx(_components.code,{children:`file`}),`: el ID de un snapshot de `,_jsx(_components.strong,{children:`aplicación`}),` desde el que crear la aplicación. La\nplataforma descarga el snapshot (que ya incluye el `,_jsx(_components.code,{children:`vertracloud.config`}),`) y construye la aplicación a partir de él.\nSe envía como campo de texto del cuerpo multipart; tiene el mismo límite de tamaño que `,_jsx(_components.code,{children:`file`}),` (100 MB).`]})}),`\n`,_jsx(ParamField,{body:`memory`,type:`string`,id:`param-memory`,children:_jsxs(_components.p,{children:[`La cantidad de RAM que se asigna a la aplicación, en MB. Mínimo 100 MB. Es obligatoria con `,_jsx(_components.code,{children:`file`}),`; con\n`,_jsx(_components.code,{children:`snapshot_id`}),` es opcional y, si no se envía, se usa el `,_jsx(_components.code,{children:`vertracloud.config`}),` del snapshot. Cuando se pide un\n`,_jsx(_components.code,{children:`subdomain`}),`, el valor sube automáticamente a al menos 512 MB: las aplicaciones web tienen su propio mínimo de memoria.`]})}),`\n`,_jsx(ParamField,{body:`start`,type:`string`,id:`param-start`,children:_jsx(_components.p,{children:`El comando de inicio de la aplicación.`})}),`\n`,_jsx(ParamField,{body:`build`,type:`string`,id:`param-build`,children:_jsxs(_components.p,{children:[`Un comando de build opcional, de hasta 512 caracteres (por ejemplo, `,_jsx(_components.code,{children:`npm run build`}),`). Se ejecuta después de\ninstalar las dependencias y antes de que la aplicación arranque, en un entorno de build aislado: 2× la RAM de la\naplicación (mínimo 1.024 MB, máximo 4.096 MB) con un tiempo límite de 10 minutos. Las `,_jsx(_components.code,{children:`devDependencies`}),` se\ninstalan cuando hay un comando de build. Disponible en todos los planes. Consulta\n`,_jsx(_components.a,{href:`/es-es/api-reference/endpoint/apps/updateconfig`,children:`Actualizar configuración de la aplicación`}),` para cambiarlo más adelante.`]})}),`\n`,_jsx(ParamField,{body:`main`,type:`string`,id:`param-main`,children:_jsxs(_components.p,{children:[`El archivo principal de la aplicación. Es obligatorio con `,_jsx(_components.code,{children:`file`}),`; con `,_jsx(_components.code,{children:`snapshot_id`}),` es opcional y, si no se envía,\nse usa el `,_jsx(_components.code,{children:`vertracloud.config`}),` del snapshot.`]})}),`\n`,_jsx(ParamField,{body:`language`,type:`string`,id:`param-language`,children:_jsxs(_components.p,{children:[`Opcional. Fuerza el lenguaje de ejecución en lugar de detectarlo a partir del proyecto: uno de `,_jsx(_components.code,{children:`javascript`}),`,\n`,_jsx(_components.code,{children:`typescript`}),`, `,_jsx(_components.code,{children:`bun`}),`, `,_jsx(_components.code,{children:`python`}),`, `,_jsx(_components.code,{children:`static`}),`, `,_jsx(_components.code,{children:`php`}),`, `,_jsx(_components.code,{children:`go`}),`, `,_jsx(_components.code,{children:`ruby`}),`, `,_jsx(_components.code,{children:`java`}),`, `,_jsx(_components.code,{children:`rust`}),`, `,_jsx(_components.code,{children:`deno`}),`, `,_jsx(_components.code,{children:`dotnet`}),`, `,_jsx(_components.code,{children:`elixir`}),`.\nPrecedencia: este campo, después `,_jsx(_components.code,{children:`LANGUAGE=`}),` en `,_jsx(_components.code,{children:`vertracloud.config`}),`, y por último la detección. Cualquier otro\nvalor se rechaza con `,_jsx(_components.code,{children:`INVALID_LANGUAGE`}),`.`]})}),`\n`,_jsx(ParamField,{body:`version`,type:`string`,id:`param-version`,children:_jsxs(_components.p,{children:[`Obligatoria con `,_jsx(_components.code,{children:`file`}),`; con `,_jsx(_components.code,{children:`snapshot_id`}),` se usa la versión del `,_jsx(_components.code,{children:`vertracloud.config`}),` del snapshot. La versión del\nruntime de la aplicación: `,_jsx(_components.code,{children:`recommended`}),`, `,_jsx(_components.code,{children:`latest`}),` o una versión concreta soportada por el runtime detectado\n(por ejemplo, `,_jsx(_components.code,{children:`22`}),`).`]})}),`\n`,_jsx(ParamField,{body:`name`,type:`string`,required:true,id:`param-name`,children:_jsx(_components.p,{children:`El nombre visible de la aplicación. Máximo 50 caracteres.`})}),`\n`,_jsx(ParamField,{body:`description`,type:`string`,id:`param-description`,children:_jsx(_components.p,{children:`Una descripción de la aplicación.`})}),`\n`,_jsx(ParamField,{body:`workspace_id`,type:`string`,id:`param-workspace-id`,children:_jsx(_components.p,{children:`El ID del workspace que se asocia a la aplicación, si aplica.`})}),`\n`,_jsxs(ParamField,{body:`subdomain`,type:`string`,id:`param-subdomain`,children:[_jsxs(_components.p,{children:[`El subdominio de la aplicación (por ejemplo, `,_jsx(_components.code,{children:`miapp`}),`). Los espacios se reemplazan por `,_jsx(_components.code,{children:`-`}),` y el valor se pasa a\nminúsculas antes de validarlo; el formato aceptado es `,_jsx(_components.code,{children:`^[a-z0-9-]+$`}),`. Envía `,_jsx(_components.code,{children:`random`}),` para que la plataforma elija\nuno por ti. Omite el campo por completo para crear una aplicación privada, sin publicación web; más adelante puedes\nactivarla con `,_jsx(_components.a,{href:`/es-es/api-reference/endpoint/apps/network/publish`,children:`Publicar aplicación en la web`}),`.`]}),_jsx(_components.p,{children:`Requiere que el plan admita la publicación web.`})]}),`\n`,_jsx(ParamField,{body:`envs`,type:`string`,id:`param-envs`,children:_jsxs(_components.p,{children:[`Una cadena JSON con un array de variables de entorno, cada una con `,_jsx(_components.code,{children:`key`}),`, `,_jsx(_components.code,{children:`value`}),` y un `,_jsx(_components.code,{children:`note`}),` opcional. Longitud\nmáxima de la clave 255, del valor 3072 y de la nota 50.`]})}),`\n`,_jsx(Heading,{level:`3`,id:`respuesta`,children:`Respuesta`}),`\n`,_jsxs(_components.p,{children:[`La creación es asíncrona: la respuesta es `,_jsx(_components.code,{children:`202 Accepted`}),` con la aplicación en `,_jsx(_components.code,{children:`status: \"building\"`}),`. Después, consulta los\n`,_jsx(_components.a,{href:`/es-es/api-reference/endpoint/apps/get`,children:`Detalles de la aplicación`}),` o los `,_jsx(_components.a,{href:`/es-es/api-reference/endpoint/apps/realtime`,children:`logs en tiempo real`}),`\nhasta que `,_jsx(_components.code,{children:`status`}),` sea `,_jsx(_components.code,{children:`up`}),` o `,_jsx(_components.code,{children:`down`}),`. Mientras esté en `,_jsx(_components.code,{children:`building`}),`, iniciar, detener, reiniciar, los despliegues de archivos,\nel rollback, los snapshots, las restauraciones y los cambios de configuración responden `,_jsx(_components.code,{children:`409 APP_BUILDING`}),`; eliminar la aplicación\nsí está permitido. Si el build se interrumpe, la aplicación queda en `,_jsx(_components.code,{children:`down`}),` y `,_jsx(_components.code,{children:`BUILD_INTERRUPTED`}),` aparece en sus logs; si la\nplataforma cancela la creación (por ejemplo, porque la cola está llena), la aplicación deja de existir y los Detalles de la\naplicación responden `,_jsx(_components.code,{children:`404`}),`.`]}),`\n`,_jsxs(ResponseField,{name:`response`,type:`object`,id:`param-response`,children:[_jsx(_components.p,{children:`Los detalles de la aplicación creada.`}),_jsxs(Expandable,{title:`Mostrar objeto`,children:[_jsx(ResponseField,{name:`id`,type:`string`,id:`param-id`,children:_jsx(_components.p,{children:`El ID de la aplicación.`})}),_jsx(ResponseField,{name:`owner_id`,type:`string`,id:`param-owner-id`,children:_jsx(_components.p,{children:`El ID del propietario de la aplicación.`})}),_jsx(ResponseField,{name:`owner_plan`,type:`string | null`,id:`param-owner-plan`,children:_jsxs(_components.p,{children:[`El nombre del plan del propietario (por ejemplo, `,_jsx(_components.code,{children:`pro`}),` o `,_jsx(_components.code,{children:`enterprise-8`}),`), o `,_jsx(_components.code,{children:`null`}),` cuando el propietario no tiene plan.`]})}),_jsx(ResponseField,{name:`name`,type:`string`,id:`param-name-1`,children:_jsx(_components.p,{children:`El nombre de la aplicación.`})}),_jsx(ResponseField,{name:`description`,type:`string`,id:`param-description-1`,children:_jsx(_components.p,{children:`La descripción de la aplicación.`})}),_jsx(ResponseField,{name:`cluster`,type:`integer`,id:`param-cluster`,children:_jsx(_components.p,{children:`El ID del clúster de la aplicación.`})}),_jsx(ResponseField,{name:`status`,type:`string`,id:`param-status`,children:_jsxs(_components.p,{children:[`El estado de la aplicación. La creación responde `,_jsx(_components.code,{children:`202 Accepted`}),` con `,_jsx(_components.code,{children:`building`}),`; la instalación y el build continúan en\nsegundo plano. Cuando terminan, el estado pasa a `,_jsx(_components.code,{children:`up`}),`, o a `,_jsx(_components.code,{children:`down`}),` si fallaron la instalación de dependencias o el\ncomando `,_jsx(_components.code,{children:`build`}),` (la salida está en los logs, así que puedes corregir los archivos y volver a iniciar sin subirlos de nuevo).`]})}),_jsx(ResponseField,{name:`last_build_error`,type:`string | null`,id:`param-last-build-error`,children:_jsxs(_components.p,{children:[`El código del último fallo de build o de instalación, o `,_jsx(_components.code,{children:`null`}),` tras un build correcto. Uno de `,_jsx(_components.code,{children:`BUILD_FAILED`}),`,\n`,_jsx(_components.code,{children:`BUILD_TIMEOUT`}),`, `,_jsx(_components.code,{children:`BUILD_INTERRUPTED`}),`, `,_jsx(_components.code,{children:`INSTALL_FAILED`}),`, `,_jsx(_components.code,{children:`INSTALL_OUT_OF_MEMORY`}),`, `,_jsx(_components.code,{children:`INSTALL_TIMEOUT`}),` o\n`,_jsx(_components.code,{children:`INSTALL_SHIELD_BLOCKED`}),`. El detalle está en los logs de la aplicación; consulta `,_jsx(_components.a,{href:`/es-es/api-reference/errors#c%C3%B3digos-de-fallo-del-build`,children:`Errores`}),`\npara saber qué hacer con cada código.`]})}),_jsx(ResponseField,{name:`ram`,type:`integer`,id:`param-ram`,children:_jsx(_components.p,{children:`La RAM de la aplicación, en MB.`})}),_jsx(ResponseField,{name:`type`,type:`integer`,id:`param-type`,children:_jsx(_components.p,{children:`El tipo de aplicación.`})}),_jsx(ResponseField,{name:`language`,type:`string`,id:`param-language-1`,children:_jsxs(_components.p,{children:[`El lenguaje de programación de la aplicación (por ejemplo, `,_jsx(_components.code,{children:`javascript`}),`, `,_jsx(_components.code,{children:`deno`}),`, `,_jsx(_components.code,{children:`dotnet`}),`, `,_jsx(_components.code,{children:`elixir`}),`).`]})}),_jsx(ResponseField,{name:`subdomain`,type:`string | null`,id:`param-subdomain-1`,children:_jsx(_components.p,{children:`El subdominio de la aplicación, si aplica.`})}),_jsx(ResponseField,{name:`domains`,type:`APIApplicationDomain[]`,id:`param-domains`,children:_jsxs(_components.p,{children:[`Los dominios personalizados de la aplicación. Siempre está vacío justo después de crearla; añádelos con\n`,_jsx(_components.a,{href:`/es-es/api-reference/endpoint/apps/domains/create`,children:`Añadir dominio a la aplicación`}),`.`]})}),_jsx(ResponseField,{name:`created_at`,type:`string`,format:`date-time`,id:`param-created-at`,children:_jsx(_components.p,{children:`La fecha y hora en que se creó la aplicación.`})}),_jsx(ResponseField,{name:`updated_at`,type:`string`,format:`date-time`,id:`param-updated-at`,children:_jsx(_components.p,{children:`La fecha y hora de la última actualización de la aplicación.`})}),_jsx(ResponseField,{name:`last_snapshot`,type:`string | null`,format:`date-time`,id:`param-last-snapshot`,children:_jsx(_components.p,{children:`La fecha y hora del último snapshot de la aplicación.`})}),_jsx(ResponseField,{name:`main_file`,type:`string`,id:`param-main-file`,children:_jsx(_components.p,{children:`El archivo principal de la aplicación.`})}),_jsx(ResponseField,{name:`version`,type:`string`,id:`param-version-1`,children:_jsxs(_components.p,{children:[`La versión del runtime (por ejemplo, `,_jsx(_components.code,{children:`recommended`}),` o `,_jsx(_components.code,{children:`latest`}),`).`]})}),_jsx(ResponseField,{name:`start_command`,type:`string | null`,id:`param-start-command`,children:_jsx(_components.p,{children:`El comando de inicio de la aplicación, si se ha indicado.`})}),_jsx(ResponseField,{name:`build_command`,type:`string | null`,id:`param-build-command`,children:_jsx(_components.p,{children:`El comando de build, si se ha indicado. Se ejecuta después de instalar las dependencias y antes de que la aplicación arranque.`})}),_jsx(ResponseField,{name:`offline_since`,type:`string | null`,format:`date-time`,id:`param-offline-since`,children:_jsx(_components.p,{children:`La fecha y hora desde la que la aplicación está fuera de línea, si aplica.`})}),_jsx(ResponseField,{name:`shield_cooldown`,type:`object | null`,id:`param-shield-cooldown`,children:_jsxs(_components.p,{children:[`Presente mientras Vertra Shield ha pausado la aplicación. Incluye `,_jsx(_components.code,{children:`until`}),` (fin de la pausa), `,_jsx(_components.code,{children:`reason`}),` (`,_jsx(_components.code,{children:`burst`}),` o\n`,_jsx(_components.code,{children:`rate_limit`}),`) y `,_jsx(_components.code,{children:`direction`}),` (`,_jsx(_components.code,{children:`in`}),` o `,_jsx(_components.code,{children:`out`}),`); `,_jsx(_components.code,{children:`null`}),` cuando no hay ninguna pausa activa.`]})}),_jsx(ResponseField,{name:`github`,type:`object | null`,id:`param-github`,children:_jsxs(_components.p,{children:[`Repositorio de GitHub vinculado (`,_jsx(_components.code,{children:`repo_owner`}),`, `,_jsx(_components.code,{children:`repo_name`}),`) cuando el despliegue automático está conectado; `,_jsx(_components.code,{children:`null`}),`\ncuando la aplicación se creó desde un ZIP o un snapshot. La URL del webhook no se incluye: para obtenerla usa\n`,_jsx(_components.code,{children:`GET /v1/apps/{id}/deploys/webhook`}),`.`]})}),_jsxs(ResponseField,{name:`custom_image`,type:`object | null`,id:`param-custom-image`,children:[_jsxs(_components.p,{children:[`La imagen Docker personalizada desde la que se ejecuta la aplicación; `,_jsx(_components.code,{children:`null`}),` en una aplicación normal. Con una imagen,\n`,_jsx(_components.code,{children:`language`}),`, `,_jsx(_components.code,{children:`version`}),`, `,_jsx(_components.code,{children:`main_file`}),`, `,_jsx(_components.code,{children:`start_command`}),` y `,_jsx(_components.code,{children:`build_command`}),` no se aplican: vienen de la imagen. Consulta\n`,_jsx(_components.a,{href:`/es-es/guides/custom-docker-images`,children:`Imágenes Docker personalizadas`}),`.`]}),_jsxs(Expandable,{title:`Propiedades de custom_image`,children:[_jsx(ResponseField,{name:`image_id`,type:`string`,id:`param-image-id`,children:_jsxs(_components.p,{children:[`El ID de la imagen. `,_jsx(_components.code,{children:`id`}),` y `,_jsx(_components.code,{children:`name`}),` de este objeto son los de la aplicación, no los de la imagen.`]})}),_jsx(ResponseField,{name:`port`,type:`integer | null`,id:`param-port`,children:_jsxs(_components.p,{children:[`El puerto en el que escucha la aplicación y al que la plataforma envía el tráfico; `,_jsx(_components.code,{children:`null`}),` para una aplicación sin tráfico web.`]})}),_jsx(ResponseField,{name:`version_id`,type:`string | null`,id:`param-version-id`,children:_jsxs(_components.p,{children:[`La versión de la imagen que ejecuta la aplicación, o `,_jsx(_components.code,{children:`null`}),` si todavía no se ha iniciado en ninguna versión.`]})}),_jsx(ResponseField,{name:`outdated`,type:`boolean`,id:`param-outdated`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`true`}),` cuando la imagen tiene una versión más nueva que la que ejecuta la aplicación. Pasará a ella en el siguiente reinicio o despliegue que pidas.`]})})]})]}),_jsxs(ResponseField,{name:`deploy`,type:`object`,id:`param-deploy`,children:[_jsx(_components.p,{children:`Cómo un despliegue reemplaza la versión en ejecución y qué ocurre si falla.`}),_jsxs(Expandable,{title:`Propiedades de deploy`,children:[_jsx(ResponseField,{name:`zero_downtime`,type:`string`,id:`param-zero-downtime`,children:_jsxs(_components.p,{children:[`La opción guardada: `,_jsx(_components.code,{children:`off`}),` (la predeterminada), `,_jsx(_components.code,{children:`auto`}),` u `,_jsx(_components.code,{children:`on`}),`. Cámbiala con `,_jsx(_components.a,{href:`/es-es/api-reference/endpoint/apps/updateconfig`,children:`Actualizar configuración de la aplicación`}),`.`]})}),_jsx(ResponseField,{name:`zero_downtime_active`,type:`boolean`,id:`param-zero-downtime-active`,children:_jsxs(_components.p,{children:[`Lo que se aplica al siguiente reinicio o despliegue: `,_jsx(_components.code,{children:`true`}),` en Enterprise cuando `,_jsx(_components.code,{children:`zero_downtime`}),` es `,_jsx(_components.code,{children:`on`}),`, o cuando es `,_jsx(_components.code,{children:`auto`}),` y la aplicación recibe tráfico web.`]})}),_jsx(ResponseField,{name:`auto_rollback`,type:`boolean`,id:`param-auto-rollback`,children:_jsxs(_components.p,{children:[`La opción guardada, `,_jsx(_components.code,{children:`false`}),` por defecto. Devuelve el valor guardado en cualquier plan, pero solo tiene efecto desde Intermediary.`]})}),_jsx(ResponseField,{name:`health_check_path`,type:`string | null`,id:`param-health-check-path`,children:_jsxs(_components.p,{children:[`La ruta HTTP a la que se llama en una versión nueva para comprobar que está sana. `,_jsx(_components.code,{children:`null`}),` significa `,_jsx(_components.code,{children:`/`}),`.`]})})]})]}),_jsx(ResponseField,{name:`warning`,type:`string`,id:`param-warning`,children:_jsxs(_components.p,{children:[`Solo cuando creas desde el snapshot de una aplicación que ejecuta una imagen Docker personalizada y la versión de la imagen registrada en el snapshot ya no existe: `,_jsx(_components.code,{children:`IMAGE_VERSION_NOT_FOUND`}),`. La aplicación se crea con la versión actual de la imagen.`]})})]})]}),`\n`,`\n`,_jsx(Heading,{level:`3`,id:`respuestas-de-error`,children:`Respuestas de error`}),`\n`,_jsxs(ResponseField,{name:`code`,type:`string`,id:`param-code`,children:[_jsx(_components.p,{children:`El código de error que indica el motivo del fallo. Valores posibles:`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`VALIDATION_ERROR`}),`: El cuerpo multipart no superó la validación (`,_jsx(_components.code,{children:`400`}),`). La respuesta incluye también `,_jsx(_components.code,{children:`message`}),` y `,_jsx(_components.code,{children:`path`}),`, que apuntan al campo con el problema.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`USER_NOT_FOUND`}),`: No se pudo resolver el usuario autenticado (`,_jsx(_components.code,{children:`401`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`MAX_APPS_REACHED`}),`: Se alcanzó el límite de aplicaciones del plan (`,_jsx(_components.code,{children:`403`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`INVALID_ZIP`}),`: El archivo subido no es un ZIP legible (truncado o dañado) (`,_jsx(_components.code,{children:`400`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`MAIN_FILE_NOT_FOUND`}),`: El archivo indicado en `,_jsx(_components.code,{children:`main`}),` no existe dentro del ZIP (`,_jsx(_components.code,{children:`400`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`ZIP_TOO_SMALL`}),`: El archivo subido pesa menos de 100 bytes (`,_jsx(_components.code,{children:`400`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`FILE_TOO_LARGE`}),`: El archivo subido supera el límite de 100 MB (`,_jsx(_components.code,{children:`400`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`SOURCE_REQUIRED`}),`: No se envió ni `,_jsx(_components.code,{children:`file`}),` ni `,_jsx(_components.code,{children:`snapshot_id`}),` (`,_jsx(_components.code,{children:`400`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`SOURCE_CONFLICT`}),`: Se enviaron `,_jsx(_components.code,{children:`file`}),` y `,_jsx(_components.code,{children:`snapshot_id`}),` a la vez (`,_jsx(_components.code,{children:`400`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`SNAPSHOT_NOT_FOUND`}),`: El `,_jsx(_components.code,{children:`snapshot_id`}),` no existe o no pertenece a quien hace la llamada (`,_jsx(_components.code,{children:`404`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`SNAPSHOT_TYPE_MISMATCH`}),`: El snapshot es de una base de datos, no de una aplicación (`,_jsx(_components.code,{children:`400`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`SNAPSHOT_TOO_LARGE`}),`: El snapshot supera el mismo límite de creación de 100 MB que `,_jsx(_components.code,{children:`file`}),` (`,_jsx(_components.code,{children:`400`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`MEMORY_REQUIRED`}),`: No se envió `,_jsx(_components.code,{children:`memory`}),` y el `,_jsx(_components.code,{children:`vertracloud.config`}),` del snapshot no tiene un `,_jsx(_components.code,{children:`MEMORY`}),` utilizable (`,_jsx(_components.code,{children:`400`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`PLAN_REQUIRED`}),`: El propietario no tiene un plan activo, así que no se puede crear una aplicación nueva, o se pidió un `,_jsx(_components.code,{children:`subdomain`}),` sin plan (`,_jsx(_components.code,{children:`403`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`PLAN_DOES_NOT_SUPPORT_WEB_PUBLISH`}),`: Se pidió un `,_jsx(_components.code,{children:`subdomain`}),`, pero el plan del propietario no incluye la publicación web (`,_jsx(_components.code,{children:`403`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`INVALID_MEMORY_FORMAT`}),`: `,_jsx(_components.code,{children:`memory`}),` no es un número (`,_jsx(_components.code,{children:`400`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`MEMORY_MUST_BE_INTEGER`}),`: `,_jsx(_components.code,{children:`memory`}),` no es un entero (`,_jsx(_components.code,{children:`400`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`MEMORY_BELOW_MINIMUM`}),`: `,_jsx(_components.code,{children:`memory`}),` está por debajo del mínimo para el tipo de aplicación (`,_jsx(_components.code,{children:`400`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`MEMORY_LIMIT_EXCEEDED`}),`: La memoria pedida supera la que aún tiene disponible el plan (`,_jsx(_components.code,{children:`400`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`SUBDOMAIN_TAKEN`}),`: Otra aplicación ya usa ese subdominio (`,_jsx(_components.code,{children:`409`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`SUBDOMAIN_FORBIDDEN`}),`: El subdominio pedido está en la lista de reservados de la plataforma (`,_jsx(_components.code,{children:`400`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`USER_LIMITS_NOT_FOUND`}),`: No se pudo cargar el registro de límites del propietario (`,_jsx(_components.code,{children:`404`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`INVALID_LANGUAGE`}),`: El lenguaje no es compatible o no se pudo determinar (`,_jsx(_components.code,{children:`400`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`DEPLOY_RATE_LIMITED`}),`: Se alcanzó el presupuesto de despliegues por hora del plan de la cuenta (`,_jsx(_components.code,{children:`429`}),`). Consulta la `,_jsx(_components.a,{href:`/es-es/api-reference/introduction`,children:`introducción a la referencia de la API`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`INTERNAL_SERVER_ERROR`}),`: Error inesperado, incluida una aplicación que se creó pero no se pudo leer después (`,_jsx(_components.code,{children:`500`}),`).`]}),`\n`]})]}),`\n`,_jsx(ResponseField,{name:`message`,type:`string`,id:`param-message`,children:_jsxs(_components.p,{children:[`Una descripción detallada con información adicional sobre el error. Presente en `,_jsx(_components.code,{children:`VALIDATION_ERROR`}),`.`]})}),`\n`,`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`Una aplicación creada sin `,_jsx(_components.code,{children:`subdomain`}),` sigue siendo privada. Puedes activar la publicación web más adelante con\n`,_jsx(_components.a,{href:`/es-es/api-reference/endpoint/apps/network/publish`,children:`Publicar aplicación en la web`}),`, y desactivarla con la misma ruta.`]})})]})}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":"Crear aplicación","sidebarTitle":"Crear aplicación","api":"POST https://api.vertracloud.app/v1/apps","authMethod":"bearer","description":"Crea una aplicación nueva con la configuración y los archivos indicados.","href":"/es-es/api-reference/endpoint/apps/create"}}},"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`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Expandable,Heading,Note,ParamField,ResponseExample,ResponseField}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Expandable)_missingMdxReference(`Expandable`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!ParamField)_missingMdxReference(`ParamField`,true);if(!ResponseExample)_missingMdxReference(`ResponseExample`,true);if(!ResponseField)_missingMdxReference(`ResponseField`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`La aplicación tiene `,_jsx(_components.strong,{children:`dos orígenes mutuamente excluyentes`}),`: envía exactamente uno de `,_jsx(_components.code,{children:`file`}),` o\n`,_jsx(_components.code,{children:`snapshot_id`}),`. Si no envías ninguno → `,_jsx(_components.code,{children:`SOURCE_REQUIRED`}),`; si envías los dos → `,_jsx(_components.code,{children:`SOURCE_CONFLICT`}),`.`]}),`\n`,_jsx(ParamField,{body:`file`,type:`file`,id:`param-file`,children:_jsxs(_components.p,{children:[`El archivo ZIP con el código de la aplicación (tamaño máximo: 100 MB). No se envía cuando el origen es\n`,_jsx(_components.code,{children:`snapshot_id`}),`.`]})}),`\n`,_jsx(ParamField,{body:`snapshot_id`,type:`string`,id:`param-snapshot-id`,children:_jsxs(_components.p,{children:[`Origen alternativo a `,_jsx(_components.code,{children:`file`}),`: el ID de un snapshot de `,_jsx(_components.strong,{children:`aplicación`}),` desde el que crear la aplicación. La\nplataforma descarga el snapshot (que ya incluye el `,_jsx(_components.code,{children:`vertracloud.config`}),`) y construye la aplicación a partir de él.\nSe envía como campo de texto del cuerpo multipart; tiene el mismo límite de tamaño que `,_jsx(_components.code,{children:`file`}),` (100 MB).`]})}),`\n`,_jsx(ParamField,{body:`memory`,type:`string`,id:`param-memory`,children:_jsxs(_components.p,{children:[`La cantidad de RAM que se asigna a la aplicación, en MB. Mínimo 100 MB. Es obligatoria con `,_jsx(_components.code,{children:`file`}),`; con\n`,_jsx(_components.code,{children:`snapshot_id`}),` es opcional y, si no se envía, se usa el `,_jsx(_components.code,{children:`vertracloud.config`}),` del snapshot. Cuando se pide un\n`,_jsx(_components.code,{children:`subdomain`}),`, el valor sube automáticamente a al menos 512 MB: las aplicaciones web tienen su propio mínimo de memoria.`]})}),`\n`,_jsx(ParamField,{body:`start`,type:`string`,id:`param-start`,children:_jsx(_components.p,{children:`El comando de inicio de la aplicación.`})}),`\n`,_jsx(ParamField,{body:`build`,type:`string`,id:`param-build`,children:_jsxs(_components.p,{children:[`Un comando de build opcional, de hasta 512 caracteres (por ejemplo, `,_jsx(_components.code,{children:`npm run build`}),`). Se ejecuta después de\ninstalar las dependencias y antes de que la aplicación arranque, en un entorno de build aislado: 2× la RAM de la\naplicación (mínimo 1.024 MB, máximo 4.096 MB) con un tiempo límite de 10 minutos. Las `,_jsx(_components.code,{children:`devDependencies`}),` se\ninstalan cuando hay un comando de build. Disponible en todos los planes. Consulta\n`,_jsx(_components.a,{href:`/es-es/api-reference/endpoint/apps/updateconfig`,children:`Actualizar configuración de la aplicación`}),` para cambiarlo más adelante.`]})}),`\n`,_jsx(ParamField,{body:`main`,type:`string`,id:`param-main`,children:_jsxs(_components.p,{children:[`El archivo principal de la aplicación. Es obligatorio con `,_jsx(_components.code,{children:`file`}),`; con `,_jsx(_components.code,{children:`snapshot_id`}),` es opcional y, si no se envía,\nse usa el `,_jsx(_components.code,{children:`vertracloud.config`}),` del snapshot.`]})}),`\n`,_jsx(ParamField,{body:`language`,type:`string`,id:`param-language`,children:_jsxs(_components.p,{children:[`Opcional. Fuerza el lenguaje de ejecución en lugar de detectarlo a partir del proyecto: uno de `,_jsx(_components.code,{children:`javascript`}),`,\n`,_jsx(_components.code,{children:`typescript`}),`, `,_jsx(_components.code,{children:`bun`}),`, `,_jsx(_components.code,{children:`python`}),`, `,_jsx(_components.code,{children:`static`}),`, `,_jsx(_components.code,{children:`php`}),`, `,_jsx(_components.code,{children:`go`}),`, `,_jsx(_components.code,{children:`ruby`}),`, `,_jsx(_components.code,{children:`java`}),`, `,_jsx(_components.code,{children:`rust`}),`, `,_jsx(_components.code,{children:`deno`}),`, `,_jsx(_components.code,{children:`dotnet`}),`, `,_jsx(_components.code,{children:`elixir`}),`.\nPrecedencia: este campo, después `,_jsx(_components.code,{children:`LANGUAGE=`}),` en `,_jsx(_components.code,{children:`vertracloud.config`}),`, y por último la detección. Cualquier otro\nvalor se rechaza con `,_jsx(_components.code,{children:`INVALID_LANGUAGE`}),`.`]})}),`\n`,_jsx(ParamField,{body:`version`,type:`string`,id:`param-version`,children:_jsxs(_components.p,{children:[`Obligatoria con `,_jsx(_components.code,{children:`file`}),`; con `,_jsx(_components.code,{children:`snapshot_id`}),` se usa la versión del `,_jsx(_components.code,{children:`vertracloud.config`}),` del snapshot. La versión del\nruntime de la aplicación: `,_jsx(_components.code,{children:`recommended`}),`, `,_jsx(_components.code,{children:`latest`}),` o una versión concreta soportada por el runtime detectado\n(por ejemplo, `,_jsx(_components.code,{children:`22`}),`).`]})}),`\n`,_jsx(ParamField,{body:`name`,type:`string`,required:true,id:`param-name`,children:_jsx(_components.p,{children:`El nombre visible de la aplicación. Máximo 50 caracteres.`})}),`\n`,_jsx(ParamField,{body:`description`,type:`string`,id:`param-description`,children:_jsx(_components.p,{children:`Una descripción de la aplicación.`})}),`\n`,_jsx(ParamField,{body:`workspace_id`,type:`string`,id:`param-workspace-id`,children:_jsx(_components.p,{children:`El ID del workspace que se asocia a la aplicación, si aplica.`})}),`\n`,_jsxs(ParamField,{body:`subdomain`,type:`string`,id:`param-subdomain`,children:[_jsxs(_components.p,{children:[`El subdominio de la aplicación (por ejemplo, `,_jsx(_components.code,{children:`miapp`}),`). Los espacios se reemplazan por `,_jsx(_components.code,{children:`-`}),` y el valor se pasa a\nminúsculas antes de validarlo; el formato aceptado es `,_jsx(_components.code,{children:`^[a-z0-9-]+$`}),`. Envía `,_jsx(_components.code,{children:`random`}),` para que la plataforma elija\nuno por ti. Omite el campo por completo para crear una aplicación privada, sin publicación web; más adelante puedes\nactivarla con `,_jsx(_components.a,{href:`/es-es/api-reference/endpoint/apps/network/publish`,children:`Publicar aplicación en la web`}),`.`]}),_jsx(_components.p,{children:`Requiere que el plan admita la publicación web.`})]}),`\n`,_jsx(ParamField,{body:`envs`,type:`string`,id:`param-envs`,children:_jsxs(_components.p,{children:[`Una cadena JSON con un array de variables de entorno, cada una con `,_jsx(_components.code,{children:`key`}),`, `,_jsx(_components.code,{children:`value`}),` y un `,_jsx(_components.code,{children:`note`}),` opcional. Longitud\nmáxima de la clave 255, del valor 3072 y de la nota 50.`]})}),`\n`,_jsx(Heading,{level:`3`,id:`respuesta`,children:`Respuesta`}),`\n`,_jsxs(_components.p,{children:[`La creación es asíncrona: la respuesta es `,_jsx(_components.code,{children:`202 Accepted`}),` con la aplicación en `,_jsx(_components.code,{children:`status: \"building\"`}),`. Después, consulta los\n`,_jsx(_components.a,{href:`/es-es/api-reference/endpoint/apps/get`,children:`Detalles de la aplicación`}),` o los `,_jsx(_components.a,{href:`/es-es/api-reference/endpoint/apps/realtime`,children:`logs en tiempo real`}),`\nhasta que `,_jsx(_components.code,{children:`status`}),` sea `,_jsx(_components.code,{children:`up`}),` o `,_jsx(_components.code,{children:`down`}),`. Mientras esté en `,_jsx(_components.code,{children:`building`}),`, iniciar, detener, reiniciar, los despliegues de archivos,\nel rollback, los snapshots, las restauraciones y los cambios de configuración responden `,_jsx(_components.code,{children:`409 APP_BUILDING`}),`; eliminar la aplicación\nsí está permitido. Si el build se interrumpe, la aplicación queda en `,_jsx(_components.code,{children:`down`}),` y `,_jsx(_components.code,{children:`BUILD_INTERRUPTED`}),` aparece en sus logs; si la\nplataforma cancela la creación (por ejemplo, porque la cola está llena), la aplicación deja de existir y los Detalles de la\naplicación responden `,_jsx(_components.code,{children:`404`}),`.`]}),`\n`,_jsxs(ResponseField,{name:`response`,type:`object`,id:`param-response`,children:[_jsx(_components.p,{children:`Los detalles de la aplicación creada.`}),_jsxs(Expandable,{title:`Mostrar objeto`,children:[_jsx(ResponseField,{name:`id`,type:`string`,id:`param-id`,children:_jsx(_components.p,{children:`El ID de la aplicación.`})}),_jsx(ResponseField,{name:`owner_id`,type:`string`,id:`param-owner-id`,children:_jsx(_components.p,{children:`El ID del propietario de la aplicación.`})}),_jsx(ResponseField,{name:`owner_plan`,type:`string | null`,id:`param-owner-plan`,children:_jsxs(_components.p,{children:[`El nombre del plan del propietario (por ejemplo, `,_jsx(_components.code,{children:`pro`}),` o `,_jsx(_components.code,{children:`enterprise-8`}),`), o `,_jsx(_components.code,{children:`null`}),` cuando el propietario no tiene plan.`]})}),_jsx(ResponseField,{name:`name`,type:`string`,id:`param-name-1`,children:_jsx(_components.p,{children:`El nombre de la aplicación.`})}),_jsx(ResponseField,{name:`description`,type:`string`,id:`param-description-1`,children:_jsx(_components.p,{children:`La descripción de la aplicación.`})}),_jsx(ResponseField,{name:`cluster`,type:`integer`,id:`param-cluster`,children:_jsx(_components.p,{children:`El ID del clúster de la aplicación.`})}),_jsx(ResponseField,{name:`status`,type:`string`,id:`param-status`,children:_jsxs(_components.p,{children:[`El estado de la aplicación. La creación responde `,_jsx(_components.code,{children:`202 Accepted`}),` con `,_jsx(_components.code,{children:`building`}),`; la instalación y el build continúan en\nsegundo plano. Cuando terminan, el estado pasa a `,_jsx(_components.code,{children:`up`}),`, o a `,_jsx(_components.code,{children:`down`}),` si fallaron la instalación de dependencias o el\ncomando `,_jsx(_components.code,{children:`build`}),` (la salida está en los logs, así que puedes corregir los archivos y volver a iniciar sin subirlos de nuevo).`]})}),_jsx(ResponseField,{name:`last_build_error`,type:`string | null`,id:`param-last-build-error`,children:_jsxs(_components.p,{children:[`El código del último fallo de build o de instalación, o `,_jsx(_components.code,{children:`null`}),` tras un build correcto. Uno de `,_jsx(_components.code,{children:`BUILD_FAILED`}),`,\n`,_jsx(_components.code,{children:`BUILD_TIMEOUT`}),`, `,_jsx(_components.code,{children:`BUILD_INTERRUPTED`}),`, `,_jsx(_components.code,{children:`INSTALL_FAILED`}),`, `,_jsx(_components.code,{children:`INSTALL_OUT_OF_MEMORY`}),`, `,_jsx(_components.code,{children:`INSTALL_TIMEOUT`}),` o\n`,_jsx(_components.code,{children:`INSTALL_SHIELD_BLOCKED`}),`. El detalle está en los logs de la aplicación; consulta `,_jsx(_components.a,{href:`/es-es/api-reference/errors#c%C3%B3digos-de-fallo-del-build`,children:`Errores`}),`\npara saber qué hacer con cada código.`]})}),_jsx(ResponseField,{name:`ram`,type:`integer`,id:`param-ram`,children:_jsx(_components.p,{children:`La RAM de la aplicación, en MB.`})}),_jsx(ResponseField,{name:`type`,type:`integer`,id:`param-type`,children:_jsx(_components.p,{children:`El tipo de aplicación.`})}),_jsx(ResponseField,{name:`language`,type:`string`,id:`param-language-1`,children:_jsxs(_components.p,{children:[`El lenguaje de programación de la aplicación (por ejemplo, `,_jsx(_components.code,{children:`javascript`}),`, `,_jsx(_components.code,{children:`deno`}),`, `,_jsx(_components.code,{children:`dotnet`}),`, `,_jsx(_components.code,{children:`elixir`}),`).`]})}),_jsx(ResponseField,{name:`subdomain`,type:`string | null`,id:`param-subdomain-1`,children:_jsx(_components.p,{children:`El subdominio de la aplicación, si aplica.`})}),_jsx(ResponseField,{name:`domains`,type:`APIApplicationDomain[]`,id:`param-domains`,children:_jsxs(_components.p,{children:[`Los dominios personalizados de la aplicación. Siempre está vacío justo después de crearla; añádelos con\n`,_jsx(_components.a,{href:`/es-es/api-reference/endpoint/apps/domains/create`,children:`Añadir dominio a la aplicación`}),`.`]})}),_jsx(ResponseField,{name:`created_at`,type:`string`,format:`date-time`,id:`param-created-at`,children:_jsx(_components.p,{children:`La fecha y hora en que se creó la aplicación.`})}),_jsx(ResponseField,{name:`updated_at`,type:`string`,format:`date-time`,id:`param-updated-at`,children:_jsx(_components.p,{children:`La fecha y hora de la última actualización de la aplicación.`})}),_jsx(ResponseField,{name:`last_snapshot`,type:`string | null`,format:`date-time`,id:`param-last-snapshot`,children:_jsx(_components.p,{children:`La fecha y hora del último snapshot de la aplicación.`})}),_jsx(ResponseField,{name:`main_file`,type:`string`,id:`param-main-file`,children:_jsx(_components.p,{children:`El archivo principal de la aplicación.`})}),_jsx(ResponseField,{name:`version`,type:`string`,id:`param-version-1`,children:_jsxs(_components.p,{children:[`La versión del runtime (por ejemplo, `,_jsx(_components.code,{children:`recommended`}),` o `,_jsx(_components.code,{children:`latest`}),`).`]})}),_jsx(ResponseField,{name:`start_command`,type:`string | null`,id:`param-start-command`,children:_jsx(_components.p,{children:`El comando de inicio de la aplicación, si se ha indicado.`})}),_jsx(ResponseField,{name:`build_command`,type:`string | null`,id:`param-build-command`,children:_jsx(_components.p,{children:`El comando de build, si se ha indicado. Se ejecuta después de instalar las dependencias y antes de que la aplicación arranque.`})}),_jsx(ResponseField,{name:`offline_since`,type:`string | null`,format:`date-time`,id:`param-offline-since`,children:_jsx(_components.p,{children:`La fecha y hora desde la que la aplicación está fuera de línea, si aplica.`})}),_jsx(ResponseField,{name:`shield_cooldown`,type:`object | null`,id:`param-shield-cooldown`,children:_jsxs(_components.p,{children:[`Presente mientras Vertra Shield ha pausado la aplicación. Incluye `,_jsx(_components.code,{children:`until`}),` (fin de la pausa), `,_jsx(_components.code,{children:`reason`}),` (`,_jsx(_components.code,{children:`burst`}),` o\n`,_jsx(_components.code,{children:`rate_limit`}),`) y `,_jsx(_components.code,{children:`direction`}),` (`,_jsx(_components.code,{children:`in`}),` o `,_jsx(_components.code,{children:`out`}),`); `,_jsx(_components.code,{children:`null`}),` cuando no hay ninguna pausa activa.`]})}),_jsx(ResponseField,{name:`github`,type:`object | null`,id:`param-github`,children:_jsxs(_components.p,{children:[`Repositorio de GitHub vinculado (`,_jsx(_components.code,{children:`repo_owner`}),`, `,_jsx(_components.code,{children:`repo_name`}),`) cuando el despliegue automático está conectado; `,_jsx(_components.code,{children:`null`}),`\ncuando la aplicación se creó desde un ZIP o un snapshot. La URL del webhook no se incluye: para obtenerla usa\n`,_jsx(_components.code,{children:`GET /v1/apps/{id}/deploys/webhook`}),`.`]})}),_jsxs(ResponseField,{name:`custom_image`,type:`object | null`,id:`param-custom-image`,children:[_jsxs(_components.p,{children:[`La imagen Docker personalizada desde la que se ejecuta la aplicación; `,_jsx(_components.code,{children:`null`}),` en una aplicación normal. Con una imagen,\n`,_jsx(_components.code,{children:`language`}),`, `,_jsx(_components.code,{children:`version`}),`, `,_jsx(_components.code,{children:`main_file`}),`, `,_jsx(_components.code,{children:`start_command`}),` y `,_jsx(_components.code,{children:`build_command`}),` no se aplican: vienen de la imagen. Consulta\n`,_jsx(_components.a,{href:`/es-es/guides/custom-docker-images`,children:`Imágenes Docker personalizadas`}),`.`]}),_jsxs(Expandable,{title:`Propiedades de custom_image`,children:[_jsx(ResponseField,{name:`image_id`,type:`string`,id:`param-image-id`,children:_jsxs(_components.p,{children:[`El ID de la imagen. `,_jsx(_components.code,{children:`id`}),` y `,_jsx(_components.code,{children:`name`}),` de este objeto son los de la aplicación, no los de la imagen.`]})}),_jsx(ResponseField,{name:`port`,type:`integer | null`,id:`param-port`,children:_jsxs(_components.p,{children:[`El puerto en el que escucha la aplicación y al que la plataforma envía el tráfico; `,_jsx(_components.code,{children:`null`}),` para una aplicación sin tráfico web.`]})}),_jsx(ResponseField,{name:`version_id`,type:`string | null`,id:`param-version-id`,children:_jsxs(_components.p,{children:[`La versión de la imagen que ejecuta la aplicación, o `,_jsx(_components.code,{children:`null`}),` si todavía no se ha iniciado en ninguna versión.`]})}),_jsx(ResponseField,{name:`outdated`,type:`boolean`,id:`param-outdated`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`true`}),` cuando la imagen tiene una versión más nueva que la que ejecuta la aplicación. Pasará a ella en el siguiente reinicio o despliegue que pidas.`]})})]})]}),_jsxs(ResponseField,{name:`deploy`,type:`object`,id:`param-deploy`,children:[_jsx(_components.p,{children:`Cómo un despliegue reemplaza la versión en ejecución y qué ocurre si falla.`}),_jsxs(Expandable,{title:`Propiedades de deploy`,children:[_jsx(ResponseField,{name:`zero_downtime`,type:`string`,id:`param-zero-downtime`,children:_jsxs(_components.p,{children:[`La opción guardada: `,_jsx(_components.code,{children:`off`}),` (la predeterminada), `,_jsx(_components.code,{children:`auto`}),` u `,_jsx(_components.code,{children:`on`}),`. Cámbiala con `,_jsx(_components.a,{href:`/es-es/api-reference/endpoint/apps/updateconfig`,children:`Actualizar configuración de la aplicación`}),`.`]})}),_jsx(ResponseField,{name:`zero_downtime_active`,type:`boolean`,id:`param-zero-downtime-active`,children:_jsxs(_components.p,{children:[`Lo que se aplica al siguiente reinicio o despliegue: `,_jsx(_components.code,{children:`true`}),` en Enterprise cuando `,_jsx(_components.code,{children:`zero_downtime`}),` es `,_jsx(_components.code,{children:`on`}),`, o cuando es `,_jsx(_components.code,{children:`auto`}),` y la aplicación recibe tráfico web.`]})}),_jsx(ResponseField,{name:`auto_rollback`,type:`boolean`,id:`param-auto-rollback`,children:_jsxs(_components.p,{children:[`La opción guardada, `,_jsx(_components.code,{children:`false`}),` por defecto. Devuelve el valor guardado en cualquier plan, pero solo tiene efecto desde Intermediary.`]})}),_jsx(ResponseField,{name:`health_check_path`,type:`string | null`,id:`param-health-check-path`,children:_jsxs(_components.p,{children:[`La ruta HTTP a la que se llama en una versión nueva para comprobar que está sana. `,_jsx(_components.code,{children:`null`}),` significa `,_jsx(_components.code,{children:`/`}),`.`]})})]})]}),_jsx(ResponseField,{name:`warning`,type:`string`,id:`param-warning`,children:_jsxs(_components.p,{children:[`Solo cuando creas desde el snapshot de una aplicación que ejecuta una imagen Docker personalizada y la versión de la imagen registrada en el snapshot ya no existe: `,_jsx(_components.code,{children:`IMAGE_VERSION_NOT_FOUND`}),`. La aplicación se crea con la versión actual de la imagen.`]})})]})]}),`\n`,_jsx(ResponseExample,{children:_jsx(CodeBlock,{filename:`Response`,numberOfLines:`33`,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:`33`,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:`\"app-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:` \"owner_id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"user-123456789012345678\"`}),_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:` \"owner_plan\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"pro\"`}),_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:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"API Simples\"`}),_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:` \"description\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"I have a description :)\"`}),_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:` \"cluster\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1`}),_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:` \"status\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"building\"`}),_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\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`128`}),_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:` \"type\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`2`}),_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:` \"language\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"javascript\"`}),_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:` \"subdomain\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"myapp.vertraweb.app\"`}),_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:` \"domains\"`}),_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:` \"last_snapshot\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2026-03-20T19:58: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:` \"main_file\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"index.js\"`}),_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:` \"version\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"recommended\"`}),_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:` \"start_command\"`}),_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:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"build_command\"`}),_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:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"offline_since\"`}),_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:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"shield_cooldown\"`}),_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:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"github\"`}),_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:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"custom_image\"`}),_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:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"deploy\"`}),_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:` \"zero_downtime\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"off\"`}),_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:` \"zero_downtime_active\"`}),_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:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"auto_rollback\"`}),_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:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"health_check_path\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`null`})]}),`\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:` \"created_at\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2026-03-20T19:58: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-03-20T19:58: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:`respuestas-de-error`,children:`Respuestas de error`}),`\n`,_jsxs(ResponseField,{name:`code`,type:`string`,id:`param-code`,children:[_jsx(_components.p,{children:`El código de error que indica el motivo del fallo. Valores posibles:`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`VALIDATION_ERROR`}),`: El cuerpo multipart no superó la validación (`,_jsx(_components.code,{children:`400`}),`). La respuesta incluye también `,_jsx(_components.code,{children:`message`}),` y `,_jsx(_components.code,{children:`path`}),`, que apuntan al campo con el problema.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`USER_NOT_FOUND`}),`: No se pudo resolver el usuario autenticado (`,_jsx(_components.code,{children:`401`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`MAX_APPS_REACHED`}),`: Se alcanzó el límite de aplicaciones del plan (`,_jsx(_components.code,{children:`403`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`INVALID_ZIP`}),`: El archivo subido no es un ZIP legible (truncado o dañado) (`,_jsx(_components.code,{children:`400`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`MAIN_FILE_NOT_FOUND`}),`: El archivo indicado en `,_jsx(_components.code,{children:`main`}),` no existe dentro del ZIP (`,_jsx(_components.code,{children:`400`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`ZIP_TOO_SMALL`}),`: El archivo subido pesa menos de 100 bytes (`,_jsx(_components.code,{children:`400`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`FILE_TOO_LARGE`}),`: El archivo subido supera el límite de 100 MB (`,_jsx(_components.code,{children:`400`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`SOURCE_REQUIRED`}),`: No se envió ni `,_jsx(_components.code,{children:`file`}),` ni `,_jsx(_components.code,{children:`snapshot_id`}),` (`,_jsx(_components.code,{children:`400`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`SOURCE_CONFLICT`}),`: Se enviaron `,_jsx(_components.code,{children:`file`}),` y `,_jsx(_components.code,{children:`snapshot_id`}),` a la vez (`,_jsx(_components.code,{children:`400`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`SNAPSHOT_NOT_FOUND`}),`: El `,_jsx(_components.code,{children:`snapshot_id`}),` no existe o no pertenece a quien hace la llamada (`,_jsx(_components.code,{children:`404`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`SNAPSHOT_TYPE_MISMATCH`}),`: El snapshot es de una base de datos, no de una aplicación (`,_jsx(_components.code,{children:`400`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`SNAPSHOT_TOO_LARGE`}),`: El snapshot supera el mismo límite de creación de 100 MB que `,_jsx(_components.code,{children:`file`}),` (`,_jsx(_components.code,{children:`400`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`MEMORY_REQUIRED`}),`: No se envió `,_jsx(_components.code,{children:`memory`}),` y el `,_jsx(_components.code,{children:`vertracloud.config`}),` del snapshot no tiene un `,_jsx(_components.code,{children:`MEMORY`}),` utilizable (`,_jsx(_components.code,{children:`400`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`PLAN_REQUIRED`}),`: El propietario no tiene un plan activo, así que no se puede crear una aplicación nueva, o se pidió un `,_jsx(_components.code,{children:`subdomain`}),` sin plan (`,_jsx(_components.code,{children:`403`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`PLAN_DOES_NOT_SUPPORT_WEB_PUBLISH`}),`: Se pidió un `,_jsx(_components.code,{children:`subdomain`}),`, pero el plan del propietario no incluye la publicación web (`,_jsx(_components.code,{children:`403`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`INVALID_MEMORY_FORMAT`}),`: `,_jsx(_components.code,{children:`memory`}),` no es un número (`,_jsx(_components.code,{children:`400`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`MEMORY_MUST_BE_INTEGER`}),`: `,_jsx(_components.code,{children:`memory`}),` no es un entero (`,_jsx(_components.code,{children:`400`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`MEMORY_BELOW_MINIMUM`}),`: `,_jsx(_components.code,{children:`memory`}),` está por debajo del mínimo para el tipo de aplicación (`,_jsx(_components.code,{children:`400`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`MEMORY_LIMIT_EXCEEDED`}),`: La memoria pedida supera la que aún tiene disponible el plan (`,_jsx(_components.code,{children:`400`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`SUBDOMAIN_TAKEN`}),`: Otra aplicación ya usa ese subdominio (`,_jsx(_components.code,{children:`409`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`SUBDOMAIN_FORBIDDEN`}),`: El subdominio pedido está en la lista de reservados de la plataforma (`,_jsx(_components.code,{children:`400`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`USER_LIMITS_NOT_FOUND`}),`: No se pudo cargar el registro de límites del propietario (`,_jsx(_components.code,{children:`404`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`INVALID_LANGUAGE`}),`: El lenguaje no es compatible o no se pudo determinar (`,_jsx(_components.code,{children:`400`}),`).`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`DEPLOY_RATE_LIMITED`}),`: Se alcanzó el presupuesto de despliegues por hora del plan de la cuenta (`,_jsx(_components.code,{children:`429`}),`). Consulta la `,_jsx(_components.a,{href:`/es-es/api-reference/introduction`,children:`introducción a la referencia de la API`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`INTERNAL_SERVER_ERROR`}),`: Error inesperado, incluida una aplicación que se creó pero no se pudo leer después (`,_jsx(_components.code,{children:`500`}),`).`]}),`\n`]})]}),`\n`,_jsx(ResponseField,{name:`message`,type:`string`,id:`param-message`,children:_jsxs(_components.p,{children:[`Una descripción detallada con información adicional sobre el error. Presente en `,_jsx(_components.code,{children:`VALIDATION_ERROR`}),`.`]})}),`\n`,_jsxs(ResponseExample,{children:[_jsx(CodeBlock,{filename:`Error Response (400)`,numberOfLines:`5`,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:`5`,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:`\"VALIDATION_ERROR\"`}),_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:` \"message\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Main file is required\"`}),_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:` \"path\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"main\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),_jsx(CodeBlock,{filename:`Error Response (400)`,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:`\"MAIN_FILE_NOT_FOUND\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),_jsx(CodeBlock,{filename:`Error Response (403)`,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:`\"PLAN_REQUIRED\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})})]}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`Una aplicación creada sin `,_jsx(_components.code,{children:`subdomain`}),` sigue siendo privada. Puedes activar la publicación web más adelante con\n`,_jsx(_components.a,{href:`/es-es/api-reference/endpoint/apps/network/publish`,children:`Publicar aplicación en la web`}),`, y desactivarla con la misma ruta.`]})})]})}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":"Crear aplicación","sidebarTitle":"Crear aplicación","api":"POST https://api.vertracloud.app/v1/apps","authMethod":"bearer","description":"Crea una aplicación nueva con la configuración y los archivos indicados.","href":"/es-es/api-reference/endpoint/apps/create"}}}},"mdxExtracts":{"tableOfContents":[{"title":"Respuesta","slug":"respuesta","depth":3,"children":[]},{"title":"Respuestas de error","slug":"respuestas-de-error","depth":3,"children":[]}],"codeExamples":{"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=\"33\">\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\">\"app-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\"> \"owner_id\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"user-123456789012345678\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"owner_plan\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"pro\"\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:#0A3069;--shiki-dark:#CE9178\">\"API Simples\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"description\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"I have a description :)\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"cluster\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">1\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"status\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"building\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"ram\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">128\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"type\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">2\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"language\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"javascript\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"subdomain\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"myapp.vertraweb.app\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"domains\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: [],\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"last_snapshot\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"2026-03-20T19:58: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\"> \"main_file\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"index.js\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"version\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"recommended\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"start_command\"\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>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"build_command\"\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>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"offline_since\"\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>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"shield_cooldown\"\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>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"github\"\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>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"custom_image\"\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>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"deploy\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"zero_downtime\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"off\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"zero_downtime_active\"\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:#116329;--shiki-dark:#9CDCFE\"> \"auto_rollback\"\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:#116329;--shiki-dark:#9CDCFE\"> \"health_check_path\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">null\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\"> \"created_at\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"2026-03-20T19:58: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-03-20T19:58: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":"Crear aplicación","path":"/v1/apps","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":{},"header":{},"cookie":{},"path":{}},"body":{"application/json":{"schemaArray":[{"type":"object","properties":{"file":[{"type":"file","description":"El archivo ZIP con el código de la aplicación (tamaño máximo: 100 MB). No se envía cuando el origen es `snapshot_id` ."}],"snapshot_id":[{"type":"string","description":"Origen alternativo a `file` : el ID de un snapshot de aplicación desde el que crear la aplicación. La plataforma descarga el snapshot (que ya incluye el `vertracloud.config` ) y construye la aplicación a partir de él. Se envía como campo de texto del cuerpo multipart; tiene el mismo límite de tamaño que `file` (100 MB)."}],"memory":[{"type":"string","description":"La cantidad de RAM que se asigna a la aplicación, en MB. Mínimo 100 MB. Es obligatoria con `file` ; con `snapshot_id` es opcional y, si no se envía, se usa el `vertracloud.config` del snapshot. Cuando se pide un `subdomain` , el valor sube automáticamente a al menos 512 MB: las aplicaciones web tienen su propio mínimo de memoria."}],"start":[{"type":"string","description":"El comando de inicio de la aplicación."}],"build":[{"type":"string","description":"Un comando de build opcional, de hasta 512 caracteres (por ejemplo, `npm run build` ). Se ejecuta después de instalar las dependencias y antes de que la aplicación arranque, en un entorno de build aislado: 2× la RAM de la aplicación (mínimo 1.024 MB, máximo 4.096 MB) con un tiempo límite de 10 minutos. Las `devDependencies` se instalan cuando hay un comando de build. Disponible en todos los planes. Consulta Actualizar configuración de la aplicación para cambiarlo más adelante."}],"main":[{"type":"string","description":"El archivo principal de la aplicación. Es obligatorio con `file` ; con `snapshot_id` es opcional y, si no se envía, se usa el `vertracloud.config` del snapshot."}],"language":[{"type":"string","description":"Opcional. Fuerza el lenguaje de ejecución en lugar de detectarlo a partir del proyecto: uno de `javascript` , `typescript` , `bun` , `python` , `static` , `php` , `go` , `ruby` , `java` , `rust` , `deno` , `dotnet` , `elixir` . Precedencia: este campo, después `LANGUAGE=` en `vertracloud.config` , y por último la detección. Cualquier otro valor se rechaza con `INVALID_LANGUAGE` ."}],"version":[{"type":"string","description":"Obligatoria con `file` ; con `snapshot_id` se usa la versión del `vertracloud.config` del snapshot. La versión del runtime de la aplicación: `recommended` , `latest` o una versión concreta soportada por el runtime detectado (por ejemplo, `22` )."}],"name":[{"type":"string","description":"El nombre visible de la aplicación. Máximo 50 caracteres.","required":true}],"description":[{"type":"string","description":"Una descripción de la aplicación."}],"workspace_id":[{"type":"string","description":"El ID del workspace que se asocia a la aplicación, si aplica."}],"subdomain":[{"type":"string","description":"El subdominio de la aplicación (por ejemplo, `miapp` ). Los espacios se reemplazan por `-` y el valor se pasa a minúsculas antes de validarlo; el formato aceptado es `^[a-z0-9-]+$` . Envía `random` para que la plataforma elija uno por ti. Omite el campo por completo para crear una aplicación privada, sin publicación web; más adelante puedes activarla con Publicar aplicación en la web . Requiere que el plan admita la publicación web."}],"envs":[{"type":"string","description":"Una cadena JSON con un array de variables de entorno, cada una con `key` , `value` y un `note` opcional. Longitud máxima de la clave 255, del valor 3072 y de la nota 50."}]}}],"examples":{"example":{"value":{"snapshot_id":"\u003cstring>","memory":"\u003cstring>","start":"\u003cstring>","build":"\u003cstring>","main":"\u003cstring>","language":"\u003cstring>","version":"\u003cstring>","name":"\u003cstring>","description":"\u003cstring>","workspace_id":"\u003cstring>","subdomain":"\u003cstring>","envs":"\u003cstring>"}}}}}},"response":{"200":{"application/json":{"schemaArray":[{"type":"object","properties":{"response":[{"type":"object","properties":{"id":[{"type":"string","description":"El ID de la aplicación."}],"owner_id":[{"type":"string","description":"El ID del propietario de la aplicación."}],"owner_plan":[{"type":"object","properties":{},"description":"El nombre del plan del propietario (por ejemplo, `pro` o `enterprise-8` ), o `null` cuando el propietario no tiene plan."}],"name":[{"type":"string","description":"El nombre de la aplicación."}],"description":[{"type":"string","description":"La descripción de la aplicación."}],"cluster":[{"type":"integer","description":"El ID del clúster de la aplicación."}],"status":[{"type":"string","description":"El estado de la aplicación. La creación responde `202 Accepted` con `building` ; la instalación y el build continúan en segundo plano. Cuando terminan, el estado pasa a `up` , o a `down` si fallaron la instalación de dependencias o el comando `build` (la salida está en los logs, así que puedes corregir los archivos y volver a iniciar sin subirlos de nuevo)."}],"last_build_error":[{"type":"object","properties":{},"description":"El código del último fallo de build o de instalación, o `null` tras un build correcto. Uno de `BUILD_FAILED` , `BUILD_TIMEOUT` , `BUILD_INTERRUPTED` , `INSTALL_FAILED` , `INSTALL_OUT_OF_MEMORY` , `INSTALL_TIMEOUT` o `INSTALL_SHIELD_BLOCKED` . El detalle está en los logs de la aplicación; consulta Errores para saber qué hacer con cada código."}],"ram":[{"type":"integer","description":"La RAM de la aplicación, en MB."}],"type":[{"type":"integer","description":"El tipo de aplicación."}],"language":[{"type":"string","description":"El lenguaje de programación de la aplicación (por ejemplo, `javascript` , `deno` , `dotnet` , `elixir` )."}],"subdomain":[{"type":"object","properties":{},"description":"El subdominio de la aplicación, si aplica."}],"domains":[{"type":"array","items":[{"type":"object","properties":{}}],"description":"Los dominios personalizados de la aplicación. Siempre está vacío justo después de crearla; añádelos con Añadir dominio a la aplicación ."}],"created_at":[{"type":"string","description":"La fecha y hora en que se creó la aplicación."}],"updated_at":[{"type":"string","description":"La fecha y hora de la última actualización de la aplicación."}],"last_snapshot":[{"type":"object","properties":{},"description":"La fecha y hora del último snapshot de la aplicación."}],"main_file":[{"type":"string","description":"El archivo principal de la aplicación."}],"version":[{"type":"string","description":"La versión del runtime (por ejemplo, `recommended` o `latest` )."}],"start_command":[{"type":"object","properties":{},"description":"El comando de inicio de la aplicación, si se ha indicado."}],"build_command":[{"type":"object","properties":{},"description":"El comando de build, si se ha indicado. Se ejecuta después de instalar las dependencias y antes de que la aplicación arranque."}],"offline_since":[{"type":"object","properties":{},"description":"La fecha y hora desde la que la aplicación está fuera de línea, si aplica."}],"shield_cooldown":[{"type":"object","properties":{},"description":"Presente mientras Vertra Shield ha pausado la aplicación. Incluye `until` (fin de la pausa), `reason` ( `burst` o `rate_limit` ) y `direction` ( `in` o `out` ); `null` cuando no hay ninguna pausa activa."}],"github":[{"type":"object","properties":{},"description":"Repositorio de GitHub vinculado ( `repo_owner` , `repo_name` ) cuando el despliegue automático está conectado; `null` cuando la aplicación se creó desde un ZIP o un snapshot. La URL del webhook no se incluye: para obtenerla usa `GET /v1/apps/{id}/deploys/webhook` ."}],"custom_image":[{"type":"object","properties":{"image_id":[{"type":"string","description":"El ID de la imagen. `id` y `name` de este objeto son los de la aplicación, no los de la imagen."}],"port":[{"type":"object","properties":{},"description":"El puerto en el que escucha la aplicación y al que la plataforma envía el tráfico; `null` para una aplicación sin tráfico web."}],"version_id":[{"type":"object","properties":{},"description":"La versión de la imagen que ejecuta la aplicación, o `null` si todavía no se ha iniciado en ninguna versión."}],"outdated":[{"type":"boolean","description":"`true` cuando la imagen tiene una versión más nueva que la que ejecuta la aplicación. Pasará a ella en el siguiente reinicio o despliegue que pidas."}]},"description":"La imagen Docker personalizada desde la que se ejecuta la aplicación; `null` en una aplicación normal. Con una imagen, `language` , `version` , `main_file` , `start_command` y `build_command` no se aplican: vienen de la imagen. Consulta Imágenes Docker personalizadas ."}],"deploy":[{"type":"object","properties":{"zero_downtime":[{"type":"string","description":"La opción guardada: `off` (la predeterminada), `auto` u `on` . Cámbiala con Actualizar configuración de la aplicación ."}],"zero_downtime_active":[{"type":"boolean","description":"Lo que se aplica al siguiente reinicio o despliegue: `true` en Enterprise cuando `zero_downtime` es `on` , o cuando es `auto` y la aplicación recibe tráfico web."}],"auto_rollback":[{"type":"boolean","description":"La opción guardada, `false` por defecto. Devuelve el valor guardado en cualquier plan, pero solo tiene efecto desde Intermediary."}],"health_check_path":[{"type":"object","properties":{},"description":"La ruta HTTP a la que se llama en una versión nueva para comprobar que está sana. `null` significa `/` ."}]},"description":"Cómo un despliegue reemplaza la versión en ejecución y qué ocurre si falla."}],"warning":[{"type":"string","description":"Solo cuando creas desde el snapshot de una aplicación que ejecuta una imagen Docker personalizada y la versión de la imagen registrada en el snapshot ya no existe: `IMAGE_VERSION_NOT_FOUND` . La aplicación se crea con la versión actual de la imagen."}]},"description":"Los detalles de la aplicación creada."}],"code":[{"type":"string","description":"El código de error que indica el motivo del fallo. Valores posibles: `VALIDATION_ERROR` : El cuerpo multipart no superó la validación ( `400` ). La respuesta incluye también `message` y `path` , que apuntan al campo con el problema. `USER_NOT_FOUND` : No se pudo resolver el usuario autenticado ( `401` ). `MAX_APPS_REACHED` : Se alcanzó el límite de aplicaciones del plan ( `403` ). `INVALID_ZIP` : El archivo subido no es un ZIP legible (truncado o dañado) ( `400` ). `MAIN_FILE_NOT_FOUND` : El archivo indicado en `main` no existe dentro del ZIP ( `400` ). `ZIP_TOO_SMALL` : El archivo subido pesa menos de 100 bytes ( `400` ). `FILE_TOO_LARGE` : El archivo subido supera el límite de 100 MB ( `400` ). `SOURCE_REQUIRED` : No se envió ni `file` ni `snapshot_id` ( `400` ). `SOURCE_CONFLICT` : Se enviaron `file` y `snapshot_id` a la vez ( `400` ). `SNAPSHOT_NOT_FOUND` : El `snapshot_id` no existe o no pertenece a quien hace la llamada ( `404` ). `SNAPSHOT_TYPE_MISMATCH` : El snapshot es de una base de datos, no de una aplicación ( `400` ). `SNAPSHOT_TOO_LARGE` : El snapshot supera el mismo límite de creación de 100 MB que `file` ( `400` ). `MEMORY_REQUIRED` : No se envió `memory` y el `vertracloud.config` del snapshot no tiene un `MEMORY` utilizable ( `400` ). `PLAN_REQUIRED` : El propietario no tiene un plan activo, así que no se puede crear una aplicación nueva, o se pidió un `subdomain` sin plan ( `403` ). `PLAN_DOES_NOT_SUPPORT_WEB_PUBLISH` : Se pidió un `subdomain` , pero el plan del propietario no incluye la publicación web ( `403` ). `INVALID_MEMORY_FORMAT` : `memory` no es un número ( `400` ). `MEMORY_MUST_BE_INTEGER` : `memory` no es un entero ( `400` ). `MEMORY_BELOW_MINIMUM` : `memory` está por debajo del mínimo para el tipo de aplicación ( `400` ). `MEMORY_LIMIT_EXCEEDED` : La memoria pedida supera la que aún tiene disponible el plan ( `400` ). `SUBDOMAIN_TAKEN` : Otra aplicación ya usa ese subdominio ( `409` ). `SUBDOMAIN_FORBIDDEN` : El subdominio pedido está en la lista de reservados de la plataforma ( `400` ). `USER_LIMITS_NOT_FOUND` : No se pudo cargar el registro de límites del propietario ( `404` ). `INVALID_LANGUAGE` : El lenguaje no es compatible o no se pudo determinar ( `400` ). `DEPLOY_RATE_LIMITED` : Se alcanzó el presupuesto de despliegues por hora del plan de la cuenta ( `429` ). Consulta la introducción a la referencia de la API . `INTERNAL_SERVER_ERROR` : Error inesperado, incluida una aplicación que se creó pero no se pudo leer después ( `500` )."}],"message":[{"type":"string","description":"Una descripción detallada con información adicional sobre el error. Presente en `VALIDATION_ERROR` ."}]}}],"examples":{"example":{"value":{"response":{"id":"\u003cstring>","owner_id":"\u003cstring>","owner_plan":{},"name":"\u003cstring>","description":"\u003cstring>","cluster":123,"status":"\u003cstring>","last_build_error":{},"ram":123,"type":123,"language":"\u003cstring>","subdomain":{},"domains":[{}],"created_at":"\u003cstring>","updated_at":"\u003cstring>","last_snapshot":{},"main_file":"\u003cstring>","version":"\u003cstring>","start_command":{},"build_command":{},"offline_since":{},"shield_cooldown":{},"github":{},"custom_image":{"image_id":"\u003cstring>","port":{},"version_id":{},"outdated":true},"deploy":{"zero_downtime":"\u003cstring>","zero_downtime_active":true,"auto_rollback":true,"health_check_path":{}},"warning":"\u003cstring>"},"code":"\u003cstring>","message":"\u003cstring>"}}}}}},"deprecated":false}},"jsLinks":[],"subdomain":"vertracloud","siteName":"Vertra Cloud","title":"Crear aplicación - Vertra Cloud","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/","matchLevel":4},"pt-BR":{"href":"/pt-br","matchLevel":4},"es":{"href":"/es-es/api-reference/endpoint/apps/create","matchLevel":0}}},"lastModified":"2026-10-30T22:45:18.669Z","gitLastModified":"2026-10-28T22:06:31.000Z","originalFileLocation":"es-es/api-reference/endpoint/apps/create.mdx","locale":"es"},"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=\"Crea una aplicación nueva con la configuración y los archivos indicados.\">\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=\"Crear aplicación - Vertra Cloud\">\u003cmeta data-mint-head property=\"og:description\" content=\"Crea una aplicación nueva con la configuración y los archivos indicados.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Vertra Cloud Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.vertracloud.app/es-es/api-reference/endpoint/apps/create\">\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=\"Crear aplicación - Vertra Cloud\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Crea una aplicación nueva con la configuración y los archivos indicados.\">\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/es-es/api-reference/endpoint/apps/create\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/es-es/api-reference/endpoint/apps/create.md\">\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/es-es/api-reference/endpoint/apps/create#webpage\",\"url\":\"https://docs.vertracloud.app/es-es/api-reference/endpoint/apps/create\",\"name\":\"Crear aplicación\",\"description\":\"Crea una aplicación nueva con la configuración y los archivos indicados.\",\"dateModified\":\"2026-10-28T22:06:31.000Z\",\"isPartOf\":{\"@id\":\"https://docs.vertracloud.app#website\"},\"breadcrumb\":{\"@id\":\"https://docs.vertracloud.app/es-es/api-reference/endpoint/apps/create#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.vertracloud.app/es-es/api-reference/endpoint/apps/create#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Endpoints\",\"item\":\"https://docs.vertracloud.app/es-es/api-reference/endpoint/users/me\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Aplicaciones\",\"item\":\"https://docs.vertracloud.app/es-es/api-reference/endpoint/apps/get\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Crear aplicación\",\"item\":\"https://docs.vertracloud.app/es-es/api-reference/endpoint/apps/create\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.vertracloud.app/es-es/api-reference/endpoint/apps/create#apireference\",\"headline\":\"Crear aplicación\",\"name\":\"Crear aplicación\",\"description\":\"Crea una aplicación nueva con la configuración y los archivos indicados.\",\"url\":\"https://docs.vertracloud.app/es-es/api-reference/endpoint/apps/create\",\"mainEntityOfPage\":{\"@id\":\"https://docs.vertracloud.app/es-es/api-reference/endpoint/apps/create#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,"pages":[{"title":"en","href":"/"}]},{"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"}]},{"language":"es","navbar":{"links":[{"href":"mailto:[email protected]","label":"Soporte"}],"primary":{"type":"button","label":"Panel","href":"https://vertracloud.app/dashboard"}},"tabs":[{"tab":"Primeros pasos","pages":[{"title":"Primeros pasos","href":"/es-es"}]},{"tab":"Recursos","pages":[{"title":"Recursos","href":"/es-es/applications"}]},{"tab":"Tutoriales","pages":[{"title":"Tutoriales","href":"/es-es/tutorials/introduction"}]},{"tab":"Guías","pages":[{"title":"Guías","href":"/es-es/guides/custom-domain"}]},{"tab":"Herramientas","pages":[{"title":"Herramientas","href":"/es-es/cli"}]},{"tab":"Blob Storage","pages":[{"title":"Blob Storage","href":"/es-es/blob/overview"}]},{"tab":"Plantillas","pages":[{"title":"Plantillas","href":"/es-es/templates/overview"}]},{"tab":"Referencia de la API","groups":[{"group":"Visión general","icon":"book","pages":[{"title":"Referencia de la API pública de Vertra Cloud","sidebarTitle":"API pública","href":"/es-es/api-reference/introduction"},{"title":"Límites y cuotas de la plataforma en Vertra Cloud","sidebarTitle":"Límites","href":"/es-es/api-reference/limitations"},{"title":"Códigos de error de la API de Vertra Cloud","sidebarTitle":"Códigos de error","href":"/es-es/api-reference/errors"}]},{"group":"Endpoints","icon":"plug","pages":[{"group":"Usuarios","icon":"user","pages":[{"title":"Información del usuario","sidebarTitle":"Info del usuario","api":"GET https://api.vertracloud.app/v1/users/me","href":"/es-es/api-reference/endpoint/users/me"},{"title":"Actualizar perfil de usuario","sidebarTitle":"Actualizar perfil","api":"PATCH https://api.vertracloud.app/v1/users/me","href":"/es-es/api-reference/endpoint/users/update-me"},{"title":"Listar todos los snapshots de la cuenta","sidebarTitle":"Todos los snapshots","api":"GET https://api.vertracloud.app/v1/users/snapshots","href":"/es-es/api-reference/endpoint/users/snapshots"},{"title":"Organización personal de recursos","sidebarTitle":"Carpetas y favoritos","href":"/es-es/api-reference/endpoint/users/resource-organization"},{"title":"Listar sesiones","sidebarTitle":"Sesiones","api":"GET https://api.vertracloud.app/v1/users/me/sessions","href":"/es-es/api-reference/endpoint/users/sessions"}]},{"group":"Estado","icon":"heart-pulse","pages":[{"title":"Comprobar el estado de la infraestructura","sidebarTitle":"Comprobar estado","api":"GET https://api.vertracloud.app/v1/status","href":"/es-es/api-reference/endpoint/services/status"}]},{"group":"Aplicaciones","icon":"rocket","pages":[{"title":"Detalles de la aplicación","sidebarTitle":"Obtener aplicación","api":"GET https://api.vertracloud.app/v1/apps/{id}","href":"/es-es/api-reference/endpoint/apps/get"},{"title":"Estado de la aplicación","sidebarTitle":"Obtener estado de la aplicación","api":"GET https://api.vertracloud.app/v1/apps/{id}/status","href":"/es-es/api-reference/endpoint/apps/status"},{"title":"Estado de todas las aplicaciones","sidebarTitle":"Estado de todas las aplicaciones","api":"GET https://api.vertracloud.app/v1/apps/status","href":"/es-es/api-reference/endpoint/apps/allstatus"},{"title":"Listar runtimes","sidebarTitle":"Runtimes","api":"GET https://api.vertracloud.app/v1/apps/runtimes","href":"/es-es/api-reference/endpoint/apps/runtimes"},{"title":"Métricas de la aplicación","sidebarTitle":"Métricas de la aplicación","api":"GET https://api.vertracloud.app/v1/apps/{id}/metrics","href":"/es-es/api-reference/endpoint/apps/metrics"},{"title":"Logs de la aplicación en tiempo real","sidebarTitle":"Logs en tiempo real","api":"GET https://api.vertracloud.app/v1/apps/{id}/realtime","href":"/es-es/api-reference/endpoint/apps/realtime"},{"title":"Descargar aplicación","sidebarTitle":"Descargar aplicación","api":"GET https://api.vertracloud.app/v1/apps/{id}/download","href":"/es-es/api-reference/endpoint/apps/download"},{"title":"Logs de la aplicación","sidebarTitle":"Logs de la aplicación","api":"GET https://api.vertracloud.app/v1/apps/{id}/logs","description":"Devuelve los logs de una aplicación a partir de su ID.","href":"/es-es/api-reference/endpoint/apps/logs"},{"title":"Crear aplicación","sidebarTitle":"Crear aplicación","api":"POST https://api.vertracloud.app/v1/apps","href":"/es-es/api-reference/endpoint/apps/create"},{"title":"Crear aplicación desde imagen","sidebarTitle":"Crear desde imagen","api":"POST https://api.vertracloud.app/v1/apps/image","description":"Crea una aplicación que se ejecuta desde una imagen Docker personalizada.","href":"/es-es/api-reference/endpoint/apps/create-from-image"},{"title":"Iniciar la aplicación","sidebarTitle":"Iniciar aplicación","api":"POST https://api.vertracloud.app/v1/apps/{id}/start","href":"/es-es/api-reference/endpoint/apps/start"},{"title":"Reiniciar la aplicación","sidebarTitle":"Reiniciar aplicación","api":"POST https://api.vertracloud.app/v1/apps/{id}/restart","href":"/es-es/api-reference/endpoint/apps/restart"},{"title":"Detener la aplicación","sidebarTitle":"Detener aplicación","api":"POST https://api.vertracloud.app/v1/apps/{id}/stop","href":"/es-es/api-reference/endpoint/apps/stop"},{"title":"Actualizar la configuración de la aplicación","sidebarTitle":"Actualizar configuración","api":"PATCH https://api.vertracloud.app/v1/apps/{id}/config","href":"/es-es/api-reference/endpoint/apps/updateconfig"},{"title":"Eliminar aplicación","sidebarTitle":"Eliminar aplicación","api":"DELETE https://api.vertracloud.app/v1/apps/{id}","href":"/es-es/api-reference/endpoint/apps/delete"},{"group":"Red","icon":"globe","pages":[{"title":"Publicar la aplicación en la web","sidebarTitle":"Publicar / Despublicar","api":"POST https://api.vertracloud.app/v1/apps/{id}/network/publish","href":"/es-es/api-reference/endpoint/apps/network/publish"},{"title":"Cambiar el subdominio de la aplicación","sidebarTitle":"Cambiar subdominio","api":"PATCH https://api.vertracloud.app/v1/apps/{id}/network/subdomain","href":"/es-es/api-reference/endpoint/apps/network/subdomain"},{"title":"Purgar caché","sidebarTitle":"Purgar caché","api":"POST https://api.vertracloud.app/v1/apps/{id}/network/purge-cache","href":"/es-es/api-reference/endpoint/apps/network/purgecache"}]},{"group":"Dominios","icon":"link","pages":[{"title":"Listar dominios de la aplicación","sidebarTitle":"Listar dominios","api":"GET https://api.vertracloud.app/v1/apps/{id}/domains","href":"/es-es/api-reference/endpoint/apps/domains/list"},{"title":"Añadir dominio a la aplicación","sidebarTitle":"Añadir dominio","api":"POST https://api.vertracloud.app/v1/apps/{id}/domains","href":"/es-es/api-reference/endpoint/apps/domains/create"},{"title":"Actualizar dominio de la aplicación","sidebarTitle":"Actualizar dominio","api":"PATCH https://api.vertracloud.app/v1/apps/{id}/domains/{domain_id}","href":"/es-es/api-reference/endpoint/apps/domains/update"},{"title":"Eliminar dominio de la aplicación","sidebarTitle":"Eliminar dominio","api":"DELETE https://api.vertracloud.app/v1/apps/{id}/domains/{domain_id}","href":"/es-es/api-reference/endpoint/apps/domains/delete"},{"title":"Registros DNS del dominio","sidebarTitle":"Registros DNS del dominio","api":"GET https://api.vertracloud.app/v1/apps/{id}/domains/{domain_id}/dns","href":"/es-es/api-reference/endpoint/apps/domains/dns"},{"title":"Configurar dominio automáticamente","sidebarTitle":"Configurar automáticamente","api":"POST https://api.vertracloud.app/v1/apps/{id}/domains/{domain_id}/connect","href":"/es-es/api-reference/endpoint/apps/domains/connect"}]},{"group":"Gestor de archivos","icon":"folder-open","pages":[{"title":"Obtener contenido de un archivo de la aplicación","sidebarTitle":"Obtener contenido de archivo","api":"GET https://api.vertracloud.app/v1/apps/{id}/files/content","href":"/es-es/api-reference/endpoint/apps/filemanager/content"},{"title":"Obtener archivos de la aplicación","sidebarTitle":"Obtener archivos","api":"GET https://api.vertracloud.app/v1/apps/{id}/files","href":"/es-es/api-reference/endpoint/apps/filemanager/files"},{"title":"Obtener árbol de archivos de la aplicación","sidebarTitle":"Obtener árbol de archivos","api":"GET https://api.vertracloud.app/v1/apps/{id}/files/tree","href":"/es-es/api-reference/endpoint/apps/filemanager/tree"},{"title":"Subir archivos a la aplicación","sidebarTitle":"Subir archivos","api":"POST https://api.vertracloud.app/v1/apps/{id}/files/upload","href":"/es-es/api-reference/endpoint/apps/filemanager/upload"},{"title":"Eliminar archivo o carpeta de la aplicación","sidebarTitle":"Eliminar archivo o carpeta","api":"DELETE https://api.vertracloud.app/v1/apps/{id}/files","href":"/es-es/api-reference/endpoint/apps/filemanager/delete"},{"title":"Mover archivo o carpeta de la aplicación","sidebarTitle":"Mover archivo o carpeta","api":"PATCH https://api.vertracloud.app/v1/apps/{id}/files","href":"/es-es/api-reference/endpoint/apps/filemanager/move"},{"title":"Crear o actualizar archivo o carpeta de la aplicación","sidebarTitle":"Crear/actualizar archivo o carpeta","api":"PUT https://api.vertracloud.app/v1/apps/{id}/files","href":"/es-es/api-reference/endpoint/apps/filemanager/save"}]},{"group":"Variables de entorno","icon":"key","pages":[{"title":"Obtener variables de entorno de la aplicación","sidebarTitle":"Obtener variables de entorno","api":"GET https://api.vertracloud.app/v1/apps/{id}/envs","href":"/es-es/api-reference/endpoint/apps/enviroments/get"},{"title":"Eliminar una variable de entorno de la aplicación","sidebarTitle":"Eliminar variable de entorno","api":"DELETE https://api.vertracloud.app/v1/apps/{id}/envs/{envId}","href":"/es-es/api-reference/endpoint/apps/enviroments/delete"},{"title":"Crear o editar variables de entorno de la aplicación","sidebarTitle":"Crear/editar variables de entorno","api":"POST https://api.vertracloud.app/v1/apps/{id}/envs","href":"/es-es/api-reference/endpoint/apps/enviroments/createOrEdit"}]},{"group":"Snapshots","icon":"camera","pages":[{"title":"Obtener snapshots de la aplicación","sidebarTitle":"Obtener snapshots","api":"GET https://api.vertracloud.app/v1/users/{id}/snapshots","href":"/es-es/api-reference/endpoint/apps/snapshots/getall"},{"title":"Crear snapshot de la aplicación","sidebarTitle":"Crear snapshot","api":"POST https://api.vertracloud.app/v1/users/{id}/snapshots","href":"/es-es/api-reference/endpoint/apps/snapshots/create"},{"title":"Restaurar snapshot de la aplicación","sidebarTitle":"Restaurar snapshot","api":"POST https://api.vertracloud.app/v1/users/{id}/snapshots/{snapshot_id}/restore","href":"/es-es/api-reference/endpoint/apps/snapshots/restore"},{"title":"Descargar snapshot de la aplicación","sidebarTitle":"Descargar snapshot","api":"GET https://api.vertracloud.app/v1/users/{id}/snapshots/{snapshot_id}/download","href":"/es-es/api-reference/endpoint/apps/snapshots/download"}]},{"group":"Despliegues","icon":"code-branch","pages":[{"title":"Obtener URL del webhook de despliegue","sidebarTitle":"Obtener URL del webhook","api":"GET https://api.vertracloud.app/v1/apps/{app_id}/deploys/webhook","href":"/es-es/api-reference/endpoint/apps/deploys/webhookurl"},{"title":"Obtener despliegues recientes","sidebarTitle":"Despliegues recientes","api":"GET https://api.vertracloud.app/v1/apps/{app_id}/deploys","href":"/es-es/api-reference/endpoint/apps/deploys/recents"},{"title":"Eliminar webhook de despliegue","sidebarTitle":"Eliminar webhook","api":"DELETE https://api.vertracloud.app/v1/apps/{app_id}/deploys/webhook","href":"/es-es/api-reference/endpoint/apps/deploys/delete"},{"title":"Crear webhook de despliegue","sidebarTitle":"Crear webhook","api":"POST https://api.vertracloud.app/v1/apps/{app_id}/deploys/webhook","href":"/es-es/api-reference/endpoint/apps/deploys/create"}]},{"group":"Releases","icon":"clock-rotate-left","pages":[{"title":"Listar releases de la aplicación","sidebarTitle":"Listar releases","api":"GET https://api.vertracloud.app/v1/apps/{id}/releases","href":"/es-es/api-reference/endpoint/apps/releases/list"},{"title":"Obtener el log de una release de la aplicación","sidebarTitle":"Obtener log de la release","api":"GET https://api.vertracloud.app/v1/apps/{id}/releases/{release_id}/log","href":"/es-es/api-reference/endpoint/apps/releases/log"},{"title":"Previsualizar el rollback de la aplicación","sidebarTitle":"Previsualizar rollback","api":"GET https://api.vertracloud.app/v1/apps/{id}/releases/{release_id}/rollback","href":"/es-es/api-reference/endpoint/apps/releases/rollback-preview"},{"title":"Hacer rollback de la aplicación a una release","sidebarTitle":"Hacer rollback","api":"POST https://api.vertracloud.app/v1/apps/{id}/releases/{release_id}/rollback","href":"/es-es/api-reference/endpoint/apps/releases/rollback"}]}]},{"group":"Imágenes Docker","icon":"docker","pages":[{"title":"Listar imágenes","sidebarTitle":"Listar imágenes","api":"GET https://api.vertracloud.app/v1/images","href":"/es-es/api-reference/endpoint/images/list"},{"title":"Obtener una imagen","sidebarTitle":"Obtener imagen","api":"GET https://api.vertracloud.app/v1/images/{image_id}","href":"/es-es/api-reference/endpoint/images/get"},{"title":"Comprobar un Dockerfile","sidebarTitle":"Comprobar Dockerfile","api":"POST https://api.vertracloud.app/v1/images/check","href":"/es-es/api-reference/endpoint/images/check"},{"title":"Crear una imagen","sidebarTitle":"Crear imagen","api":"POST https://api.vertracloud.app/v1/images","href":"/es-es/api-reference/endpoint/images/create"},{"title":"Actualizar imagen","sidebarTitle":"Actualizar imagen","api":"PATCH https://api.vertracloud.app/v1/images/{image_id}","href":"/es-es/api-reference/endpoint/images/update"},{"title":"Reconstruir imagen","sidebarTitle":"Reconstruir imagen","api":"PUT https://api.vertracloud.app/v1/images/{image_id}","href":"/es-es/api-reference/endpoint/images/rebuild"},{"title":"Listar versiones de la imagen","sidebarTitle":"Listar versiones","api":"GET https://api.vertracloud.app/v1/images/{image_id}/versions","href":"/es-es/api-reference/endpoint/images/versions"},{"title":"Logs de build de la imagen","sidebarTitle":"Logs de build","api":"GET https://api.vertracloud.app/v1/images/{image_id}/logs","href":"/es-es/api-reference/endpoint/images/logs"},{"title":"Descargar el contexto de una imagen","sidebarTitle":"Descargar contexto","api":"GET https://api.vertracloud.app/v1/images/{image_id}/context","href":"/es-es/api-reference/endpoint/images/context"},{"title":"Vincular imagen a GitHub","sidebarTitle":"Vincular GitHub","api":"PUT https://api.vertracloud.app/v1/images/{image_id}/github","href":"/es-es/api-reference/endpoint/images/github-link"},{"title":"Desvincular imagen de GitHub","sidebarTitle":"Desvincular GitHub","api":"DELETE https://api.vertracloud.app/v1/images/{image_id}/github","href":"/es-es/api-reference/endpoint/images/github-unlink"},{"title":"Eliminar una imagen","sidebarTitle":"Eliminar imagen","api":"DELETE https://api.vertracloud.app/v1/images/{image_id}","href":"/es-es/api-reference/endpoint/images/delete"}]},{"group":"Plantillas","icon":"shapes","pages":[{"title":"Listar plantillas","sidebarTitle":"Listar plantillas","api":"GET https://api.vertracloud.app/v1/templates","href":"/es-es/api-reference/endpoint/templates/list"},{"title":"Listar categorías de plantillas","sidebarTitle":"Listar categorías","api":"GET https://api.vertracloud.app/v1/templates/categories","href":"/es-es/api-reference/endpoint/templates/categories"},{"title":"Obtener plantilla","sidebarTitle":"Obtener plantilla","api":"GET https://api.vertracloud.app/v1/templates/{template_id}","href":"/es-es/api-reference/endpoint/templates/get"},{"title":"Listar versiones de la plantilla","sidebarTitle":"Listar versiones","api":"GET https://api.vertracloud.app/v1/templates/{template_id}/versions","href":"/es-es/api-reference/endpoint/templates/versions"},{"title":"Validar el manifiesto de una plantilla","sidebarTitle":"Validar manifiesto","api":"POST https://api.vertracloud.app/v1/templates/validate","href":"/es-es/api-reference/endpoint/templates/validate"},{"title":"Desplegar plantilla","sidebarTitle":"Desplegar plantilla","api":"POST https://api.vertracloud.app/v1/templates/{template_id}/deploy","href":"/es-es/api-reference/endpoint/templates/deploy"},{"title":"Obtener trabajo de despliegue de plantilla","sidebarTitle":"Obtener trabajo de despliegue","api":"GET https://api.vertracloud.app/v1/template-deploys/{deploy_id}","href":"/es-es/api-reference/endpoint/templates/deploy-status"},{"title":"Transmitir eventos de despliegue de plantilla","sidebarTitle":"Eventos de despliegue","api":"GET https://api.vertracloud.app/v1/template-deploys/{deploy_id}/events","href":"/es-es/api-reference/endpoint/templates/deploy-events"},{"title":"Obtener información de actualización de la plantilla","sidebarTitle":"Información de actualización","api":"GET https://api.vertracloud.app/v1/apps/{id}/template/update","href":"/es-es/api-reference/endpoint/templates/update-info"},{"title":"Actualizar una plantilla o mover una aplicación a su última versión","sidebarTitle":"Actualizar plantilla","api":"POST https://api.vertracloud.app/v1/apps/{id}/template/update","href":"/es-es/api-reference/endpoint/templates/update"},{"title":"Crear una plantilla privada","sidebarTitle":"Crear plantilla","api":"POST https://api.vertracloud.app/v1/templates","href":"/es-es/api-reference/endpoint/templates/create"},{"title":"Guardar una aplicación como plantilla","sidebarTitle":"Crear desde aplicación","api":"POST https://api.vertracloud.app/v1/templates/from-app/{app_id}","href":"/es-es/api-reference/endpoint/templates/create-from-app"},{"title":"Guardar un stack como plantilla","sidebarTitle":"Crear desde stack","api":"POST https://api.vertracloud.app/v1/templates/from-stack/{stack_id}","href":"/es-es/api-reference/endpoint/templates/create-from-stack"},{"title":"Revisar el borrador de una plantilla desde una aplicación o stack","sidebarTitle":"Revisar borrador","api":"GET https://api.vertracloud.app/v1/templates/from-app/{app_id}/draft","href":"/es-es/api-reference/endpoint/templates/draft"},{"title":"Publicar una nueva versión de una plantilla privada","sidebarTitle":"Nueva versión","api":"POST https://api.vertracloud.app/v1/templates/{template_id}/versions","href":"/es-es/api-reference/endpoint/templates/new-version"},{"title":"Eliminar una plantilla privada","sidebarTitle":"Eliminar plantilla","api":"DELETE https://api.vertracloud.app/v1/templates/{template_id}","href":"/es-es/api-reference/endpoint/templates/delete"},{"title":"Vincular una plantilla privada a GitHub","sidebarTitle":"Vincular GitHub","api":"PUT https://api.vertracloud.app/v1/templates/{template_id}/github","href":"/es-es/api-reference/endpoint/templates/github-link"},{"title":"Desvincular una plantilla privada de GitHub","sidebarTitle":"Desvincular GitHub","api":"DELETE https://api.vertracloud.app/v1/templates/{template_id}/github","href":"/es-es/api-reference/endpoint/templates/github-unlink"},{"title":"Desvincular una aplicación o stack de una plantilla","sidebarTitle":"Desvincular","api":"POST https://api.vertracloud.app/v1/apps/{id}/template/detach","href":"/es-es/api-reference/endpoint/templates/detach"},{"group":"Enlaces para compartir","icon":"share-nodes","pages":[{"title":"Previsualizar un enlace para compartir plantilla","sidebarTitle":"Previsualizar enlace","api":"GET https://api.vertracloud.app/v1/share/templates/{token}","href":"/es-es/api-reference/endpoint/templates/share-links/preview"},{"title":"Usar un enlace para compartir plantilla para crear aplicaciones","sidebarTitle":"Usar enlace","api":"POST https://api.vertracloud.app/v1/share/templates/{token}/deploy","href":"/es-es/api-reference/endpoint/templates/share-links/deploy"},{"title":"Copiar una plantilla desde un enlace para compartir de copia completa","sidebarTitle":"Copiar desde el enlace","api":"POST https://api.vertracloud.app/v1/share/templates/{token}/copy","href":"/es-es/api-reference/endpoint/templates/share-links/copy"},{"title":"Reportar una plantilla","sidebarTitle":"Reportar plantilla","api":"POST https://api.vertracloud.app/v1/share/templates/{token}/report","href":"/es-es/api-reference/endpoint/templates/share-links/report"},{"title":"Crear un enlace para compartir una plantilla","sidebarTitle":"Crear enlace","api":"POST https://api.vertracloud.app/v1/templates/{template_id}/share-links","href":"/es-es/api-reference/endpoint/templates/share-links/create"},{"title":"Listar los enlaces para compartir de una plantilla","sidebarTitle":"Listar enlaces","api":"GET https://api.vertracloud.app/v1/templates/{template_id}/share-links","href":"/es-es/api-reference/endpoint/templates/share-links/list"},{"title":"Revocar un enlace para compartir","sidebarTitle":"Revocar enlace","api":"DELETE https://api.vertracloud.app/v1/templates/{template_id}/share-links/{link_id}","href":"/es-es/api-reference/endpoint/templates/share-links/revoke"}]}]},{"group":"Stacks","icon":"layer-group","pages":[{"title":"Listar stacks","sidebarTitle":"Listar stacks","api":"GET https://api.vertracloud.app/v1/stacks","href":"/es-es/api-reference/endpoint/stacks/list"},{"title":"Obtener stack","sidebarTitle":"Obtener stack","api":"GET https://api.vertracloud.app/v1/stacks/{stack_id}","href":"/es-es/api-reference/endpoint/stacks/get"},{"title":"Crear stack","sidebarTitle":"Crear stack","api":"POST https://api.vertracloud.app/v1/stacks","href":"/es-es/api-reference/endpoint/stacks/create"},{"title":"Actualizar stack","sidebarTitle":"Actualizar stack","api":"PATCH https://api.vertracloud.app/v1/stacks/{stack_id}","href":"/es-es/api-reference/endpoint/stacks/update"},{"title":"Eliminar stack","sidebarTitle":"Eliminar stack","api":"DELETE https://api.vertracloud.app/v1/stacks/{stack_id}","href":"/es-es/api-reference/endpoint/stacks/delete"},{"title":"Convertir carpeta en stack","sidebarTitle":"Convertir en stack","api":"POST https://api.vertracloud.app/v1/stacks/transform","href":"/es-es/api-reference/endpoint/stacks/transform"},{"title":"Obtener código de conexión del stack","sidebarTitle":"Código de conexión","api":"GET https://api.vertracloud.app/v1/stacks/{stack_id}/connection","href":"/es-es/api-reference/endpoint/stacks/connection"},{"title":"Definir modo de red del stack","sidebarTitle":"Modo de red","api":"POST https://api.vertracloud.app/v1/stacks/{stack_id}/network-mode","href":"/es-es/api-reference/endpoint/stacks/network-mode"},{"group":"Miembros","icon":"user-group","pages":[{"title":"Añadir miembro al stack","sidebarTitle":"Añadir miembro","api":"POST https://api.vertracloud.app/v1/stacks/{stack_id}/members","href":"/es-es/api-reference/endpoint/stacks/members/add"},{"title":"Quitar miembro del stack","sidebarTitle":"Quitar miembro","api":"DELETE https://api.vertracloud.app/v1/stacks/{stack_id}/members/{resource_type}/{resource_id}","href":"/es-es/api-reference/endpoint/stacks/members/remove"}]},{"group":"Conexiones","icon":"arrows-left-right","pages":[{"title":"Crear conexión del stack","sidebarTitle":"Crear conexión","api":"POST https://api.vertracloud.app/v1/stacks/{stack_id}/bindings","href":"/es-es/api-reference/endpoint/stacks/bindings/create"},{"title":"Eliminar conexión del stack","sidebarTitle":"Eliminar conexión","api":"DELETE https://api.vertracloud.app/v1/stacks/{stack_id}/bindings/{binding_id}","href":"/es-es/api-reference/endpoint/stacks/bindings/delete"},{"title":"Listar conexiones del stack","sidebarTitle":"Listar conexiones","api":"GET https://api.vertracloud.app/v1/stacks/{stack_id}/bindings","href":"/es-es/api-reference/endpoint/stacks/bindings/list"},{"title":"Actualizar conexión del stack","sidebarTitle":"Actualizar conexión","api":"PATCH https://api.vertracloud.app/v1/stacks/{stack_id}/bindings/{binding_id}","href":"/es-es/api-reference/endpoint/stacks/bindings/update"}]},{"group":"Bases de datos","icon":"database","pages":[{"title":"Añadir base de datos al stack","sidebarTitle":"Añadir base de datos","api":"POST https://api.vertracloud.app/v1/stacks/{stack_id}/databases","href":"/es-es/api-reference/endpoint/stacks/databases/create"}]},{"group":"Blob","icon":"box-archive","pages":[{"title":"Añadir carpeta de Blob al stack","sidebarTitle":"Añadir carpeta de Blob","api":"POST https://api.vertracloud.app/v1/stacks/{stack_id}/blob","href":"/es-es/api-reference/endpoint/stacks/blob/create"}]},{"group":"Snapshots","icon":"camera","pages":[{"title":"Crear snapshot del stack","sidebarTitle":"Crear snapshot","api":"POST https://api.vertracloud.app/v1/stacks/{stack_id}/snapshots","href":"/es-es/api-reference/endpoint/stacks/snapshots/create"},{"title":"Listar snapshots del stack","sidebarTitle":"Listar snapshots","api":"GET https://api.vertracloud.app/v1/stacks/{stack_id}/snapshots","href":"/es-es/api-reference/endpoint/stacks/snapshots/list"},{"title":"Restaurar snapshot del stack","sidebarTitle":"Restaurar snapshot","api":"POST https://api.vertracloud.app/v1/stacks/{stack_id}/snapshots/{snapshot_id}/restore","href":"/es-es/api-reference/endpoint/stacks/snapshots/restore"}]}]},{"group":"Bases de datos","icon":"database","pages":[{"title":"Crear una base de datos","sidebarTitle":"Crear base de datos","api":"POST https://api.vertracloud.app/v1/databases","href":"/es-es/api-reference/endpoint/databases/create"},{"title":"Obtener una base de datos por ID","sidebarTitle":"Obtener base de datos","api":"GET https://api.vertracloud.app/v1/databases/{id}","href":"/es-es/api-reference/endpoint/databases/get"},{"title":"Listar versiones de bases de datos","sidebarTitle":"Versiones","api":"GET https://api.vertracloud.app/v1/databases/versions","href":"/es-es/api-reference/endpoint/databases/versions"},{"title":"Obtener el estado de una base de datos por ID","sidebarTitle":"Obtener estado de base de datos","api":"GET https://api.vertracloud.app/v1/databases/{id}/status","href":"/es-es/api-reference/endpoint/databases/status"},{"title":"Obtener el estado de todas las bases de datos","sidebarTitle":"Estado de todas las bases de datos","api":"GET https://api.vertracloud.app/v1/databases/status","href":"/es-es/api-reference/endpoint/databases/allstatus"},{"title":"Obtener las métricas de una base de datos por ID","sidebarTitle":"Obtener métricas de base de datos","api":"GET https://api.vertracloud.app/v1/databases/{id}/metrics","href":"/es-es/api-reference/endpoint/databases/metrics"},{"title":"Restablecer una base de datos","sidebarTitle":"Restablecer base de datos","api":"POST https://api.vertracloud.app/v1/databases/{id}/reset","href":"/es-es/api-reference/endpoint/databases/reset"},{"title":"Iniciar una base de datos","sidebarTitle":"Iniciar base de datos","api":"POST https://api.vertracloud.app/v1/databases/{id}/start","href":"/es-es/api-reference/endpoint/databases/start"},{"title":"Detener una base de datos","sidebarTitle":"Detener base de datos","api":"POST https://api.vertracloud.app/v1/databases/{id}/stop","href":"/es-es/api-reference/endpoint/databases/stop"},{"title":"Actualizar una base de datos","sidebarTitle":"Actualizar base de datos","api":"PUT https://api.vertracloud.app/v1/databases/{id}","href":"/es-es/api-reference/endpoint/databases/update"},{"title":"Eliminar una base de datos","sidebarTitle":"Eliminar base de datos","api":"DELETE https://api.vertracloud.app/v1/databases/{id}","href":"/es-es/api-reference/endpoint/databases/delete"},{"group":"Credenciales","icon":"lock","pages":[{"title":"Obtener el certificado de una base de datos","sidebarTitle":"Obtener certificado","api":"GET https://api.vertracloud.app/v1/databases/{id}/credentials/certificate","href":"/es-es/api-reference/endpoint/databases/credentials/get"},{"title":"Restablecer los certificados de una base de datos","sidebarTitle":"Restablecer certificados","api":"POST https://api.vertracloud.app/v1/databases/{id}/credentials/certificate/reset","href":"/es-es/api-reference/endpoint/databases/credentials/reset"},{"title":"Restablecer la contraseña de una base de datos","sidebarTitle":"Restablecer contraseña","api":"POST https://api.vertracloud.app/v1/databases/{id}/credentials/reset","href":"/es-es/api-reference/endpoint/databases/credentials/resetpassword"}]}]},{"group":"Workspaces","icon":"users","pages":[{"title":"Listar workspaces","sidebarTitle":"Listar","api":"GET https://api.vertracloud.app/v1/workspaces","href":"/es-es/api-reference/endpoint/workspaces/get-all"},{"title":"Obtener workspace","sidebarTitle":"Obtener","api":"GET https://api.vertracloud.app/v1/workspaces/{id}","href":"/es-es/api-reference/endpoint/workspaces/get"},{"title":"Crear workspace","sidebarTitle":"Crear","api":"POST https://api.vertracloud.app/v1/workspaces","href":"/es-es/api-reference/endpoint/workspaces/create"},{"title":"Actualizar workspace","sidebarTitle":"Actualizar","api":"PUT https://api.vertracloud.app/v1/workspaces/{id}","href":"/es-es/api-reference/endpoint/workspaces/update"},{"title":"Eliminar workspace","sidebarTitle":"Eliminar","api":"DELETE https://api.vertracloud.app/v1/workspaces/{id}","href":"/es-es/api-reference/endpoint/workspaces/delete"},{"group":"Miembros","icon":"user-group","pages":[{"title":"Listar miembros","sidebarTitle":"Listar","api":"GET https://api.vertracloud.app/v1/workspaces/{id}/members","href":"/es-es/api-reference/endpoint/workspaces/members/list"},{"title":"Actualizar miembro","sidebarTitle":"Actualizar","api":"PUT https://api.vertracloud.app/v1/workspaces/{id}/members/{user_id}","href":"/es-es/api-reference/endpoint/workspaces/members/update"},{"title":"Eliminar miembro","sidebarTitle":"Eliminar","api":"DELETE https://api.vertracloud.app/v1/workspaces/{id}/members/{user_id}","href":"/es-es/api-reference/endpoint/workspaces/members/remove"}]},{"group":"Roles","icon":"id-badge","pages":[{"title":"Listar roles","sidebarTitle":"Listar","api":"GET https://api.vertracloud.app/v1/workspaces/{id}/roles","href":"/es-es/api-reference/endpoint/workspaces/roles/list"},{"title":"Crear rol","sidebarTitle":"Crear","api":"POST https://api.vertracloud.app/v1/workspaces/{id}/roles","href":"/es-es/api-reference/endpoint/workspaces/roles/create"},{"title":"Actualizar rol","sidebarTitle":"Actualizar","api":"PUT https://api.vertracloud.app/v1/workspaces/{id}/roles/{role_id}","href":"/es-es/api-reference/endpoint/workspaces/roles/update"},{"title":"Eliminar rol","sidebarTitle":"Eliminar","api":"DELETE https://api.vertracloud.app/v1/workspaces/{id}/roles/{role_id}","href":"/es-es/api-reference/endpoint/workspaces/roles/delete"}]},{"group":"Invitaciones","icon":"envelope","pages":[{"title":"Listar invitaciones","sidebarTitle":"Listar","api":"GET https://api.vertracloud.app/v1/workspaces/{id}/invites","href":"/es-es/api-reference/endpoint/workspaces/invites/list"},{"title":"Revocar invitación","sidebarTitle":"Revocar","api":"DELETE https://api.vertracloud.app/v1/workspaces/{id}/invites/{invite_id}","href":"/es-es/api-reference/endpoint/workspaces/invites/revoke"},{"title":"Previsualizar invitación","sidebarTitle":"Previsualizar","api":"GET https://api.vertracloud.app/v1/workspaces/invites/{token}","href":"/es-es/api-reference/endpoint/workspaces/invites/preview"},{"title":"Aceptar invitación","sidebarTitle":"Aceptar","api":"POST https://api.vertracloud.app/v1/workspaces/invites/{token}/accept","href":"/es-es/api-reference/endpoint/workspaces/invites/accept"},{"title":"Rechazar invitación","sidebarTitle":"Rechazar","api":"POST https://api.vertracloud.app/v1/workspaces/invites/{token}/decline","href":"/es-es/api-reference/endpoint/workspaces/invites/decline"}]},{"group":"Aplicaciones y bases de datos","icon":"window-maximize","pages":[{"title":"Vincular aplicación","sidebarTitle":"Vincular app","api":"POST https://api.vertracloud.app/v1/workspaces/{id}/apps/{app_id}","href":"/es-es/api-reference/endpoint/workspaces/links/add-app"},{"title":"Desvincular aplicación","sidebarTitle":"Desvincular app","api":"DELETE https://api.vertracloud.app/v1/workspaces/{id}/apps/{app_id}","href":"/es-es/api-reference/endpoint/workspaces/links/remove-app"},{"title":"Vincular base de datos","sidebarTitle":"Vincular base de datos","api":"POST https://api.vertracloud.app/v1/workspaces/{id}/databases/{db_id}","href":"/es-es/api-reference/endpoint/workspaces/links/add-database"},{"title":"Desvincular base de datos","sidebarTitle":"Desvincular base de datos","api":"DELETE https://api.vertracloud.app/v1/workspaces/{id}/databases/{db_id}","href":"/es-es/api-reference/endpoint/workspaces/links/remove-database"},{"title":"Vincular plantilla o stack","sidebarTitle":"Vincular plantilla o stack","api":"POST https://api.vertracloud.app/v1/workspaces/{id}/templates/{template_id}","href":"/es-es/api-reference/endpoint/workspaces/links/add-template"},{"title":"Desvincular plantilla o stack","sidebarTitle":"Desvincular plantilla o stack","api":"DELETE https://api.vertracloud.app/v1/workspaces/{id}/templates/{template_id}","href":"/es-es/api-reference/endpoint/workspaces/links/remove-template"}]},{"group":"Organización de recursos","icon":"folder-tree","pages":[{"title":"Organización de recursos del workspace","sidebarTitle":"Carpetas y favoritos","href":"/es-es/api-reference/endpoint/workspaces/resource-organization"}]},{"group":"Solicitudes de acción","icon":"square-check","pages":[{"title":"Listar solicitudes de acción","sidebarTitle":"Listar","api":"GET https://api.vertracloud.app/v1/workspaces/{id}/action-requests","href":"/es-es/api-reference/endpoint/workspaces/action-requests/list"},{"title":"Crear solicitud de acción","sidebarTitle":"Crear","api":"POST https://api.vertracloud.app/v1/workspaces/{id}/action-requests","href":"/es-es/api-reference/endpoint/workspaces/action-requests/create"}]}]},{"group":"Facturación","icon":"credit-card","pages":[{"title":"Listar pedidos","sidebarTitle":"Listar pedidos","api":"GET https://api.vertracloud.app/v1/orders","href":"/es-es/api-reference/endpoint/billing/list-orders"},{"title":"Obtener el estado de un pedido","sidebarTitle":"Estado del pedido","api":"GET https://api.vertracloud.app/v1/orders/{orderId}/status","href":"/es-es/api-reference/endpoint/billing/order-status"},{"title":"Crear pedido","sidebarTitle":"Crear pedido","api":"POST https://api.vertracloud.app/v1/orders","href":"/es-es/api-reference/endpoint/billing/create-order"},{"title":"Iniciar el pago por PIX","sidebarTitle":"Iniciar PIX","api":"POST https://api.vertracloud.app/v1/orders/{orderId}/initiate/pix","href":"/es-es/api-reference/endpoint/billing/initiate-pix"},{"title":"Obtener los datos de facturación","sidebarTitle":"Obtener datos de facturación","api":"GET https://api.vertracloud.app/v1/users/me/billing","href":"/es-es/api-reference/endpoint/billing/get-billing-details"},{"title":"Actualizar los datos de facturación","sidebarTitle":"Actualizar datos de facturación","api":"PUT https://api.vertracloud.app/v1/users/me/billing","href":"/es-es/api-reference/endpoint/billing/update-billing-details"}]},{"group":"Canje","icon":"ticket","pages":[{"title":"Canjear código","sidebarTitle":"Canjear código","api":"POST https://api.vertracloud.app/v1/redeem/{code}","href":"/es-es/api-reference/endpoint/redeem/redeem"}]}]}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/es-es/changelog"}]}],"global":{"anchors":[{"anchor":"Documentación","icon":"book-open-cover","href":"https://docs.vertracloud.app/es-es"},{"anchor":"Discord","icon":"discord","href":"https://discord.gg/vertracloud"},{"anchor":"Estado","icon":"heart-pulse","href":"https://status.vertracloud.app"}]}}]},"basePath":"","title":"Crear aplicación - 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"]}