> ## 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.2 Edición avanzada

> - Cargue imágenes para edición avanzada en lienzo, soporta especificación de área de máscara y ajuste de posición
- Similar a mj-v8.2-edit, pero no depende de tareas existentes, pasa imágenes directamente
- El resultado de una tarea de upload-paint no puede usarse como origen (`task_id`) de variation, remix o edit; el proveedor solo permite hacerle upscale, algo que esta ruta no expone
- Modo de procesamiento asíncrono, use el ID de la tarea devuelto para [consultar](/es/api-manual/task-management/get-task-detail)

<Note>
  Midjourney cuenta con un sistema de moderación de contenido integrado. Cada imagen se modera por separado: las imágenes filtradas no aparecen en los resultados y el resto se entrega con normalidad, por lo que puedes recibir menos imágenes de lo habitual. Si al menos una imagen supera la revisión, la tarea queda en `completed` y se factura con normalidad; si se filtran todas las imágenes, la tarea termina en `failed` y los créditos reservados se reembolsan íntegramente. Asegúrate de que tus prompts e imágenes de referencia cumplan las directrices de contenido.
</Note>


## OpenAPI

````yaml es/api-manual/image-series/midjourney/mj-v8-2-upload-paint.json POST /v1/images/generations
openapi: 3.1.0
info:
  title: Interfaz mj-v8.2-upload-paint
  description: Midjourney V8.2 Interfaz de edición avanzada
  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.2-upload-paint
      description: >-
        - Cargue imágenes para edición avanzada en lienzo, soporta
        especificación de área de máscara y ajuste de posición

        - Similar a mj-v8.2-edit, pero no depende de tareas existentes, pasa
        imágenes directamente

        - El resultado de una tarea de upload-paint no puede usarse como origen
        (`task_id`) de variation, remix o edit; el proveedor solo permite
        hacerle upscale, algo que esta ruta no expone

        - Modo de procesamiento asíncrono, use el ID de la tarea devuelto para
        [consultar](/es/api-manual/task-management/get-task-detail)
      operationId: createImageGeneration
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ImageGenerationRequest'
            examples:
              upload_paint_example:
                summary: Edición avanzada
                value:
                  model: mj-v8.2-upload-paint
                  prompt: Beautiful mountain scenery background
                  image_urls:
                    - >-
                      https://cdn.evolink.ai/model-cards/midjourney-v8-2/midjourney-v8-2-og-v1.jpg
                  model_params:
                    mask:
                      areas:
                        - width: 1200
                          height: 630
                          points:
                            - 100
                            - 100
                            - 400
                            - 100
                            - 400
                            - 400
                            - 100
                            - 400
                    canvas:
                      width: 1200
                      height: 630
                    img_pos:
                      width: 1200
                      height: 630
                      x: 0
                      'y': 0
                    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.2-upload-paint'
                  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
        - image_urls
        - model_params
      properties:
        model:
          type: string
          description: Nombre del modelo
          enum:
            - mj-v8.2-upload-paint
          default: mj-v8.2-upload-paint
          example: mj-v8.2-upload-paint
        prompt:
          type: string
          description: Prompt de edición
          maxLength: 8100
          example: Beautiful mountain scenery background
        image_urls:
          type: array
          description: >-
            URL de imagen de entrada (se usa la primera). URL HTTP(S) pública de
            como máximo 1024 caracteres; formatos .png, .gif, .webp, .jpg, .jpeg
          items:
            type: string
            format: uri
          maxItems: 1
          example:
            - >-
              https://cdn.evolink.ai/model-cards/midjourney-v8-2/midjourney-v8-2-og-v1.jpg
        model_params:
          type: object
          description: Parámetros de edición avanzada
          required:
            - mask
            - canvas
            - img_pos
          properties:
            mask:
              type: object
              description: >-
                Región de máscara a repintar (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 (en blanco y negro, blanco =
                repintar; mismo tamaño que la imagen de origen; URL o data URI
                en base64):**

                ```json

                { "url":
                "https://cdn.evolink.ai/model-cards/midjourney-v8-2/midjourney-v8-2-og-v1.jpg"
                }

                ```


                (La URL anterior es un marcador de posición: sustitúyala por su
                propia imagen de máscara en blanco y negro.)
              properties:
                areas:
                  type: array
                  description: Lista de regiones de polígono
                  items:
                    type: object
                    properties:
                      width:
                        type: integer
                        description: >-
                          Ancho de referencia en píxeles de la imagen de origen
                          (espacio de coordenadas de `points`)
                      height:
                        type: integer
                        description: >-
                          Alto de referencia en píxeles de la imagen de origen
                          (espacio de coordenadas de `points`)
                      points:
                        type: array
                        description: >-
                          Coordenadas de los vértices del polígono
                          (x1,y1,x2,y2,...), en píxeles de la imagen de origen,
                          en sentido horario desde el origen superior izquierdo
                        items:
                          type: integer
                url:
                  type: string
                  format: uri
                  description: >-
                    URL o data URI de la imagen de máscara. Imagen binaria en
                    blanco y negro con el mismo tamaño en píxeles que la imagen
                    de origen: **blanco = repintar, negro = conservar**. Se
                    acepta base64 como data URI (`data:image/png;base64,...`).
                    No use la transparencia PNG para la máscara: los píxeles
                    transparentes se tratan como blanco (repintar).
            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 cargada, de lo contrario la tarea falla (status: failed,
                error de ejecución).
              required:
                - width
                - height
              properties:
                width:
                  type: integer
                  description: Ancho del lienzo
                  example: 1200
                height:
                  type: integer
                  description: Alto del lienzo
                  example: 630
            img_pos:
              type: object
              description: >-
                Posición y tamaño de la imagen dentro del lienzo. La imagen
                llena el lienzo (ancho/alto de img = ancho/alto del lienzo) =
                edición/repintado puro; la imagen más pequeña que el lienzo =
                outpaint (el área en blanco circundante se genera a partir del
                prompt).
              required:
                - width
                - height
                - x
                - 'y'
              properties:
                width:
                  type: integer
                  description: Ancho de renderizado
                  example: 1200
                height:
                  type: integer
                  description: Alto de renderizado
                  example: 630
                x:
                  type: integer
                  description: >-
                    Desplazamiento horizontal desde la esquina superior
                    izquierda
                  example: 0
                'y':
                  type: integer
                  description: Desplazamiento vertical desde la esquina superior izquierda
                  example: 0
            speed:
              type: string
              description: |-
                Modo de velocidad

                - `fast`: Modo estándar (predeterminado), 1x
              enum:
                - fast
              default: fast
              example: fast
        callback_url:
          type: string
          description: >-
            Dirección de callback HTTPS después de completar la tarea


            **Momento del callback:**

            - Se activa cuando la tarea se completa (completed) o falla (failed)

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


            **Restricciones de seguridad:**

            - Solo se admite el protocolo HTTPS

            - Se prohíbe el callback a direcciones IP de red interna (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
            respectivamente)

            - El formato de respuesta del callback es consistente con el de la
            interfaz de consulta de tareas

            - Si la dirección de callback devuelve un código 2xx se considera
            exitoso, otros códigos 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-mjv82
        model:
          type: string
          description: Nombre del modelo utilizado
        object:
          type: string
          enum:
            - image.generation.task
          description: Tipo de tarea
        progress:
          type: integer
          description: Porcentaje de progreso (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:
        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

        ```

````

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