---
title: "Submit a content generation request"
url: "https://docs.api.pruna.ai/apis/models-api-0/versions/e82c070d-36fc-4aa3-b8cc-8140e0221f53/operations/createPrediction"
---

> Full API specification: https://docs.api.pruna.ai/apis/models-api-0/versions/e82c070d-36fc-4aa3-b8cc-8140e0221f53.md

# Submit a content generation request

`POST` `/v1/predictions`

Operation ID: `createPrediction`

Submit a request to generate images or videos using one of the available AI models. This is the first step in the workflow. The request will be queued for processing and you'll receive a prediction ID to track its status. The model to use is specified via the `Model` header. The request body structure varies by model (see examples below). If the `Try-Sync` header is set to true, the API will wait up to 60 seconds for completion. If generation completes within this time, the response will include the final result directly.

## Header parameters

- `Model` (string, required) - The AI model to use for generation. Each model has specific capabilities and input requirements.
- `Try-Sync` (boolean, optional) - If true, the API will wait up to 60 seconds for the generation to complete. If generation completes within this time, returns the final result directly with status 'succeeded' and generation_url. If it times out or this header is false/absent, follows the standard asynchronous workflow where you poll the status endpoint.

## Request body (required)

Content types: `application/json`

## Responses

- `201` - Prediction request created successfully. Returns either an async response with prediction ID (default) or a sync response with final results (if Try-Sync=true and generation completes within 60 seconds).
- `400` - Invalid request parameters
- `401` - Authentication failed
- `422` - Request validation failed - invalid input parameters
- `500` - Internal server error

## OpenAPI definition

