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

# Midjourney V8.1 Edición de lienzo

> - Reposicionar la imagen de una tarea existente en el lienzo y rellenar las áreas vacías con IA
- Adecuado para ajustar composición, expandir escenas (outpaint), repintar, etc.
- Modo de procesamiento asíncrono, use el ID de la tarea devuelto para [consultar el estado](/es/api-manual/task-management/get-task-detail)

<Note>
  Midjourney cuenta con un sistema de moderación de contenido integrado. Si algunas imágenes generadas son filtradas por la moderación, los créditos consumidos en esa solicitud no serán reembolsados. Asegúrese de que sus prompts cumplan con las directrices de contenido.
</Note>


## OpenAPI

````yaml es/api-manual/image-series/midjourney/mj-v8-1-edit.json POST /v1/images/generations
openapi: 3.1.0
info:
  title: Interfaz mj-v8.1-edit
  description: Midjourney V8.1 Interfaz de edición de lienzo
  license:
    name: MIT
  version: 1.0.0
servers:
  - url: https://api.evolink.ai
    description: Producción
security:
  - bearerAuth: []
tags:
  - name: Generación de imágenes
    description: Interfaces de generación de imágenes IA
paths:
  /v1/images/generations:
    post:
      tags:
        - Generación de imágenes
      summary: Interfaz mj-v8.1-edit
      description: >-
        - Reposicionar la imagen de una tarea existente en el lienzo y rellenar
        las áreas vacías con IA

        - Adecuado para ajustar composición, expandir escenas (outpaint),
        repintar, etc.

        - Modo de procesamiento asíncrono, use el ID de la tarea devuelto para
        [consultar el estado](/es/api-manual/task-management/get-task-detail)
      operationId: createImageGeneration
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ImageGenerationRequest'
            examples:
              edit_example:
                summary: Edición de lienzo
                value:
                  model: mj-v8.1-edit
                  prompt: Beautiful mountain scenery background
                  model_params:
                    task_id: task-unified-xxx
                    image_number: 0
                    canvas:
                      width: 1024
                      height: 1024
                    img_pos:
                      width: 512
                      height: 512
                      x: 256
                      'y': 256
                    speed: fast
      responses:
        '200':
          description: Tarea de generación de imágenes creada exitosamente
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ImageGenerationResponse'
        '400':
          description: Parámetros de solicitud inválidos
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: invalid_request
                  message: Invalid request parameters
                  type: invalid_request_error
        '401':
          description: No autenticado, token inválido o expirado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: unauthorized
                  message: Invalid or expired token
                  type: authentication_error
        '402':
          description: Cuota insuficiente, recargue por favor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: insufficient_quota
                  message: Insufficient quota. Please top up your account.
                  type: insufficient_quota
        '403':
          description: Acceso denegado
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: model_access_denied
                  message: 'Token does not have access to model: mj-v8.1-edit'
                  type: invalid_request_error
        '429':
          description: Límite de velocidad excedido
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: rate_limit_exceeded
                  message: Too many requests, please try again later
                  type: rate_limit_error
        '500':
          description: Error interno del servidor
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: internal_error
                  message: Internal server error
                  type: api_error
