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

# Crear aplicación desde imagen

> Crea una aplicación que se ejecuta desde una imagen Docker personalizada.

La imagen debe estar lista (`status: "success"`). Varias aplicaciones pueden compartir una misma imagen, cada una con sus propias variables. El lenguaje, la versión, el archivo principal y los comandos de inicio y de build no se aplican: vienen de la imagen. Necesita el scope `apps:write` cuando se llama con una clave de API. Consulta [Imágenes Docker personalizadas](https://docs.vertracloud.app/es-es/guides/custom-docker-images.md).

**image\_id** `string` *required*

El ID de la imagen desde la que se ejecuta la aplicación.

**name** `string` *required*

El nombre visible de la aplicación. Máximo 50 caracteres.

**memory** `integer` *required*

La cantidad de RAM que se asigna, en MB.

**description** `string`

Una descripción de la aplicación.

**web** `boolean` *required*

`true` publica la aplicación en la web (aplican `subdomain` y `port`). `false` crea una aplicación sin tráfico, como un bot o un worker.

**subdomain** `string`

El subdominio de la aplicación. Envía `random` para que la plataforma elija uno. Solo con `web: true`.

**port** `integer`

El puerto en el que escucha la aplicación. Solo con `web: true`. Por defecto: el primer `EXPOSE` del `Dockerfile` de la imagen, o `80`. La plataforma lo inyecta como la variable de entorno `PORT`.

**envs** `object[]`

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.

**workspace\_id** `string`

El workspace que se asocia a la aplicación.

### Respuesta

La creación es asíncrona: la respuesta es `202 Accepted` con la aplicación en `status: "building"` y `custom_image` rellenado (`image_id`, `port`, `version_id`, `outdated`). La aplicación tiene los mismos campos que en [Crear aplicación](https://docs.vertracloud.app/es-es/api-reference/endpoint/apps/create.md). Después, consulta los [Detalles de la aplicación](https://docs.vertracloud.app/es-es/api-reference/endpoint/apps/get.md) hasta que `status` sea `up` o `down`.

```json Response theme={null}
{
  "response": {
    "id": "app-abc123def456",
    "name": "my-api-prod",
    "status": "building",
    "ram": 512,
    "subdomain": "myapp.vertraweb.app",
    "custom_image": {
      "id": "app-abc123def456",
      "name": "my-api-prod",
      "version_id": null,
      "outdated": false,
      "image_id": "img-abc123def456",
      "port": 3000
    }
  }
}
```

### Respuestas de error

**code** `string`

El código de error que indica el motivo del fallo. Valores posibles:

* `API_KEY_SCOPE_DENIED`: La clave de API no tiene el scope `apps:write` (`403`).
* `VALIDATION_ERROR`: El cuerpo no superó la validación (`400`).
* `IMAGE_NOT_FOUND`: La imagen no existe o no tienes acceso a ella (`404`).
* `IMAGE_NOT_READY`: La imagen todavía no tiene ningún build correcto (`409`).
* `MAX_APPS_REACHED`: Se alcanzó el límite de aplicaciones del plan (`403`).
* `MEMORY_BELOW_MINIMUM`, `MEMORY_LIMIT_EXCEEDED`: La memoria está por debajo del mínimo o por encima de lo que aún tiene el plan (`400`).
* `SUBDOMAIN_TAKEN`, `SUBDOMAIN_FORBIDDEN`: El subdominio está en uso o reservado (`409`, `400`).
* `PLAN_DOES_NOT_SUPPORT_WEB_PUBLISH`: `web: true` en un plan sin publicación web (`403`).
* `DEPLOY_RATE_LIMITED`: Se alcanzó el presupuesto de despliegues por hora de la cuenta (`429`).
* `INTERNAL_SERVER_ERROR`: Error inesperado (`500`).

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


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