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

# Importar una imagen desde una URL de objeto

> Crear una imagen en la cuenta de la plataforma requiere que un principal actúe en esa cuenta con `compute:CreateImage`.

Registra una imagen para importar desde una URL de objeto prefirmada; no se transmiten bytes de imagen a través de esta API. Cargue su disco a cualquier bucket que controle (nuestro almacén de objetos, AWS S3, MinIO, …) utilizando un cliente S3 multiparte robusto, luego pase una URL GET prefirmada como `source_url`.

La importación se ejecuta en segundo plano: la respuesta es 202 con status=importing, y un worker obtiene la URL, la convierte a la base raw (se aceptan qcow2 / raw / vmdk / vhd / vhdx / vdi) e importa en el almacenamiento regional. La fila cambia a activa (o error, con fallos activos) una vez que termina — consulta GET /v1/images/{image_id} para el estado.

Un nombre se comporta como una etiqueta móvil: por defecto la nueva imagen se convierte en la versión "actual" para su (nombre, arquitectura), por lo que los lanzamientos futuros de ese nombre arrancarán los nuevos bits. Las versiones más antiguas permanecen arrancables por id y por `name:version`. Pasa `current: false` para poner en espera una versión sin cambiar, luego promuévala más tarde con PATCH /v1/images/{image_id} (current=true).

`version` identifica la compilación dentro del nombre y debe ser única allí; omítalo y el servidor marcará una marca de tiempo UTC. Publicar dos veces con un mismo nombre y la misma versión es un error 409, no una segunda compilación anónima.


<Info>
  Acción de IAM principal: **`compute:CreateImage`**. Crear una imagen en la cuenta de la plataforma requiere que un principal actúe en esa cuenta con `compute:CreateImage`. Consulte [permisos de computación](/es/compute/permissions) para obtener ejemplos de directivas.
</Info>


## OpenAPI

````yaml /es/api-reference/specs/compute.yaml post /v1/images
openapi: 3.0.3
info:
  title: Basaltic Compute API
  version: 1.0.0
  description: >
    Instancias de máquinas virtuales y las imágenes, los tipos de instancia y
    los grupos de instancias a partir de los cuales se crean. Cubre todo el
    ciclo de vida de la instancia: inicio, parada, reinicio, cambio de tamaño y
    reinstalación.
  contact:
    name: Basaltic Support
    email: ping@basaltic.sh
  license:
    name: Proprietary
    url: https://basaltic.sh/terms
servers:
  - url: https://compute.{region}.basaltic.sh
    description: Punto final de API regional
    variables:
      region:
        default: sa-saopaulo-1
        description: Código de región
security:
  - BearerAuth: []
paths:
  /v1/images:
    post:
      tags:
        - Images
      summary: Importar una imagen desde una URL de objeto
      description: >
        Crear una imagen en la cuenta de la plataforma requiere que un principal
        actúe en esa cuenta con `compute:CreateImage`.


        Registra una imagen para importar desde una URL de objeto prefirmada; no
        se transmiten bytes de imagen a través de esta API. Cargue su disco a
        cualquier bucket que controle (nuestro almacén de objetos, AWS S3,
        MinIO, …) utilizando un cliente S3 multiparte robusto, luego pase una
        URL GET prefirmada como `source_url`.


        La importación se ejecuta en segundo plano: la respuesta es 202 con
        status=importing, y un worker obtiene la URL, la convierte a la base raw
        (se aceptan qcow2 / raw / vmdk / vhd / vhdx / vdi) e importa en el
        almacenamiento regional. La fila cambia a activa (o error, con fallos
        activos) una vez que termina — consulta GET /v1/images/{image_id} para
        el estado.


        Un nombre se comporta como una etiqueta móvil: por defecto la nueva
        imagen se convierte en la versión "actual" para su (nombre,
        arquitectura), por lo que los lanzamientos futuros de ese nombre
        arrancarán los nuevos bits. Las versiones más antiguas permanecen
        arrancables por id y por `name:version`. Pasa `current: false` para
        poner en espera una versión sin cambiar, luego promuévala más tarde con
        PATCH /v1/images/{image_id} (current=true).


        `version` identifica la compilación dentro del nombre y debe ser única
        allí; omítalo y el servidor marcará una marca de tiempo UTC. Publicar
        dos veces con un mismo nombre y la misma versión es un error 409, no una
        segunda compilación anónima.
      operationId: createImage
      parameters:
        - $ref: '#/components/parameters/IdempotencyKey'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ImageCreateRequest'
      responses:
        '202':
          description: Imagen registrada para importación
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ImageResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '409':
          $ref: '#/components/responses/Conflict'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
      security:
        - BearerAuth: []
