---
title: "Submit a content generation request"
url: "https://docs.api.pruna.ai/apis/models-api-0/versions/7dfbc266-0f94-4c90-8518-d9e4d1a245ec/operations/createPrediction"
---

> Full API specification: https://docs.api.pruna.ai/apis/models-api-0/versions/7dfbc266-0f94-4c90-8518-d9e4d1a245ec.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.

## 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.3.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
              - flux-2-klein-4b
              - wan-i2v
              - wan-t2v
              - wan-image-small
              - qwen-image
              - qwen-image-fast
              - qwen-image-edit-plus
              - vace
              - p-image
              - p-image-edit
              - p-image-lora
              - p-image-edit-lora
              - z-image-turbo
              - z-image-turbo-lora
              - p-image-trainer
              - p-image-edit-trainer
        - name: Try-Sync
          in: header
          required: false
          description: If true, the API will wait up to 60 seconds for the generation to
            complete.
          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.
                value:
                  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
                    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.
                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.
                value:
                  input:
                    image: https://api.pruna.ai/v1/files/abc123xyz789
                    prompt: Close-up shot of an elderly sailor wearing a yellow raincoat
                    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.
                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.
                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.
                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.
                value:
                  input:
                    prompt: Change the background to a beach sunset scene
                    image:
                      - https://api.pruna.ai/v1/files/abc123xyz789
                    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.
                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.
                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 with text instructions.
                value:
                  input:
                    prompt: Transform the subject into a watercolor painting style
                    images:
                      - https://api.pruna.ai/v1/files/abc123xyz789
                      - https://api.pruna.ai/v1/files/def456uvw012
                    aspect_ratio: 1:1
                    seed: 123
                    disable_safety_checker: false
              flux-2-klein-4b:
                summary: flux-2-klein-4b
                description: Lightweight and fast text-to-image generation using Flux Klein 4B.
                value:
                  input:
                    prompt: A serene mountain landscape at dawn with mist rolling through the
                      valleys
                    aspect_ratio: 16:9
                    seed: 42
                    output_format: jpg
                    output_quality: 80
              p-image-lora:
                summary: p-image-lora
                description: Text-to-image generation with custom LoRA weights from HuggingFace.
                value:
                  input:
                    prompt: A portrait in my custom artistic style
                    lora_weights: huggingface.co/your-username/your-lora-repo
                    lora_scale: 1
                    aspect_ratio: 1:1
                    seed: 42
              p-image-edit-lora:
                summary: p-image-edit-lora
                description: Image editing with custom LoRA weights from HuggingFace.
                value:
                  input:
                    prompt: Apply my custom transformation to image 1
                    images:
                      - https://api.pruna.ai/v1/files/abc123xyz789
                    lora_weights: huggingface.co/your-username/your-edit-lora
                    lora_scale: 1
              p-image-trainer:
                summary: p-image-trainer
                description: Train custom LoRA weights for text-to-image generation.
                value:
                  input:
                    image_data: https://your-storage.com/training_data.zip
                    steps: 1000
                    training_type: balanced
              p-image-edit-trainer:
                summary: p-image-edit-trainer
                description: Train custom LoRA weights for image editing transformations.
                value:
                  input:
                    image_data: https://your-storage.com/edit_pairs.zip
                    steps: 1000
                    default_caption: apply the trained transformation
              qwen-image-fast:
                summary: qwen-image-fast
                description: Fast text-to-image generation optimized for speed.
                value:
                  input:
                    prompt: A serene Japanese garden with cherry blossoms and a traditional wooden
                      bridge
                    aspect_ratio: 16:9
                    creativity: 0.62
                    seed: 42
              z-image-turbo:
                summary: z-image-turbo
                description: Ultra-fast text-to-image generation with Z-Image Turbo.
                value:
                  input:
                    prompt: Sunset over mountain landscape, vibrant colors, dramatic clouds
                    width: 1024
                    height: 1024
                    num_inference_steps: 8
                    output_format: jpg
                    seed: 42
              z-image-turbo-lora:
                summary: z-image-turbo-lora
                description: Ultra-fast text-to-image generation with LoRA support for custom
                  styles.
                value:
                  input:
                    prompt: Portrait of a warrior in epic fantasy armor
                    width: 1024
                    height: 1024
                    seed: 42
      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/abc123xyz789
                      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/abc123xyz789
                      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/abc123xyz789
                      aspect_ratio: 1:1
                      seed: 123
                    get_url: https://api.pruna.ai/v1/predictions/status/pred_pimageedit_001
                flux-2-klein-4b:
                  summary: flux-2-klein-4b response
                  value:
                    id: pred_flux2klein4b_001
                    model: flux-2-klein-4b
                    input:
                      prompt: A serene mountain landscape at dawn with mist rolling through the
                        valleys
                      aspect_ratio: 16:9
                      seed: 42
                      output_format: jpg
                      output_quality: 80
                    get_url: https://api.pruna.ai/v1/predictions/status/pred_flux2klein4b_001
                p-image-lora:
                  summary: p-image-lora response
                  value:
                    id: pred_pimagelora_001
                    model: p-image-lora
                    input:
                      prompt: A portrait in my custom artistic style
                      lora_weights: huggingface.co/your-username/your-lora-repo
                      lora_scale: 1
                      aspect_ratio: 1:1
                      seed: 42
                    get_url: https://api.pruna.ai/v1/predictions/status/pred_pimagelora_001
                p-image-edit-lora:
                  summary: p-image-edit-lora response
                  value:
                    id: pred_pimageeditlora_001
                    model: p-image-edit-lora
                    input:
                      prompt: Apply my custom transformation to image 1
                      images:
                        - https://api.pruna.ai/v1/files/abc123xyz789
                      lora_weights: huggingface.co/your-username/your-edit-lora
                      lora_scale: 1
                    get_url: https://api.pruna.ai/v1/predictions/status/pred_pimageeditlora_001
                p-image-trainer:
                  summary: p-image-trainer response
                  value:
                    id: pred_pimagetrainer_001
                    model: p-image-trainer
                    input:
                      image_data: https://your-storage.com/training_data.zip
                      steps: 1000
                      training_type: balanced
                    get_url: https://api.pruna.ai/v1/predictions/status/pred_pimagetrainer_001
                p-image-edit-trainer:
                  summary: p-image-edit-trainer response
                  value:
                    id: pred_pimageedittrainer_001
                    model: p-image-edit-trainer
                    input:
                      image_data: https://your-storage.com/edit_pairs.zip
                      steps: 1000
                      default_caption: apply the trained transformation
                    get_url: https://api.pruna.ai/v1/predictions/status/pred_pimageedittrainer_001
                qwen-image-fast:
                  summary: qwen-image-fast response
                  value:
                    id: pred_qwenimagefast_001
                    model: qwen-image-fast
                    input:
                      prompt: A serene Japanese garden with cherry blossoms and a traditional wooden
                        bridge
                      aspect_ratio: 16:9
                      creativity: 0.62
                      seed: 42
                    get_url: https://api.pruna.ai/v1/predictions/status/pred_qwenimagefast_001
                z-image-turbo:
                  summary: z-image-turbo response
                  value:
                    id: pred_zimageturbo_001
                    model: z-image-turbo
                    input:
                      prompt: Sunset over mountain landscape, vibrant colors, dramatic clouds
                      width: 1024
                      height: 1024
                      num_inference_steps: 8
                      output_format: jpg
                      seed: 42
                    get_url: https://api.pruna.ai/v1/predictions/status/pred_zimageturbo_001
                z-image-turbo-lora:
                  summary: z-image-turbo-lora response
                  value:
                    id: pred_zimageturbolora_001
                    model: z-image-turbo-lora
                    input:
                      prompt: Portrait of a warrior in epic fantasy armor
                      width: 1024
                      height: 1024
                      seed: 42
                    get_url: https://api.pruna.ai/v1/predictions/status/pred_zimageturbolora_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
      properties:
        input:
          type: object
          description: Model-specific input parameters
          additionalProperties: true
    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
    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.
```
