> ## 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.

# Abrir una consola serie interactiva

> Actualizaciones a un WebSocket que lleva una sesión interactiva en el puerto serie de la instancia — el equivalente a un carro de crash, y la única manera de entrar cuando la red está rota: un fstab malo, un kernel equivocado, un grupo de seguridad que te bloqueó, un disco lleno.

Bytes sin procesar en tramas binarias, en ambas direcciones. Es un terminal, no un protocolo: envía pulsaciones de teclas, recibe lo que el invitado escriba. Apunte un emulador de terminal hacia él.

Esto te lleva al prompt de inicio de sesión PROPIO del invitado. No es una puerta trasera — las credenciales del invitado siguen siendo necesarias y nada aquí otorga acceso más allá de lo que el invitado mismo permite.

**Autenticar la actualización.** Un cliente que puede establecer encabezados — la CLI de `basaltic`, o cualquier cosa que no se ejecute en un navegador — autentica esto como cualquier otra llamada y no necesita nada extra.

Un BROWSER no puede: el constructor WebSocket toma una URL y no encabezados. Para ese caso, `POST` el punto de salida `/console/ticket` y pase el resultado como un parámetro de consulta `ticket`. El ticket es deliberadamente estrecho —una instancia, sesenta segundos— porque una credencial en una URL termina en los registros del proxy, y esa vale mucho menos que un token de sesión.

Una sesión por instancia: abrir una segunda desconecta la primera, en lugar de intercalar las pulsaciones de dos personas en el mismo terminal. Una sesión termina después de 15 minutos de inactividad, o 4 horas independientemente, y el marco cercano lleva la razón.

Requiere que la instancia se esté ejecutando.


<Info>
  Requiere la acción de IAM **`compute:StartSerialConsole`**. Consulte [permisos de computación](/es/compute/permissions) para obtener la lista completa, lo que cubre cada una y un ejemplo de directiva.
</Info>


## OpenAPI

````yaml /es/api-reference/specs/compute.yaml get /v1/instances/{instance_id}/console/serial
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/instances/{instance_id}/console/serial:
    get:
      tags:
        - Compute
      summary: Abrir una consola serie interactiva
      description: >
        Actualizaciones a un WebSocket que lleva una sesión interactiva en el
        puerto serie de la instancia — el equivalente a un carro de crash, y la
        única manera de entrar cuando la red está rota: un fstab malo, un kernel
        equivocado, un grupo de seguridad que te bloqueó, un disco lleno.


        Bytes sin procesar en tramas binarias, en ambas direcciones. Es un
        terminal, no un protocolo: envía pulsaciones de teclas, recibe lo que el
        invitado escriba. Apunte un emulador de terminal hacia él.


        Esto te lleva al prompt de inicio de sesión PROPIO del invitado. No es
        una puerta trasera — las credenciales del invitado siguen siendo
        necesarias y nada aquí otorga acceso más allá de lo que el invitado
        mismo permite.


        **Autenticar la actualización.** Un cliente que puede establecer
        encabezados — la CLI de `basaltic`, o cualquier cosa que no se ejecute
        en un navegador — autentica esto como cualquier otra llamada y no
        necesita nada extra.


        Un BROWSER no puede: el constructor WebSocket toma una URL y no
        encabezados. Para ese caso, `POST` el punto de salida `/console/ticket`
        y pase el resultado como un parámetro de consulta `ticket`. El ticket es
        deliberadamente estrecho —una instancia, sesenta segundos— porque una
        credencial en una URL termina en los registros del proxy, y esa vale
        mucho menos que un token de sesión.


        Una sesión por instancia: abrir una segunda desconecta la primera, en
        lugar de intercalar las pulsaciones de dos personas en el mismo
        terminal. Una sesión termina después de 15 minutos de inactividad, o 4
        horas independientemente, y el marco cercano lleva la razón.


        Requiere que la instancia se esté ejecutando.
      operationId: startSerialConsole
      parameters:
        - $ref: '#/components/parameters/InstanceId'
        - name: backlog_bytes
          in: query
          required: false
          description: >-
            Reproducir estos muchos bytes de salida ya escrita antes de que
            comience la salida en vivo, por lo que conectarse a un invitado
            silencioso muestra por qué está silencioso en lugar de una pantalla
            vacía. 0 desactiva la repetición. Los valores por encima de 65536
            están sujetos. La repetición es la cola de la misma grabación que
            sirve `/console/output`; la sesión en vivo es el puerto serie del
            invitado. Las dos son fuentes separadas, por lo que la unión está
            marcada con una línea `\r\n--- live ---\r\n`: todo lo que antes es
            historia, todo lo que después está sucediendo ahora. Un invitado que
            imprime en el instante en que se conecta puede tener unos pocos
            bytes aterrizados en ninguno de los lados de esa línea — un invitado
            silencioso, para el que existe la repetición de casos, se reproduce
            exactamente.
          schema:
            type: integer
            minimum: 0
            maximum: 65536
            default: 32768
      responses:
        '101':
          description: 'Cambio de protocolos: la sesión de consola está abierta.'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '409':
          description: La instancia no se está ejecutando, por lo que no tiene consola
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '426':
          description: >-
            No es una actualización de WebSocket. Este punto final solo habla
            WebSocket; conéctese con un cliente WebSocket.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          $ref: '#/components/responses/InternalServerError'
      security:
        - BearerAuth: []
components:
  parameters:
    InstanceId:
      name: instance_id
      in: path
      description: ID de instancia
      required: true
      schema:
        type: string
        format: uuid
      example: 550e8400-e29b-41d4-a716-446655440000
  responses:
    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
    NotFound:
      description: No se encontró el recurso
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: NOT_FOUND
              message: Resource not found
              request_id: 550e8400-e29b-41d4-a716-446655440000
    InternalServerError:
      description: Error interno del servidor
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error:
              code: INTERNAL_ERROR
              message: An internal error occurred
              request_id: 550e8400-e29b-41d4-a716-446655440000
  schemas:
    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
  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.