components:
  parameters:
    IdempotencyKey:
      name: Idempotency-Key
      in: header
      description: >-
        Clave opcional generada por el cliente que hace que una creación sea
        segura para la reproducción. Al volver a intentar una solicitud con la
        misma clave, se devuelve el resultado original literalmente en lugar de
        crear un recurso duplicado. Se rechaza la reutilización de una clave con
        un cuerpo de solicitud diferente (422); una solicitud cuya clave todavía
        se está procesando devuelve 409. Los registros se mantienen durante 24
        horas. Usa un UUID o un token único similar.
      required: false
      schema:
        type: string
        maxLength: 255
      example: 550e8400-e29b-41d4-a716-446655440000
  schemas:
    ImageCreateRequest:
      type: object
      additionalProperties: false
      required:
        - name
        - source_url
      properties:
        name:
          type: string
          description: >-
            Nombre de imagen inmutable (p. ej. debian-13) cuyo puntero a la
            versión actual se puede mover; la nueva imagen se convierte en su
            versión actual. Los nombres se comparten entre las compilaciones de
            una etiqueta: una compilación se identifica por el propietario, el
            nombre, la arquitectura y la versión. Los nombres de los recursos no
            deben comenzar con el prefijo literal crn: ni ser UUID (en cualquier
            caso, en las formas canónica, compacta, entre corchetes o
            urn:uuid:).
          example: debian-13
        source_url:
          type: string
          description: >
            URL de obtención https prefirmada al disco en un almacén de objetos
            que controla. Obtenido una vez por el trabajador de importación (que
            rechaza los destinos privados/locales de enlace). El worker detecta
            qcow2, raw, vmdk, vhd, vhdx o vdi y lo convierte en almacenamiento
            raw. Las fuentes e imágenes ilegibles o no compatibles que declaran
            archivos de respaldo fallan de forma asíncrona con un error de
            estado y un error de conversión activa. No se conservan después de
            la importación.
          example: https://bucket.s3.example.com/debian-13.qcow2?X-Amz-Signature=...
        description:
          type: string
          example: Debian 13 (Trixie)
        os:
          type: string
          enum:
            - almalinux
            - alpine
            - arch
            - centos
            - debian
            - fedora
            - opensuse
            - rhel
            - rocky
            - ubuntu
            - linux
          default: linux
          description: >-
            Distribución de sistemas operativos. Use linux para otra
            distribución de Linux o genérica; os_version especifica la versión
            por separado.
          example: debian
        os_version:
          type: string
          example: '13'
        architecture:
          type: string
          enum:
            - amd64
          default: amd64
          description: >-
            Arquitectura de CPU de la imagen fuente. Solo se soporta amd64
            (x86-64).
          example: amd64
        version:
          type: string
          description: >
            Identifica esta compilación dentro de `name`, y debe ser única allí
            — volver a publicar una versión que una etiqueta ya lleva es un 409.
            Si se omite, el servidor marcará la fecha y hora UTC, de modo que
            cada compilación sea direccionable como `name:version`,
            independientemente de si la ha etiquetado o no.
          example: '20260807'
        current:
          type: boolean
          default: true
          description: >-
            Hacer que esta sea la versión actual para su (nombre, arquitectura)
            una vez activa.
          example: true
        eol_date:
          type: string
          format: date
          description: >
            El día en que esta versión deje de recibir actualizaciones de
            seguridad gratuitas. Si se omite, la imagen hereda la fecha de la
            versión actual del nombre, por lo que volver a publicar una etiqueta
            no puede detener silenciosamente el seguimiento de su lanzamiento.
          example: '2026-08-31'
        min_disk_gb:
          type: integer
          minimum: 0
          maximum: 16384
          example: 10
        min_ram_mb:
          type: integer
          minimum: 0
          example: 1024
        tags:
          $ref: '#/components/schemas/Tags'
        attributes:
          type: object
          additionalProperties:
            type: string
    ImageResponse:
      type: object
      properties:
        image:
          $ref: '#/components/schemas/Image'
      required:
        - image
    Tags:
      type: object
      additionalProperties:
        type: string
      example:
        environment: production
        team: backend
    Image:
      type: object
      properties:
        id:
          type: string
          format: uuid
          example: 550e8400-e29b-41d4-a716-446655440000
        crn:
          type: string
          example: >-
            crn:compute:sa-saopaulo-1:my-account:image/ubuntu-24.04/architecture/amd64/version/20260901
        name:
          description: >-
            Los nombres de los recursos no deben comenzar con el prefijo literal
            crn: ni ser UUID (en cualquier caso, en las formas canónica,
            compacta, entre corchetes o urn:uuid:).
          type: string
          example: ubuntu-24.04
        description:
          type: string
          example: Ubuntu 24.04 LTS (Noble Numbat)
        os:
          type: string
          example: ubuntu
        os_version:
          type: string
          example: '24.04'
        architecture:
          type: string
          example: amd64
        version:
          type: string
          description: >
            La identidad de la compilación dentro de su nombre. Único allí: un
            nombre es una etiqueta móvil, por lo que no puede ser también lo que
            dice dos construcciones aparte. Se estampa como una marca de tiempo
            UTC cuando el cargador no eligió una.
          example: '20260807'
        is_current:
          type: boolean
          description: >
            Si esta es la versión que resolve-by-name devuelve para su (nombre,
            arquitectura) — i.e. El objetivo de la etiqueta actual del nombre.
          example: true
        eol_date:
          type: string
          format: date
          description: >
            El día en que la versión del sistema operativo de esta imagen deja
            de recibir actualizaciones de seguridad gratuitas para una
            instalación predeterminada. Ausente cuando nadie ha registrado uno,
            lo que significa desconocido, no "soportado indefinidamente".


            Las imágenes de la plataforma se retiran del catálogo durante un
            período de gracia después de esta fecha. Se mantienen arrancables
            por id hasta entonces, y la fecha se publica con bastante antelación
            para que puedas planificar el movimiento.
          example: '2026-08-31'
        size_bytes:
          type: integer
          format: int64
          example: 2361393152
        min_disk_gb:
          type: integer
          minimum: 0
          maximum: 16384
          example: 10
        min_ram_mb:
          type: integer
          minimum: 0
          example: 1024
        status:
          type: string
          enum:
            - pending
            - importing
            - active
            - error
            - deleting
            - withdrawn
          description: >-
            Error exactamente mientras existe un error activo; el progreso de
            importación y eliminación sigue siendo independientemente
            reintentable.
          example: active
        withdrawal_reason:
          type: string
          description: >
            Por qué se retiró esta imagen. Presente para imágenes retiradas,
            incluyendo aquellas con un fallo de error independiente: end_of_life
            para retirada de la versión de la plataforma (ver eol_date), o
            legacy para una retirada migrada cuya razón original se desconoce.
            Las imágenes retiradas conservan sus datos pero no se pueden lanzar.
          example: end_of_life
        deletion_retention:
          type: object
          readOnly: true
          description: >
            Presente en las respuestas de lista de propietarios/detalles
            mientras la eliminación de imágenes está esperando referencias de
            instancias, reservas de origen o grupos de instancias existentes.
            Los recuentos incluyen todas las cuentas de referencia sin revelar
            sus identidades. Los datos de respaldo permanecen intactos; la
            limpieza se reanuda cuando las referencias desaparecen. Las fallas
            independientes pueden establecer el estado en error.
          required:
            - reason
            - instances
            - instance_pools
          properties:
            reason:
              type: string
              enum:
                - in_use
            instances:
              type: integer
              minimum: 0
            instance_pools:
              type: integer
              minimum: 0
        faults:
          type: array
          readOnly: true
          description: >-
            Fallas activas, más reciente primero. Vacío para una imagen
            saludable. Los errores de error establecen el estado en error sin
            deshabilitar un reintento de importación o limpieza elegible.
          items:
            $ref: '#/components/schemas/Fault'
        tags:
          $ref: '#/components/schemas/Tags'
        attributes:
          type: object
          additionalProperties:
            type: string
        created_at:
          type: string
          format: date-time
          example: '2026-01-15T09:30:00Z'
        updated_at:
          type: string
          format: date-time
          example: '2026-01-15T09:30:00Z'
      required:
        - id
        - crn
        - name
        - version
        - architecture
        - status
        - faults
        - created_at
        - updated_at
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - code
            - message
            - request_id
          properties:
            code:
              type: string
              description: Código de error que identifica el tipo de error
              example: INVALID_INPUT
            message:
              type: string
              description: Mensaje de error legible por el ser humano
              example: Invalid request parameters
            params:
              type: object
              additionalProperties: true
              description: >-
                Valores no sensibles opcionales para la interpolación de errores
                localizados, codificados por código de error. Nunca presente por
                errores del servidor.
              example:
                instances: 2
                pools: 0
            request_id:
              type: string
              format: uuid
              description: Solicitar ID para depuración
              example: 550e8400-e29b-41d4-a716-446655440000
    Fault:
      type: object
      required:
        - code
        - severity
        - message
        - details
        - first_at
        - last_at
        - occurrences
      properties:
        code:
          type: string
          description: >-
            Código legible por máquina estable propiedad de la operación de
            informes.
          example: BACKUP_FAILED
        severity:
          type: string
          enum:
            - error
            - warning
        message:
          type: string
          example: Backup upload failed.
        details:
          type: object
          nullable: true
          additionalProperties: true
          description: >-
            Contexto estructurado; las cadenas heredadas se conservan en
            legacy_text.
        first_at:
          type: string
          format: date-time
          description: Primera observación en esta serie de ocurrencias activas.
        last_at:
          type: string
          format: date-time
          description: Última observación en esta serie de ocurrencias activas.
        occurrences:
          type: integer
          minimum: 1
          example: 1
  responses:
    BadRequest:
      description: Parámetros de solicitud no válidos
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: INVALID_INPUT
              message: Invalid request parameters
              request_id: 550e8400-e29b-41d4-a716-446655440000
    Unauthorized:
      description: Se requiere autenticación o el token no es válido
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: UNAUTHORIZED
              message: Authentication required
              request_id: 550e8400-e29b-41d4-a716-446655440000
    Forbidden:
      description: Permisos insuficientes
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: ACCESS_DENIED
              message: You don't have permission to perform this action
              request_id: 550e8400-e29b-41d4-a716-446655440000
    Conflict:
      description: Conflicto de recursos (por ejemplo, ya existe, estado no válido)
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: CONFLICT
              message: Resource with this name already exists
              request_id: 550e8400-e29b-41d4-a716-446655440000
    UnprocessableEntity:
      description: >
        La solicitud está bien formada, pero no se puede procesar como se envió.
        En las operaciones que aceptan `Idempotency-Key` este es el caso de
        reutilización de clave: la clave fue vista por primera vez con una carga
        de solicitud diferente, por lo que la reproducción del resultado
        almacenado respondería a una pregunta que el llamador no hizo.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: IDEMPOTENCY_KEY_REUSED
              message: >-
                This Idempotency-Key was already used with a different request
                payload
              request_id: 550e8400-e29b-41d4-a716-446655440000
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >+
        Un token bearer de OAuth 2.0, enviado como `Authorization: Bearer
        <token>`. Esta es la forma recomendada de autenticación.


        Obtén el token intercambiando el par de claves de acceso de una cuenta
        de servicio en `POST /v1/oauth/token` con
        `grant_type=client_credentials`. Es el flujo estándar de credenciales de
        cliente; las bibliotecas compatibles con OAuth pueden obtener y renovar
        el token por ti.


        ```

        curl -s -u "$KEY_ID:$SECRET" -d grant_type=client_credentials \
          https://iam.basaltic.sh/v1/oauth/token
        ```


        Los tokens duran una hora por defecto. El mismo par de claves de acceso
        también sirve como credencial AWS SigV4 para el endpoint de objetos
        compatible con S3, que solo acepta ese método de autenticación.


````

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