---
title: "Changes to Convert an image to pixel art: any art, broken AI pixel art or pixel art comes back as pixel art at about the input's own size. Free (no credits) and synchronous: the call answers with the result directly, with no job to poll. `pixel_size` is the size of one pixel-art pixel, in the input's pixels: larger values give coarser art. Omit it to use the image's own pixel size, which only works on an image that already has a pixel grid - when none can be detected the call fails with HTTP 400 asking for a pixel_size. On an input already on a pixel grid, a pixel_size you pass snaps to whole steps of that grid. `palette_size` (2-256) caps the number of colours; omit it to keep the colours as they are. The response has the image `url`, the `pixel_size` used (fractional when it was detected) and the art's size in pixel-art pixels as `columns` and `rows`; resize the image to columns x rows with nearest-neighbour to get one image pixel per art pixel. The source image (URL or base64) is uploaded and validated, and one larger than 15MB is rejected with HTTP 400. The source is left as it is and the result is a new image. Limited to 20 calls per 5 minutes, 120 an hour and 1000 a day. Pass an optional request_id to tag the result for later retrieval via listGenerations (type image). Requires an API key (user scope)."
method: POST
path: "/assets/image/pixel-art"
---

# Changes to Convert an image to pixel art: any art, broken AI pixel art or pixel art comes back as pixel art at about the input's own size. Free (no credits) and synchronous: the call answers with the result directly, with no job to poll. `pixel_size` is the size of one pixel-art pixel, in the input's pixels: larger values give coarser art. Omit it to use the image's own pixel size, which only works on an image that already has a pixel grid - when none can be detected the call fails with HTTP 400 asking for a pixel_size. On an input already on a pixel grid, a pixel_size you pass snaps to whole steps of that grid. `palette_size` (2-256) caps the number of colours; omit it to keep the colours as they are. The response has the image `url`, the `pixel_size` used (fractional when it was detected) and the art's size in pixel-art pixels as `columns` and `rows`; resize the image to columns x rows with nearest-neighbour to get one image pixel per art pixel. The source image (URL or base64) is uploaded and validated, and one larger than 15MB is rejected with HTTP 400. The source is left as it is and the result is a new image. Limited to 20 calls per 5 minutes, 120 an hour and 1000 a day. Pass an optional request_id to tag the result for later retrieval via listGenerations (type image). Requires an API key (user scope).

`POST /assets/image/pixel-art`

> Every recorded change to this operation, newest first.

## Timeline

Changed in 1 of 42 revisions.

- **2026-10-27** `1c57b80a318f`: 1 info

## Changes

- **2026-10-27** `1c57b80a318f`: 1 info
  - endpoint added

---

[Operation](https://skmtc.dev/ludo/apis/ludo-ai-api/docs/assets/image/pixel-art/post.md) - [API](https://skmtc.dev/ludo/apis/ludo-ai-api.md) - [Page](https://skmtc.dev/ludo/apis/ludo-ai-api/changes/assets/image/pixel-art/post)
