MixtrainDocsBlog
from mixtrain import (
    Audio,
    Embedding,
    File,
    Image,
    Markdown,
    Tensor,
    Video,
)

Regular Python types work out of the box. Use Mixtrain types to express richer semantics, such as Image, Video, Audio, File, Markdown, Embedding, and Tensor. The types are used throughout the platform to provide better support for multimodal types, better performance, and better user experience.

Types fall into a few categories:

CategoryDescriptionTypes
File referencesReference a file by URL and download it locallyFile, Image, Video, Audio
Content typesFormatted inline textMarkdown
Array dataVectors and N-dimensional arrays for ML featuresEmbedding, Tensor

Downloadable file types (File, Image, Video, and Audio) support URLs from https://, gs://, and s3://.

Returning Multimodal Outputs

Return typed outputs from your MixModel:

from mixtrain import Image, MixModel, Video

class ImageGenerator(MixModel):
    def run(self, inputs=None):
        image_url = self._generate(inputs["prompt"])
        return {
            "image": Image(
                url=image_url,
                width=1024,
                height=1024
            )
        }

class VideoGenerator(MixModel):
    def run(self, inputs=None):
        video_url = self._generate(inputs["prompt"])
        return {
            "video": Video(
                url=video_url,
                width=1920,
                height=1080,
                duration_seconds=5.0
            )
        }

Reading Model Results

When you run a model, common media and text outputs are available through convenience properties:

from mixtrain import Model

model = Model("flux-pro")
result = model.run({"prompt": "A sunset"})

if result.image:
    print(result.image.url)
    print(f"{result.image.width}x{result.image.height}")

# For video models
model = Model("hunyuan-video")
result = model.run({"prompt": "A cat playing"})

if result.video:
    print(result.video.url)
    print(f"Duration: {result.video.duration_seconds}s")

Use result.value to access the complete logical return value, including named outputs such as Markdown content or embeddings.

Serialization

Mixtrain sends typed values as JSON-serializable dictionaries with a _type field, so the app can render each value correctly.

serialize_output()

from mixtrain import Image, serialize_output

serialize_output(Image("https://...", width=256, height=256))
# {"_type": "image", "url": "https://...", "width": 256, "height": 256}

Nested lists and dictionaries are handled automatically.

deserialize_output()

from mixtrain import deserialize_output

deserialize_output({
    "_type": "image",
    "url": "https://..."
})  # Returns Image instance

extract_output_schema()

from mixtrain import extract_output_schema

class MyModel(MixModel):
    def run(self, inputs) -> dict[str, Image]:
        ...

extract_output_schema(MyModel)
# {"type": "dict", "valueSchema": {"type": "image"}}

On this page