```yaml
openapi: 3.0.3
info:
  title: P-API
  version: 0.1.0
servers:
  - url: https://api.pruna.ai
    description: Production server
paths:
  /v1/predictions:
    post:
      summary: Submit a content generation request
      description: >
        Submit a request to generate images or videos using one of the available
        AI models. This is the first step in the workflow.

        The request will be queued for processing and you'll receive a
        prediction ID to track its status.


        The model to use is specified via the `Model` header. The request body
        structure varies by model (see examples below).


        If the `Try-Sync` header is set to true, the API will wait up to 60
        seconds for completion. If generation completes within this time, the
        response will include the final result directly.
      operationId: createPrediction
      x-microcks-operation:
        dispatcher: HEADER
        dispatcherRules: Model
      tags:
        - Predictions
      security:
        - ApiKeyAuth: []
      parameters:
        - name: Model
          in: header
          required: true
          description: The AI model to use for generation. Each model has specific
            capabilities and input requirements.
          schema:
            type: string
            enum:
              - flux-dev
              - flux-dev-lora
              - wan-i2v
              - wan-t2v
              - wan-image-small
              - qwen-image
              - qwen-image-edit-plus
              - vace
              - p-image
              - p-image-edit
        - name: Try-Sync
          in: header
          required: false
          description: If true, the API will wait up to 60 seconds for the generation to
            complete. If generation completes within this time, returns the
            final result directly with status 'succeeded' and generation_url. If
            it times out or this header is false/absent, follows the standard
            asynchronous workflow where you poll the status endpoint.
          schema:
            type: boolean
            default: false
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/PredictionRequest"
            examples:
              flux-dev:
                summary: flux-dev
                description: "Advanced text-to-image generation using Flux.1-dev base model.
                  Supports multiple aspect ratios, speed optimizations, and
                  high-quality outputs. Rate limit: 150 requests per minute."
                value:
                  input:
                    prompt: A beautiful landscape with mountains and a lake at sunset, vibrant
                      colors, photorealistic
                    speed_mode: Juiced 🔥 (default)
                    num_inference_steps: 28
                    guidance: 3.5
                    seed: 42
                    aspect_ratio: 16:9
                    image_size: 1024
                    output_format: jpg
                    output_quality: 80
              flux-dev-lora:
                summary: flux-dev-lora
                description: "Text-to-image and image-to-image generation with Flux.1-dev
                  supporting custom LoRA weights from HuggingFace. Rate limit:
                  150 requests per minute."
                value:
                  input:
                    lora: prithivMLmods/Flux-Long-Toon-LoRA
                    seed: 42
                    prompt: Long toons, a close-up of a cartoon character with a red backdrop
                    guidance: 3
                    lora_scale: 1
                    megapixels: "1"
                    speed_mode: Extra Juiced 🔥
                    num_outputs: 1
                    aspect_ratio: 1:1
                    output_format: jpg
                    output_quality: 80
                    prompt_strength: 0.8
                    extra_lora_scale: 1
                    num_inference_steps: 28
              wan-i2v:
                summary: wan-i2v
                description: "Transform static images into animated videos with text prompts.
                  Supports 480p and 720p resolutions. Rate limit: 30 requests
                  per minute."
                value:
                  input:
                    image: https://api.pruna.ai/v1/files/<uploaded image>
                    prompt: Close-up shot of an elderly sailor wearing a yellow raincoat, seated on
                      the deck of a catamaran, slowly puffing on a pipe. His cat
                      lies quietly beside him with eyes closed, enjoying the
                      calm. The warm glow of the setting sun bathes the scene,
                      with gentle waves lapping against the hull and a few
                      seabirds circling slowly above. The camera slowly pushes
                      in, capturing this peaceful and harmonious moment.
                    num_frames: 81
                    resolution: 720p
                    sample_shift: 12
                    frames_per_second: 16
                    interpolate_output: true
                    lora_scale_transformer: 1
                    lora_scale_transformer_2: 1
              wan-t2v:
                summary: wan-t2v
                description: "Generate videos directly from text prompts. Supports 480p and 720p
                  resolutions with 16:9 and 9:16 aspect ratios. Rate limit: 30
                  requests per minute."
                value:
                  input:
                    prompt: A sports car is driving very fast along a beach at sunset
                    num_frames: 81
                    resolution: 480p
                    aspect_ratio: 16:9
                    sample_shift: 12
                    optimize_prompt: false
                    frames_per_second: 16
                    interpolate_output: true
                    lora_scale_transformer: 1
                    lora_scale_transformer_2: 1
              wan-image-small:
                summary: wan-image-small
                description: "Fast image generation optimized for speed. Rate limit: 150
                  requests per minute."
                value:
                  input:
                    prompt: a cute cat sitting on a windowsill, soft lighting, cozy atmosphere
                    juiced: false
                    aspect_ratio: 16:9
                    seed: 42
                    output_format: jpg
                    output_quality: 80
              qwen-image:
                summary: qwen-image
                description: "High-quality text-to-image generation with optional LoRA weights.
                  Rate limit: 150 requests per minute."
                value:
                  input:
                    prompt: Beautiful mountain landscape with a crystal clear lake reflecting the
                      peaks
                    enhance_prompt: false
                    aspect_ratio: 16:9
                    image_size: optimize_for_quality
                    go_fast: true
                    num_inference_steps: 30
                    guidance: 3
                    seed: 42
                    output_format: webp
                    output_quality: 80
                    negative_prompt: " "
                    disable_safety_checker: false
              qwen-image-edit-plus:
                summary: qwen-image-edit-plus
                description: "Edit images using text instructions. Supports multi-image editing
                  and pose transfer. Rate limit: 150 requests per minute."
                value:
                  input:
                    prompt: Change the background to a beach sunset scene
                    image:
                      - https://api.pruna.ai/v1/files/<uploaded-image>
                    aspect_ratio: 16:9
                    go_fast: true
                    seed: 42
                    output_format: webp
                    output_quality: 95
                    disable_safety_checker: false
              vace:
                summary: vace
                description: "Advanced video generation and editing with character reference
                  images and prompts. Input videos/images can be provided as
                  URLs or base64. Rate limit: 30 requests per minute."
                value:
                  input:
                    seed: -1
                    size: 832*480
                    prompt: A yellow car driving down a scenic mountain road at sunset
                    frame_num: 81
                    speed_mode: Extra Juiced 🚀 (even more speed)
                    src_ref_images:
                      - https://api.pruna.ai/pbxt/N323t5X69JB1MPD4w4cDIxK4rm0BG0W2JOWBrDrR4O9HTcyp/src_ref_image_1.png
                    src_video: https://api.pruna.ai/pbxt/N323u1ljtNYyyaLrgw0ZLmXgepvWlBvxbJWi3sAa2VDPuNus/src_video.mp4
                    sample_shift: 16
                    sample_steps: 50
                    sample_solver: unipc
                    sample_guide_scale: 5
              p-image:
                summary: p-image
                description: "Ultra-fast text-to-image generation with automatic prompt
                  enhancement and 2-stage refinement. Supports custom aspect
                  ratios and dimensions. Rate limit: 250 requests per minute."
                value:
                  input:
                    prompt: A majestic lion standing on a rocky cliff at sunset
                    aspect_ratio: 16:9
                    seed: 42
                    disable_safety_checker: false
              p-image-edit:
                summary: p-image-edit
                description: "Edit and compose multiple images (1-5) with text instructions.
                  Supports various editing modes and flexible aspect ratios.
                  Rate limit: 250 requests per minute."
                value:
                  input:
                    prompt: Transform the subject into a watercolor painting style
                    images:
                      - https://api.pruna.ai/v1/files/<uploaded image>
                      - https://api.pruna.ai/v1/files/<uploaded image>
                    aspect_ratio: 1:1
                    seed: 123
                    disable_safety_checker: false
      responses:
        "201":
          description: Prediction request created successfully. Returns either an async
            response with prediction ID (default) or a sync response with final
            results (if Try-Sync=true and generation completes within 60
            seconds).
          content:
            application/json:
              schema:
                oneOf:
                  - $ref: "#/components/schemas/PredictionResponse"
                  - type: object
                    properties:
                      status:
                        type: string
                        enum:
                          - succeeded
                        description: Generation completed successfully
                      generation_url:
                        type: string
                        description: URL to download the generated content
              examples:
                flux-dev:
                  summary: flux-dev response
                  value:
                    id: pred_fluxdev_001
                    model: flux-dev
                    input:
                      prompt: A beautiful landscape with mountains and a lake at sunset
                      speed_mode: Juiced 🔥 (default)
                      num_inference_steps: 28
                      guidance: 3.5
                      seed: 42
                    get_url: https://api.pruna.ai/v1/predictions/status/pred_fluxdev_001
                flux-dev-lora:
                  summary: flux-dev-lora response
                  value:
                    id: pred_fluxdevlora_001
                    model: flux-dev-lora
                    input:
                      prompt: Long toons, a close-up of a cartoon character
                      lora: prithivMLmods/Flux-Long-Toon-LoRA
                      num_inference_steps: 28
                      guidance: 3
                      seed: 42
                    get_url: https://api.pruna.ai/v1/predictions/status/pred_fluxdevlora_001
                wan-i2v:
                  summary: wan-i2v response
                  value:
                    id: pred_wani2v_001
                    model: wan-i2v
                    input:
                      prompt: Close-up shot of an elderly sailor wearing a yellow raincoat
                      image: https://api.pruna.ai/v1/files/example_image
                      num_frames: 81
                      resolution: 480p
                    get_url: https://api.pruna.ai/v1/predictions/status/pred_wani2v_001
                wan-t2v:
                  summary: wan-t2v response
                  value:
                    id: pred_want2v_001
                    model: wan-t2v
                    input:
                      prompt: A sports car driving along a beach at sunset
                      num_frames: 81
                      resolution: 480p
                      aspect_ratio: 16:9
                    get_url: https://api.pruna.ai/v1/predictions/status/pred_want2v_001
                wan-image-small:
                  summary: wan-image-small response
                  value:
                    id: pred_wanimagesmall_001
                    model: wan-image-small
                    input:
                      prompt: A cute cat sitting on a windowsill
                      aspect_ratio: 16:9
                      seed: 42
                    get_url: https://api.pruna.ai/v1/predictions/status/pred_wanimagesmall_001
                qwen-image:
                  summary: qwen-image response
                  value:
                    id: pred_qwenimage_001
                    model: qwen-image
                    input:
                      prompt: Beautiful mountain landscape with a crystal clear lake
                      num_inference_steps: 30
                      guidance: 3
                      seed: 42
                    get_url: https://api.pruna.ai/v1/predictions/status/pred_qwenimage_001
                qwen-image-edit-plus:
                  summary: qwen-image-edit-plus response
                  value:
                    id: pred_qwenimageeditplus_001
                    model: qwen-image-edit-plus
                    input:
                      prompt: Change the background to a beach sunset scene
                      image:
                        - https://api.pruna.ai/v1/files/example_image
                      seed: 42
                    get_url: https://api.pruna.ai/v1/predictions/status/pred_qwenimageeditplus_001
                vace:
                  summary: vace response
                  value:
                    id: pred_vace_001
                    model: vace
                    input:
                      prompt: A yellow car driving down a scenic mountain road
                      frame_num: 81
                      sample_guide_scale: 5
                      sample_shift: 16
                      sample_solver: unipc
                      sample_steps: 50
                      seed: -1
                      size: 832*480
                      speed_mode: Extra Juiced 🚀 (even more speed)
                      src_ref_images:
                        - https://api.pruna.ai/pbxt/N323t5X69JB1MPD4w4cDIxK4rm0BG0W2JOWBrDrR4O9HTcyp/src_ref_image_1.png
                      src_video: https://api.pruna.ai/pbxt/N323u1ljtNYyyaLrgw0ZLmXgepvWlBvxbJWi3sAa2VDPuNus/src_video.mp4
                    get_url: https://api.pruna.ai/v1/predictions/status/pred_vace_001
                p-image:
                  summary: p-image response
                  value:
                    id: pred_pimage_001
                    model: p-image
                    input:
                      prompt: A majestic lion standing on a rocky cliff at sunset
                      aspect_ratio: 16:9
                      seed: 42
                    get_url: https://api.pruna.ai/v1/predictions/status/pred_pimage_001
                p-image-edit:
                  summary: p-image-edit response
                  value:
                    id: pred_pimageedit_001
                    model: p-image-edit
                    input:
                      prompt: Transform the subject into a watercolor painting style
                      images:
                        - https://api.pruna.ai/v1/files/example_image
                      aspect_ratio: 1:1
                      seed: 123
                    get_url: https://api.pruna.ai/v1/predictions/status/pred_pimageedit_001
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "422":
          $ref: "#/components/responses/ValidationError"
        "500":
          $ref: "#/components/responses/InternalServerError"
security:
  - ApiKeyAuth: []
components:
  schemas:
    PredictionRequest:
      type: object
      required:
        - input
      oneOf:
        - $ref: "#/components/schemas/flux-dev"
        - $ref: "#/components/schemas/flux-dev-lora"
        - $ref: "#/components/schemas/wan-i2v"
        - $ref: "#/components/schemas/wan-t2v"
        - $ref: "#/components/schemas/wan-image-small"
        - $ref: "#/components/schemas/qwen-image"
        - $ref: "#/components/schemas/qwen-image-edit-plus"
        - $ref: "#/components/schemas/vace"
        - $ref: "#/components/schemas/p-image"
        - $ref: "#/components/schemas/p-image-edit"
    PredictionResponse:
      type: object
      required:
        - id
        - model
        - input
        - get_url
      properties:
        id:
          type: string
          description: Unique identifier for the prediction
          example: 1zww7deyssrme0csqwr90phzzr
        model:
          type: string
          description: Model identifier used for this prediction
          example: vace
        input:
          type: object
          description: The input parameters provided for this prediction
          additionalProperties: true
        get_url:
          type: string
          format: uri
          description: URL to check prediction status
          example: https://api.pruna.ai/v1/predictions/status/1zww7deyssrme0csqwr90phzzr
    flux-dev:
      type: object
      required:
        - input
      properties:
        input:
          type: object
          required:
            - prompt
          properties:
            prompt:
              type: string
              description: Text prompt for image generation
            speed_mode:
              type: string
              description: Speed optimization level
              enum:
                - Lightly Juiced 🍊 (more consistent)
                - Juiced 🔥 (default)
                - Extra Juiced 🔥 (more speed)
                - Blink of an eye 👁️
              default: Juiced 🔥 (default)
            num_inference_steps:
              type: integer
              description: Number of inference steps
              default: 28
            guidance:
              type: number
              description: Guidance scale
              default: 3.5
            seed:
              type: integer
              description: Random seed (-1 for random)
              default: -1
            aspect_ratio:
              type: string
              description: Aspect ratio of output image
              enum:
                - 1:1
                - 16:9
                - 21:9
                - 3:2
                - 2:3
                - 4:5
                - 5:4
                - 3:4
                - 4:3
                - 9:16
                - 9:21
              default: 1:1
            image_size:
              type: integer
              description: Base image size (longest side)
              default: 1024
            output_format:
              type: string
              description: Output format
              enum:
                - png
                - jpg
                - webp
              default: jpg
            output_quality:
              type: integer
              description: Output quality (for jpg and webp)
              minimum: 1
              maximum: 100
    flux-dev-lora:
      type: object
      required:
        - input
      properties:
        input:
          type: object
          required:
            - prompt
          properties:
            prompt:
              type: string
              description: Text prompt for image generation
            lora:
              type: string
              description: HuggingFace LoRA URL (e.g., owner/model-name)
            lora_scale:
              type: number
              description: LoRA application strength
              minimum: -1
              maximum: 3
              default: 1
            extra_lora:
              type: string
              description: Second HuggingFace LoRA URL
            extra_lora_scale:
              type: number
              description: Second LoRA application strength
              minimum: -1
              maximum: 3
              default: 1
            image:
              type: string
              format: uri
              description: Input image for img2img mode
            prompt_strength:
              type: number
              description: Prompt strength for img2img
              minimum: 0
              maximum: 1
              default: 0.8
            num_outputs:
              type: integer
              description: Number of outputs to generate
              minimum: 1
              maximum: 4
              default: 1
            num_inference_steps:
              type: integer
              description: Number of denoising steps
              default: 28
            guidance:
              type: number
              description: Guidance scale
              minimum: 0
              maximum: 10
              default: 3
            seed:
              type: integer
              description: Random seed
            aspect_ratio:
              type: string
              description: Aspect ratio of output image
              enum:
                - 1:1
                - 16:9
                - 21:9
                - 3:2
                - 2:3
                - 4:5
                - 5:4
                - 3:4
                - 4:3
                - 9:16
                - 9:21
              default: 1:1
            output_format:
              type: string
              description: Output format
              enum:
                - png
                - jpg
                - webp
              default: jpg
            output_quality:
              type: integer
              description: Output quality (for jpg/webp)
              minimum: 1
              maximum: 100
              default: 80
            speed_mode:
              type: string
              description: Speed optimization level
              enum:
                - Base Model (compiled)
                - Lightly Juiced 🍊
                - Juiced 🧃
                - Extra Juiced 🔥
              default: Juiced 🧃
            megapixels:
              type: string
              description: Approximate megapixels for output
              enum:
                - "1"
                - "0.25"
              default: "1"
          additionalProperties: false
    wan-i2v:
      type: object
      required:
        - input
      properties:
        input:
          type: object
          required:
            - prompt
            - image
          properties:
            prompt:
              type: string
              description: Text prompt for video generation
            image:
              type: string
              format: uri
              description: Input image to generate video from
            last_image:
              type: string
              format: uri
              description: Optional last image to condition the video generation. If provided,
                creates smoother transitions between frames
            num_frames:
              type: integer
              description: Number of video frames. 81 frames give the best results
              minimum: 81
              maximum: 121
              default: 81
            resolution:
              type: string
              description: Resolution of video. 16:9 corresponds to 832x480px, and 9:16 is
                480x832px
              enum:
                - 480p
                - 720p
              default: 480p
            frames_per_second:
              type: integer
              description: Frames per second. Note that the pricing of this model is based on
                the video duration at 16 fps
              minimum: 5
              maximum: 30
              default: 16
            interpolate_output:
              type: boolean
              description: Interpolate the generated video to 30 FPS using ffmpeg
              default: false
            go_fast:
              type: boolean
              description: Go fast
              default: true
            sample_shift:
              type: number
              description: Sample shift factor
              minimum: 1
              maximum: 20
              default: 12
            seed:
              type: integer
              description: Random seed. Leave blank for random
            disable_safety_checker:
              type: boolean
              description: Disable safety checker for generated video
              default: false
            lora_weights_transformer:
              type: string
              format: uri
              description: Load LoRA weights for the HIGH transformer. Supports arbitrary
                .safetensors URLs from the Internet (e.g.,
                'https://huggingface.co/TheRaf7/instagirl-v2/resolve/main/Instagirlv2.0_hinoise.safetensors')
            lora_scale_transformer:
              type: number
              description: Determines how strongly the transformer LoRA should be applied
              default: 1
            lora_weights_transformer_2:
              type: string
              format: uri
              description: Load LoRA weights for the LOW transformer_2. Supports arbitrary
                .safetensors URLs from the Internet. Can be different from
                transformer LoRA (e.g.,
                'https://huggingface.co/TheRaf7/instagirl-v2/resolve/main/Instagirlv2.0_lownoise.safetensors')
            lora_scale_transformer_2:
              type: number
              description: Determines how strongly the transformer_2 LoRA should be applied
              default: 1
          additionalProperties: false
    wan-t2v:
      type: object
      required:
        - input
      properties:
        input:
          type: object
          required:
            - prompt
          properties:
            prompt:
              type: string
              description: Text prompt for video generation
            optimize_prompt:
              type: boolean
              description: Translate prompt to Chinese before generation
              default: false
            num_frames:
              type: integer
              description: Number of video frames. 81 frames give the best results
              minimum: 81
              maximum: 121
              default: 81
            aspect_ratio:
              type: string
              description: Aspect ratio of video. 16:9 corresponds to 832x480px, and 9:16 is
                480x832px
              enum:
                - 16:9
                - 9:16
              default: 16:9
            resolution:
              type: string
              description: Resolution of video. 16:9 corresponds to 832x480px, and 9:16 is
                480x832px
              enum:
                - 480p
                - 720p
              default: 480p
            frames_per_second:
              type: integer
              description: Frames per second. Note that the pricing of this model is based on
                the video duration at 16 fps
              minimum: 5
              maximum: 30
              default: 16
            interpolate_output:
              type: boolean
              description: Interpolate the generated video to 30 FPS using ffmpeg
              default: false
            go_fast:
              type: boolean
              description: Go fast
              default: true
            sample_shift:
              type: number
              description: Sample shift factor
              minimum: 1
              maximum: 20
              default: 12
            seed:
              type: integer
              description: Random seed. Leave blank for random
            disable_safety_checker:
              type: boolean
              description: Disable safety checker for generated video
              default: false
            lora_weights_transformer:
              type: string
              format: uri
              description: Load LoRA weights for transformer. Supports arbitrary .safetensors
                URLs from the Internet (e.g.,
                'https://huggingface.co/Viktor1717/scandinavian-interior-style1/resolve/main/my_first_flux_lora_v1.safetensors')
            lora_scale_transformer:
              type: number
              description: Determines how strongly the transformer LoRA should be applied
              default: 1
            lora_weights_transformer_2:
              type: string
              format: uri
              description: Load LoRA weights for transformer_2. Supports arbitrary
                .safetensors URLs from the Internet. Can be different from
                transformer LoRA
            lora_scale_transformer_2:
              type: number
              description: Determines how strongly the transformer_2 LoRA should be applied
              default: 1
          additionalProperties: false
    wan-image-small:
      type: object
      required:
        - input
      properties:
        input:
          type: object
          required:
            - prompt
          properties:
            prompt:
              type: string
              description: Text prompt for image generation
            juiced:
              type: boolean
              description: Enable faster generation
              default: false
            aspect_ratio:
              type: string
              description: Aspect ratio for the generated image. Use 'custom' to specify width
                and height manually.
              enum:
                - 1:1
                - 16:9
                - 9:16
                - 4:3
                - 3:4
                - 21:9
                - custom
              default: 16:9
            width:
              type: integer
              description: Width of the generated image. Only used when aspect_ratio=custom.
                Must be a multiple of 16.
              minimum: 256
              maximum: 900
            height:
              type: integer
              description: Height of the generated image. Only used when aspect_ratio=custom.
                Must be a multiple of 16.
              minimum: 256
              maximum: 900
            seed:
              type: integer
              description: Random seed for reproducible generation
            output_format:
              type: string
              description: Output format
              enum:
                - png
                - jpg
                - webp
              default: jpg
            output_quality:
              type: integer
              description: Output quality (for jpg/webp)
              minimum: 1
              maximum: 100
              default: 80
          additionalProperties: false
    qwen-image:
      type: object
      required:
        - input
      properties:
        input:
          type: object
          required:
            - prompt
          properties:
            prompt:
              type: string
              description: Text prompt for image generation
            enhance_prompt:
              type: boolean
              description: Enhance the prompt with positive magic
              default: false
            lora_weights:
              type: string
              format: uri
              description: Load LoRA weights. Supports arbitrary .safetensors URLs, tar files,
                and zip files from the Internet
            replicate_weights:
              type: string
              format: uri
              description: Load LoRA weights from Replicate training. Supports arbitrary
                .safetensors URLs, tar files, and zip files
            lora_scale:
              type: number
              description: Determines how strongly the main LoRA should be applied
              default: 1
            extra_lora_weights:
              type: array
              items:
                type: string
                format: uri
              description: Additional LoRA weights as an array of URLs. Same formats supported
                as lora_weights
            extra_lora_scale:
              type: array
              items:
                type: number
              description: Scales for additional LoRAs as an array of numbers. Must match the
                number of weights in extra_lora_weights
            image:
              type: string
              format: uri
              description: Input image for img2img pipeline
            strength:
              type: number
              description: Strength for img2img pipeline
              minimum: 0
              maximum: 1
              default: 0.9
            negative_prompt:
              type: string
              description: Negative prompt for generated image
              default: " "
            aspect_ratio:
              type: string
              description: Aspect ratio for the generated image
              enum:
                - 1:1
                - 16:9
                - 9:16
                - 4:3
                - 3:4
              default: 16:9
            image_size:
              type: string
              description: Image size for the generated image
              enum:
                - optimize_for_quality
                - optimize_for_speed
              default: optimize_for_quality
            go_fast:
              type: boolean
              description: Run faster predictions with additional optimizations
              default: true
            num_inference_steps:
              type: integer
              description: Number of denoising steps. Recommended range is 28-50
              minimum: 1
              maximum: 50
              default: 30
            guidance:
              type: number
              description: Guidance for generated image. Lower values can give more realistic
                images
              minimum: 0
              maximum: 10
              default: 3
            seed:
              type: integer
              description: Random seed. Set for reproducible generation
            output_format:
              type: string
              description: Format of the output images
              enum:
                - webp
                - jpg
                - png
              default: webp
            output_quality:
              type: integer
              description: Quality when saving the output images
              minimum: 0
              maximum: 100
              default: 80
            disable_safety_checker:
              type: boolean
              description: Disable safety checker for generated images
              default: false
          additionalProperties: false
    qwen-image-edit-plus:
      type: object
      required:
        - input
      properties:
        input:
          type: object
          required:
            - image
            - prompt
          properties:
            prompt:
              type: string
              description: Text instruction on how to edit the given image
            image:
              oneOf:
                - type: string
                  format: uri
                - type: array
                  items:
                    type: string
                    format: uri
                  minItems: 1
                  maxItems: 2
              description: Images to use as reference. Must be jpeg, png, gif, or webp
            aspect_ratio:
              type: string
              description: Aspect ratio for the generated image
              enum:
                - match_input_image
                - 16:9
                - 9:16
                - 1:1
                - 4:3
                - 3:4
              default: match_input_image
            go_fast:
              type: boolean
              description: Run faster predictions with additional optimizations
              default: true
            seed:
              type: integer
              description: Random seed. Set for reproducible generation
            output_format:
              type: string
              description: Format of the output images
              enum:
                - webp
                - jpg
                - png
              default: webp
            output_quality:
              type: integer
              description: Quality when saving the output images
              minimum: 0
              maximum: 100
              default: 95
            disable_safety_checker:
              type: boolean
              description: Disable safety checker for generated images
              default: false
          additionalProperties: false
    vace:
      type: object
      required:
        - input
      properties:
        input:
          type: object
          required:
            - prompt
          properties:
            prompt:
              type: string
              description: Text prompt describing the edit
            src_video:
              type: string
              description: Input video to edit (HTTP URL or base64 data URI)
            src_mask:
              type: string
              description: Input mask video or image (HTTP URL or base64 data URI)
            src_ref_images:
              type: array
              items:
                type: string
              description: Array of reference images (HTTP URLs or base64 data URIs)
            speed_mode:
              type: string
              description: Speed optimization level
              enum:
                - Lightly Juiced 🍊 (more consistent)
                - Juiced 🔥 (more speed)
                - Extra Juiced 🚀 (even more speed)
              default: Lightly Juiced 🍊 (more consistent)
            frame_num:
              type: integer
              description: Number of frames to generate
              default: 81
            size:
              type: string
              description: Output resolution
              enum:
                - 720*1280
                - 1280*720
                - 480*832
                - 832*480
              default: 832*480
            seed:
              type: integer
              description: Random seed (-1 for random)
              default: -1
            sample_shift:
              type: integer
              description: Sample shift parameter
              default: 16
            sample_solver:
              type: string
              description: Sample solver algorithm
              enum:
                - unipc
                - dpm++
              default: unipc
            sample_steps:
              type: integer
              description: Number of sampling steps
              default: 50
            sample_guide_scale:
              type: number
              description: Guidance scale for sampling
              default: 5
          additionalProperties: false
    p-image:
      type: object
      required:
        - input
      properties:
        input:
          type: object
          required:
            - prompt
          properties:
            prompt:
              type: string
              description: Text prompt for image generation
            aspect_ratio:
              type: string
              description: Aspect ratio for the generated image. Use 'custom' to specify width
                and height manually.
              enum:
                - 1:1
                - 16:9
                - 9:16
                - 4:3
                - 3:4
                - 3:2
                - 2:3
                - custom
              default: 16:9
            width:
              type: integer
              description: Width of the generated image. Only used when aspect_ratio=custom.
                Must be a multiple of 16.
              minimum: 256
              maximum: 1440
            height:
              type: integer
              description: Height of the generated image. Only used when aspect_ratio=custom.
                Must be a multiple of 16.
              minimum: 256
              maximum: 1440
            seed:
              type: integer
              description: Random seed for reproducible generation
            disable_safety_checker:
              type: boolean
              description: Disable safety checker for generated images
              default: false
          additionalProperties: false
    p-image-edit:
      type: object
      required:
        - input
      properties:
        input:
          type: object
          required:
            - prompt
            - images
          properties:
            prompt:
              type: string
              description: Text prompt for image editing
            images:
              type: array
              items:
                type: string
                format: uri
              description: Images to use as reference (1-5 images)
              minItems: 1
              maxItems: 5
            mode:
              type: string
              description: Mode to use with P-Edit
              enum:
                - default
                - multiple_angles
                - relight
                - light_restoration
                - white_to_scene
                - fusion
                - add_characters
                - next_scene
                - style_consistency
                - subject_consistency
              default: default
            aspect_ratio:
              type: string
              description: Aspect ratio for the generated image
              enum:
                - match_input_image
                - 1:1
                - 16:9
                - 9:16
                - 4:3
                - 3:4
                - 3:2
                - 2:3
              default: match_input_image
            seed:
              type: integer
              description: Random seed for reproducible generation
            disable_safety_checker:
              type: boolean
              description: Disable safety checker for generated images
              default: false
            turbo:
              type: boolean
              description: If turned on, the model will run faster with additional
                optimizations. For complicated tasks, it is recommended to turn
                this off.
              default: true
          additionalProperties: false
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - code
            - message
          properties:
            code:
              type: string
              description: Machine-readable error code
            message:
              type: string
              description: Human-readable error message
            details:
              type: string
              description: Additional error context
        request_id:
          type: string
          description: Unique request identifier for debugging
          example: req_1234567890
  responses:
    BadRequest:
      description: Invalid request parameters
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Error"
          example:
            error:
              code: VALIDATION_ERROR
              message: Invalid request parameters
              details: Field 'model' is required
            request_id: req_1234567890
    Unauthorized:
      description: Authentication failed
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Error"
          example:
            error:
              code: AUTHENTICATION_FAILED
              message: Invalid or missing API key
              details: Include your API key in the 'apikey' header
            request_id: req_1234567890
    ValidationError:
      description: Request validation failed - invalid input parameters
      content:
        application/json:
          schema:
            type: object
            required:
              - detail
              - status
              - title
            properties:
              detail:
                type: string
                description: Human-readable error summary
                example: >
                  - input.num_inference_steps: Invalid type. Expected: integer,
                  given: string
              status:
                type: integer
                description: HTTP status code
                example: 422
              title:
                type: string
                description: Error title
                example: Input validation failed
              invalid_fields:
                type: array
                description: List of field-specific validation errors
                items:
                  type: object
                  required:
                    - type
                    - field
                    - description
                  properties:
                    type:
                      type: string
                      description: Type of validation error
                      example: invalid_type
                    field:
                      type: string
                      description: Field path that failed validation
                      example: input.num_inference_steps
                    description:
                      type: string
                      description: Error description
                      example: "Invalid type. Expected: integer, given: string"
          examples:
            type_error:
              summary: Invalid parameter type
              value:
                detail: >
                  - input.num_inference_steps: Invalid type. Expected: integer,
                  given: string
                status: 422
                title: Input validation failed
                invalid_fields:
                  - type: invalid_type
                    field: input.num_inference_steps
                    description: "Invalid type. Expected: integer, given: string"
            missing_field:
              summary: Required field missing
              value:
                detail: |
                  - input.prompt: Field required
                status: 422
                title: Input validation failed
                invalid_fields:
                  - type: missing
                    field: input.prompt
                    description: Field required
    InternalServerError:
      description: Internal server error
      content:
        application/json:
          schema:
            $ref: "#/components/schemas/Error"
          example:
            error:
              code: INTERNAL_ERROR
              message: An unexpected error occurred
              details: Please try again later or contact support if the problem persists
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: apikey
      description: >
        API key for authentication. You can obtain your API key from the Pruna
        AI dashboard.

        Include it in the `apikey` header for all requests.
```
