---
title: "Write bulk pixel data to an overlay model in a single request, as an alternative to one round trip per pixel via `.../pixel`."
method: PUT
path: "/api/overlays/model/{model}/data"
tags: ["overlays"]
---

# Write bulk pixel data to an overlay model in a single request, as an alternative to one round trip per pixel via `.../pixel`.

`PUT /api/overlays/model/{model}/data`

The body may be any of three things, and FPP works out which: - **Raw pixel bytes** (`application/octet-stream`) laid out row-major from the top-left of the region, `w * h * fmt` bytes exactly. A wrong length is an error, never a partial write. - **An encoded image** (PNG, JPEG, GIF, BMP, TIFF, WebP), by `Content-Type: image/*` or `fmt=image`. Decoded and scaled server-side, so a 32x32 PNG costs a few hundred bytes instead of 3KB and no file has to exist on the player first. - **JSON** with the payload base64 in a `Data` member: `{"X":0,"Y":0,"W":32,"H":32,"Format":"rgb","Data":"..."}`. Members given here override the equivalent query arguments. A region that hangs off an edge is clipped to what is visible rather than rejected, so a caller can slide an image across a model (and off it) by reposting at moving offsets.

## Query parameters

- `x` integer
- `y` integer
- `w` integer
- `h` integer
- `fmt` string
- `blend` string
- `scale` string
- `target` string
- `autoEnable` string
- `stopEffect` boolean

## Response `200`

Pixel data written; body reports the region and whether it was clipped.

## Other responses

- `400` — Malformed arguments, wrong body length, undecodable image, or a region entirely off the model.
- `404` — No model with that name exists.

---

[API](https://skmtc.net/falconchristmas/apis/fpp-api.md) · [All operations](https://skmtc.net/falconchristmas/apis/fpp-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/falconchristmas/fpp-api/revisions/2d744b175449/schema)
