---
title: "Enqueue an image upscale (up to 4x, capped at 2048px; the image must be below 2048px on its longest side). One GENERATE_IMAGE charge (Roles: user)"
method: POST
path: "/jobs/upscale-image"
tags: ["Jobs"]
---

# Enqueue an image upscale (up to 4x, capped at 2048px; the image must be below 2048px on its longest side). One GENERATE_IMAGE charge (Roles: user)

`POST /jobs/upscale-image`

## Request

- Base URL: `https://api.ludo.ai/api`
- URL: `https://api.ludo.ai/api/jobs/upscale-image`
- Auth: API key in header `Authorization`

## Request body

- QueueUpscaleImagePayload
  - `image` GameImage, required
    - `tags` string[]
    - `id` string
    - `image_id` string
    - `url` string
    - `type` string
    - `final_score` number, float
    - `nsfw_prob` number, float
    - `similarity` number, float
    - `width` integer
    - `height` integer
    - `game_id` string
    - `hosted_filename` string
    - `icon` boolean
    - `targetSize` integer
    - `seed` integer
    - `embedded` boolean
    - `analysed` boolean
    - `image` string
    - `image_type` string
    - `prompt` string
    - `motion_prompt` string
    - `request_id` string
    - `hints` string[]
    - `selected_genres` string[]
    - `selected_colors` string[]
    - `selected_style` string
    - `selected_perspective` string
    - `is_safe` boolean
    - `platform` string
    - `loading` boolean
    - `original_hints` string[]
    - `genres` string[]
    - `edit_mask` string
    - `edit_mode` string
    - `camera_rotation` integer
    - `camera_elevation` integer
    - `edit_mask_pil_image` PILImage
      - `format` string
      - `format_description` string
    - `pil_image` PILImage
      - `format` string
      - `format_description` string
    - `nsfw` number, float
    - `pose` SpritePose
      - `animation_prompt` string: Animation description for the sprite pose
      - `margin_ratio` number, float: Margin ratio for the sprite animation
      - `margin_ratio_mode` string
      - `name` string: Name of the sprite pose
      - `prompt` string: Prompt description for the sprite pose
    - `render_3d` Sprite3DRender
      - `style_id` string
      - `style_version` integer
      - `style_params` object: Every setting of the style as rendered, by name.
      - `params` object: The renderer's own parameters (e.g. renderer, version).
      - `perspective` string
      - `direction` string
      - `animation_name` string
      - `fps` number, float
      - `keep_horizontal_travel` boolean
      - `keep_vertical_travel` boolean
      - `pixel_block` integer
      - `generated_model` object: The model that was rendered (its id, file urls and, from render, history_id - the three_d_asset history entry it came from).
    - `pixel_grid` integer[], nullable: Pixel-art grid dimensions [width, height] the ML detected in (or gave) the image, as on GeneratedVideo. The ML reports it on every image generation; absent when no grid was found and on images saved before it was recorded.
    - `pixel_size` number, float: Pixel art conversion only: the size of one pixel-art pixel, in the source image's pixels (the caller's, or the detected one).
    - `model` string: Id of the model the ML reports for the image (klimt, frida, ...). Absent on images saved before it was kept.
  - `request_id` string

## Response `202`

Accepted

- JobAcceptedResponse
  - `jobId` string, required
  - `status` 'queued' | 'running' | 'succeeded' | 'failed' | 'canceled', required
  - `queue_position` integer

## Other responses

- `400`: Error

## Changes

- **2026-10-15** `5386c8cd3d81`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/ludo/apis/ludo-ai-api/changes/jobs/upscale-image/post.md)

---

[API](https://skmtc.dev/ludo/apis/ludo-ai-api.md) - [All operations](https://skmtc.dev/ludo/apis/ludo-ai-api/llms.txt) - [OpenAPI document](https://skmtc.dev/ludo/apis/ludo-ai-api/revisions/4efeb12a23c9?raw)
