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

> - Based on completed mj-v8.2 series tasks, generate style variants with differences for the specified image
- The prompt has no effect on variation output (it only produces style variants of the source image); to guide the changes with a prompt, use mj-v8.2-remix instead
- Note: derived tasks based on V8.2 images (variation / remix / edit) are rendered by the V7 engine upstream (documented by the upstream channel); the result may differ slightly in style from the source image. Pricing is unchanged
- Source task must be an image-generation, variation, remix or edit task; results of upload-paint / retexture / remove-bg are rejected by the upstream (405)
- There is no `speed` field: `speed: fast` is accepted and ignored, any other value returns 400
- Async processing mode, use the returned task ID to [query status](/en/api-manual/task-management/get-task-detail)

<Note>
  Midjourney has a built-in content moderation system. Each image is moderated individually: filtered images are left out of the results and the remaining images are delivered normally, so you may receive fewer images than usual. If at least one image passes, the task is `completed` and billed normally; if all images are filtered, the task ends as `failed` and the reserved credits are refunded in full. Please make sure your prompts and reference images comply with the content guidelines.
</Note>


## OpenAPI

````yaml en/api-manual/image-series/midjourney/mj-v8-2-variation.json POST /v1/images/generations
openapi: 3.1.0
info:
  title: Midjourney V8.2 Variation Interface
  description: Create style variants based on previously generated images
  license:
    name: MIT
  version: 1.0.0
servers:
  - url: https://api.evolink.ai
    description: Production
security:
  - bearerAuth: []
paths:
  /v1/images/generations:
    post:
      tags:
        - Image Generation
      summary: Midjourney V8.2 Variation Interface
      description: >-
        - Based on completed mj-v8.2 series tasks, generate style variants with
        differences for the specified image

        - The prompt has no effect on variation output (it only produces style
        variants of the source image); to guide the changes with a prompt, use
        mj-v8.2-remix instead

        - Note: derived tasks based on V8.2 images (variation / remix / edit)
        are rendered by the V7 engine upstream (documented by the upstream
        channel); the result may differ slightly in style from the source image.
        Pricing is unchanged

        - Source task must be an image-generation, variation, remix or edit
        task; results of upload-paint / retexture / remove-bg are rejected by
        the upstream (405)

        - There is no `speed` field: `speed: fast` is accepted and ignored, any
        other value returns 400

        - Async processing mode, use the returned task ID to [query
        status](/en/api-manual/task-management/get-task-detail)
      operationId: createMjV82Variation
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ImageGenerationRequest'
            examples:
              basic_variation:
                summary: Basic Variation
                value:
                  model: mj-v8.2-variation
                  model_params:
                    task_id: task-unified-xxx
                    image_number: 2
                    type: strong
      responses:
        '200':
          description: Task created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ImageGenerationResponse'
        '400':
          description: Invalid request parameters
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: invalid_request
                  message: Invalid request parameters
                  type: invalid_request_error
        '401':
          description: Unauthorized, invalid or expired token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                error:
                  code: unauthorized
                  message: Invalid or expired token
                  type: authentication_error
        '402':
          description: Insufficient quota, please top up
          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: Access denied
          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-variation'
                  type: invalid_request_error
        '429':
          description: Rate limit exceeded
          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: Internal server error
          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
        - model_params
      properties:
        model:
          type: string
          enum:
            - mj-v8.2-variation
          default: mj-v8.2-variation
          description: Model name
        model_params:
          type: object
          description: Model parameters
          required:
            - task_id
          properties:
            task_id:
              type: string
              description: >-
                Source task ID, must be a completed mj-v8.2 series task (image
                generation, variation, remix or edit) that belongs to the
                current user
              example: task-unified-1757165031-mjv82
            image_number:
              type: integer
              default: 0
              description: >-
                Select which source image: 0-3 for a fast source task, 0-23 for
                a draft source task (all 24 sketches are valid sources)
              minimum: 0
              maximum: 23
            type:
              type: string
              enum:
                - subtle
                - strong
              default: subtle
              description: |-
                Variation strength

                - `subtle`: Subtle variation
                - `strong`: Strong variation
        callback_url:
          type: string
          description: >-
            HTTPS callback URL for task completion


            **Callback timing:**

            - Triggered when the task is completed or failed

            - Sent after billing confirmation


            **Security restrictions:**

            - HTTPS protocol only

            - Callbacks to private IP addresses are prohibited (127.0.0.1,
            10.x.x.x, 172.16-31.x.x, 192.168.x.x, etc.)

            - URL length must not exceed `2048` characters


            **Callback mechanism:**

            - Timeout: `10` seconds

            - Up to `3` retries after failure (retries at `1`s/`2`s/`4`s after
            failure)

            - Callback response body format matches the task query endpoint

            - A 2xx status code is considered successful; other status codes
            trigger retries
          format: uri
          example: https://your-domain.com/webhooks/image-task-completed
    ImageGenerationResponse:
      type: object
      properties:
        created:
          type: integer
          description: Task creation timestamp
          example: 1757165031
        id:
          type: string
          description: Task ID
          example: task-unified-1757165031-mjv82
        model:
          type: string
          description: Actual model name used
          example: mj-v8.2-variation
        object:
          type: string
          enum:
            - image.generation.task
          description: Task object type
        progress:
          type: integer
          description: Task progress percentage (0-100)
          minimum: 0
          maximum: 100
          example: 0
        status:
          type: string
          description: Task status
          enum:
            - pending
            - processing
            - completed
            - failed
          example: pending
        task_info:
          $ref: '#/components/schemas/TaskInfo'
          description: Async task info
        type:
          type: string
          enum:
            - text
            - image
            - audio
            - video
          description: Task output type
          example: image
        usage:
          $ref: '#/components/schemas/Usage'
          description: Usage and billing info
    ErrorResponse:
      type: object
      properties:
        error:
          type: object
          properties:
            code:
              type: string
              description: Error code identifier
            message:
              type: string
              description: Error message
            type:
              type: string
              description: Error type
    TaskInfo:
      type: object
      properties:
        estimated_time:
          type: integer
          description: Estimated completion time (seconds)
          minimum: 0
          example: 45
    Usage:
      type: object
      description: Usage and billing info
      properties:
        billing_rule:
          type: string
          description: Billing rule
          enum:
            - per_call
            - per_token
            - per_second
          example: per_call
        credits_reserved:
          type: number
          description: Estimated credits consumed
          minimum: 0
          example: 1.8
        user_group:
          type: string
          description: User group
          example: default
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        ## All endpoints require Bearer Token authentication ##


        **Get API Key:**


        Visit [API Key Management Page](https://evolink.ai/dashboard/keys) to
        get your API Key


        **Add to request header:**

        ```

        Authorization: Bearer YOUR_API_KEY

        ```

````

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