---
title: "Pixeltable April 2026 Release Highlights"
date: "2026-05-11"
author: "Pixeltable Team"
tags:
  - Release
  - Pixeltable
  - Changelog
  - OpenAI
  - Gemini
  - Video
  - Embeddings
  - JSON
description: "Highlights from Pixeltable's April release cycle through v0.6.0, focused on the messy middle of multimodal AI apps."
url: "https://pixeltable.com/blog/pixeltable-april-2026-release-highlights"
---

# Pixeltable April 2026 Release Highlights

We're happy to share the April Pixeltable release cycle, covering v0.5.24 through v0.6.0. Pixeltable lets developers build multimodal AI apps in Python with tables that store data, run model calls, transform media, and index embeddings.

 
You can upgrade with:

 
```bash
pip install -U pixeltable
```

 
April brought a shower of PRs: 74 across 6 releases, bringing Pixeltable to 223 merged PRs across 20 releases in 2026 so far.

 
This post pulls out the highlights from that cycle. For April, we focused those highlights around the messy middle of multimodal AI apps: the point where prompts, source media, generated outputs, embeddings, provider calls, and review state start spreading across too many places.

 
The release adds more ways to keep that work visible in tables: transform media, call providers, shape structured outputs, reuse existing embeddings, stream larger results, and keep provider-heavy jobs inside rate limits.

 
You can see a full list of changes in the [Pixeltable changelog](https://docs.pixeltable.com/changelog/changelog) or the [GitHub compare view](https://github.com/pixeltable/pixeltable/compare/v0.5.23...v0.6.0).

 
## OpenAI Responses API support

 
There is a new `openai.responses()` UDF for the OpenAI Responses API. It handles response creation, tool invocation, and adaptive rate-limit-aware execution from a Pixeltable provider call.

 
For simple computed-column use cases, the API fits the same Pixeltable pattern as other provider calls:

 
```python
from pixeltable.functions.openai import responses

messages = [{"role": "user", "content": tbl.prompt}]

tbl.add_computed_column(
 response=responses(
 messages,
 model="gpt-4o-mini",
 model_kwargs={
 "instructions": "Answer using the provided table row.",
 },
 )
)
```

 
The Responses API work also sits next to a provider scheduling fix in this release. Pixeltable accounts for in-flight OpenAI and Gemini requests more accurately, which helps avoid a burst of undercounted work turning into a cascade of `429` errors.

 
Sources: [OpenAI SDK docs](https://docs.pixeltable.com/sdk/latest/openai) · [#1293](https://github.com/pixeltable/pixeltable/pull/1293)

 
## More video work inside video columns

 
April added a broader set of FFmpeg-backed video UDFs. The release includes common transforms such as `reverse()`, `scroll()`, `zoom()`, `speed()`, `rotate()`, and `grayscale()`, along with helpers for audio and overlays like `mix_audio()` and `overlay_text()`.

 
These are the edits that often turn into one-off FFmpeg scripts next to an otherwise table-based workflow: add a caption, pan across an image sequence, mix in background audio, rotate a clip, or generate a grayscale variant for downstream processing.

 
```python
from pixeltable.functions.video import grayscale, overlay_text

videos.add_computed_column(
 captioned_clip=overlay_text(
 grayscale(videos.clip),
 text=videos.caption,
 horizontal_align="center",
 vertical_align="bottom",
 )
)
```

 
A few details make these operations easier to compose. `pan()` works better as an expression UDF, and `mix_audio()` and `overlay_text()` gained more controls for duration, normalization, alignment, and multi-line text spacing.

 
For a full example, the new [image-to-video slideshow cookbook](https://docs.pixeltable.com/howto/cookbooks/video/video-image-slideshow) shows how to build a slideshow from table rows with pans, overlays, concatenation, and background music.

 
Sources: [Video SDK docs](https://docs.pixeltable.com/sdk/latest/video) · [Image-to-video slideshow cookbook](https://docs.pixeltable.com/howto/cookbooks/video/video-image-slideshow) · [#1226](https://github.com/pixeltable/pixeltable/pull/1226) · [#1240](https://github.com/pixeltable/pixeltable/pull/1240) · [#1284](https://github.com/pixeltable/pixeltable/pull/1284) · [#1300](https://github.com/pixeltable/pixeltable/pull/1300)

 
## Gemini audio and reference-image video

 
Gemini support also expanded in April. New UDFs add speech generation with `generate_speech()` and audio transcription with `transcribe()`, while `generate_videos()` accepts up to three reference images for Veo 3.1-style video generation.

 
For audio transcription, the flow stays close to the data:

 
```python
from pixeltable.functions.gemini import transcribe

audio.add_computed_column(
 transcript=transcribe(
 audio.file,
 model="gemini-2.5-flash",
 )
)
```

 
Generated audio and transcripts can stay alongside the prompts, source media, labels, and review state that produced them, rather than being stitched together after the fact.

 
Sources: [Gemini SDK docs](https://docs.pixeltable.com/sdk/latest/gemini) · [Working with Gemini](https://docs.pixeltable.com/howto/providers/working-with-gemini) · [#1221](https://github.com/pixeltable/pixeltable/pull/1221)

 
## Structured outputs, embeddings, and larger results

 
Another April thread was turning model output into application data.

 
`list_iterator` turns JSON lists and tuples into Pixeltable component views with inferred schemas. Structured outputs can become table-shaped data without a separate unpacking step before joins, filters, or inspection.

 
JSON schemas also got richer. Pixeltable handles tuples, lists, dictionaries, `TypedDict`, and Pydantic models in JSON column schemas. Rich JSON computed columns also got a fix for values that contain offloadable objects such as PIL images, NumPy arrays, and bytes.

 
For retrieval workflows, `add_embedding_index()` indexes embedding vectors already stored in Array columns. That helps when embeddings were computed outside Pixeltable, or when you are migrating an existing vector workflow and want those vectors to participate in Pixeltable similarity search.

 
For larger reads, April introduced streaming ResultSets via `ResultCursor`. Instead of materializing a large query result all at once with `collect()`, Python clients have a row-by-row path for result processing.

 
Sources: [Iterator docs](https://docs.pixeltable.com/platform/iterators) · [Embedding index docs](https://docs.pixeltable.com/platform/embedding-indexes) · [#1231](https://github.com/pixeltable/pixeltable/pull/1231) · [#1096](https://github.com/pixeltable/pixeltable/pull/1096) · [#1259](https://github.com/pixeltable/pixeltable/pull/1259)

 
## Smaller fixes that show up in real apps

 
Some April fixes are less visible than a new UDF, but they show up quickly once you rerun the same workflow:

 

 - Pixeltable catches duplicate primary keys earlier when inserting or validating app data.

 - UDF argument errors are clearer when a function call has the wrong shape.

 - Per-function rate-limit estimates help the scheduler choose the right estimator when UDFs share provider pools.

 - Hugging Face DETR object-detection UDFs load without special revision pins or config patches for `dilation` and `no_timm`.

 

 
Sources: [#1203](https://github.com/pixeltable/pixeltable/pull/1203) · [#1215](https://github.com/pixeltable/pixeltable/pull/1215) · [#1291](https://github.com/pixeltable/pixeltable/pull/1291) · [#1275](https://github.com/pixeltable/pixeltable/pull/1275) · [#1191](https://github.com/pixeltable/pixeltable/pull/1191) · [#1176](https://github.com/pixeltable/pixeltable/pull/1176) · [#1294](https://github.com/pixeltable/pixeltable/pull/1294) · [#1241](https://github.com/pixeltable/pixeltable/pull/1241) · [#1256](https://github.com/pixeltable/pixeltable/pull/1256)

 
## What's next?

 
April showers bring May multimodal apps. Follow us on [LinkedIn](https://www.linkedin.com/company/pixeltablehq/) this week for [PyCon US 2026](https://us.pycon.org/2026/); we'll have more to share on serving.

 
## Acknowledgements

 
A big thank you to everyone who contributed PRs, reviews, tests, docs, and release work for this cycle.