components:
  schemas:
    ImageGenerationRequest:
      type: object
      required:
        - model
        - prompt
        - model_params
      properties:
        model:
          type: string
          description: Nombre del modelo
          enum:
            - mj-v8.1-edit
          default: mj-v8.1-edit
          example: mj-v8.1-edit
        prompt:
          type: string
          description: Describir el contenido que se desea rellenar
          maxLength: 1024
          example: Beautiful mountain scenery background
        model_params:
          type: object
          description: Parámetros de edición de lienzo
          required:
            - task_id
            - canvas
            - img_pos
          properties:
            task_id:
              type: string
              description: ID de la tarea fuente (la tarea cuya imagen desea editar)
              example: task-unified-xxx
            image_number:
              type: integer
              description: Seleccionar cuál imagen de la tarea fuente
              enum:
                - 0
                - 1
                - 2
                - 3
              default: 0
              example: 0
            canvas:
              type: object
              description: >-
                Tamaño del lienzo. ⚠️ La relación de aspecto del lienzo
                (width/height) DEBE coincidir con la relación de aspecto de la
                imagen de la tarea fuente, de lo contrario la tarea falla
                (status: failed, error de ejecución).
              required:
                - width
                - height
              properties:
                width:
                  type: integer
                  description: Ancho del lienzo
                  example: 1024
                height:
                  type: integer
                  description: Alto del lienzo
                  example: 1024
            img_pos:
              type: object
              description: >-
                Posición y tamaño de la imagen dentro del lienzo. La imagen
                llena el lienzo (img W/H = canvas W/H) = edición/repintado puro;
                la imagen más pequeña que el lienzo = outpaint (el área vacía
                circundante se genera a partir del prompt).
              required:
                - width
                - height
                - x
                - 'y'
              properties:
                width:
                  type: integer
                  description: Ancho de renderizado
                  example: 512
                height:
                  type: integer
                  description: Alto de renderizado
                  example: 512
                x:
                  type: integer
                  description: >-
                    Desplazamiento horizontal desde la esquina superior
                    izquierda
                  example: 256
                'y':
                  type: integer
                  description: Desplazamiento vertical desde la esquina superior izquierda
                  example: 256
            mask:
              type: object
              description: >-
                Región de máscara opcional para repintar dentro de la imagen
                colocada (coordenadas de polígono o imagen de máscara)


                **Método 1 - Coordenadas de polígono:**

                ```json

                { "areas": [{ "width": 100, "height": 100, "points": [10, 10,
                10, 100, 100, 100, 100, 10] }] }

                ```


                **Método 2 - Imagen de máscara (canal alpha: opaco = repintar,
                transparente = conservar, opuesto a las máscaras de inpaint
                típicas):**

                ```json

                { "url": "https://example.com/mask.png" }

                ```
              properties:
                areas:
                  type: array
                  description: Lista de regiones de polígono
                  items:
                    type: object
                    properties:
                      width:
                        type: integer
                        description: Ancho de la región
                      height:
                        type: integer
                        description: Alto de la región
                      points:
                        type: array
                        description: >-
                          Coordenadas de los vértices del polígono
                          (x1,y1,x2,y2,...)
                        items:
                          type: integer
                url:
                  type: string
                  format: uri
                  description: >-
                    URL de la imagen de máscara (canal alpha: opaco = repintar,
                    transparente = conservar, opuesto a las máscaras de inpaint
                    típicas). Debe coincidir con las dimensiones en píxeles de
                    la imagen de referencia.
            speed:
              type: string
              description: Modo de velocidad
              enum:
                - fast
              default: fast
              example: fast
        callback_url:
          type: string
          description: >-
            URL de callback HTTPS para la finalización de la tarea


            **Momento del callback:**

            - Se activa cuando la tarea se completa, falla o se cancela

            - Se envía después de confirmar la facturación


            **Restricciones de seguridad:**

            - Solo se admite el protocolo HTTPS

            - Se prohíben los callbacks a direcciones IP privadas (127.0.0.1,
            10.x.x.x, 172.16-31.x.x, 192.168.x.x, etc.)

            - La longitud de la URL no debe exceder `2048` caracteres


            **Mecanismo de callback:**

            - Tiempo de espera: `10` segundos

            - Máximo `3` reintentos después de fallar (a los `1`s/`2`s/`4`s
            después de fallar)

            - El formato del cuerpo de respuesta del callback coincide con el de
            la interfaz de consulta de tareas

            - Un código de estado 2xx se considera exitoso; otros códigos de
            estado activan reintentos
          format: uri
          example: https://your-domain.com/webhooks/image-task-completed
    ImageGenerationResponse:
      type: object
      properties:
        created:
          type: integer
          description: Marca de tiempo de creación de la tarea
          example: 1757165031
        id:
          type: string
          description: ID de la tarea
          example: task-unified-1757165031-mjv81
        model:
          type: string
          description: Nombre del modelo realmente utilizado
        object:
          type: string
          enum:
            - image.generation.task
          description: Tipo de objeto de la tarea
        progress:
          type: integer
          description: Porcentaje de progreso de la tarea (0-100)
          minimum: 0
          maximum: 100
          example: 0
        status:
          type: string
          description: Estado de la tarea
          enum:
            - pending
            - processing
            - completed
            - failed
          example: pending
        task_info:
          $ref: '#/components/schemas/TaskInfo'
        type:
          type: string
          enum:
            - text
            - image
            - audio
            - video
          example: image
        usage:
          $ref: '#/components/schemas/Usage'
    ErrorResponse:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              description: Identificador de código de error
            message:
              type: string
              description: Mensaje de error
            type:
              type: string
              description: Tipo de error
    TaskInfo:
      type: object
      properties:
        can_cancel:
          type: boolean
          description: Si la tarea se puede cancelar
          example: true
        estimated_time:
          type: integer
          description: Tiempo estimado de finalización (segundos)
          minimum: 0
          example: 45
    Usage:
      type: object
      properties:
        billing_rule:
          type: string
          enum:
            - per_call
            - per_token
            - per_second
          example: per_call
        credits_reserved:
          type: number
          description: Créditos estimados consumidos
          minimum: 0
          example: 1.8
        user_group:
          type: string
          example: default
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        ## Todas las interfaces requieren autenticación con Bearer Token ##


        **Obtener API Key:**


        Visite la [página de gestión de API
        Key](https://evolink.ai/dashboard/keys) para obtener su API Key


        **Agregue lo siguiente al encabezado de la solicitud:**

        ```

        Authorization: Bearer YOUR_API_KEY

        ```

````