Example: Generating Videos of a Character
In this example, we are going to fine-tune a video model to generate videos of a specific character. The same steps work for any video model on Oxen. Here we use LTX-2.3 Pro. We’ll use the manager from Office Space (great movie, go watch it if you haven’t), and we’ll see if we can teach the model his voice, posture and cadence. At the start of the training run the model doesn’t know who the “office manager” is, by the end it nails his face, voice, speaking style and signature lean over the cubicle. 2 second video of the office manager says, “What’s happening, Greg.” Left: step 1, no concept of the character. Right: step 2000, spot on.Creating the Training Dataset
Every fine-tune starts with a dataset, the media you want the model to produce (images or video clips), each paired with a caption. During training the model ties the caption’s words to what it sees, so your captions pull double duty, they’re the training signal now, and the template for how you’ll prompt later. The takeaway is to caption each clip the way you’d prompt for it. At inference you can prompt freely in that same style, no need to match a caption word for word. The expected format is acsv, jsonl, or parquet file with a column that contains the relative path to each image or video clip in the repository, and a column that contains its description.
In this example, we have two columns.
file_path- the relative path to the image or video clip in the Oxen repositorycaption- the description of the media, used as the prompt once the model is deployed
Why the clips fade to black. LTX-2.3 always works in fixed five-second chunks (121 frames), both when training and when generating. The manager’s line, though, is only about two seconds long. If we train on a full five seconds, the model learns to stretch that short line to fill the whole clip, and his quick, deadpan delivery comes out slow and dragged. So after he stops talking we replace the rest of the frames with solid black and add
duration two seconds to the caption. Now the model learns to deliver the line in two seconds and then go black, and you get that same tight pacing when you generate by prompting with the same duration. We used Claude Code and FFmpeg to cut and pad the clips.

file_path column. Give it a name (for example clips_121.parquet) and click Build Dataset.

file_path column. Click the “✏️” edit button above the dataset, then edit the column to turn on image or video rendering.
Auto-Captioning the Dataset
Now that we have a dataset, we need a description for each item. You can caption from the dataset viewer (“Actions” → “Run Inference”) or in the fine-tune wizard’s Label Data step. Select a model that can go fromimage -> text (or video -> text for clips), such as Gemini 3 Flash, write your prompt, and click Caption All.
You must supply the curly braces around the
{file_path} column in the prompt so the model knows which column to use for the media.
Kicking off the Fine-Tune
With your media labeled and happy with the quality and quantity, it is time to kick off your first fine-tune. Click “Create Fine-tune” and walk through the steps.- Choose Task, select Generate Video.
- Choose Model, pick your base model. Here we use LTX-2.3 Pro (“image-to-video with native audio”).
- Pick Dataset, select the dataset you built (or upload a new one).
- Label Data, caption the clips if you haven’t already (see above).
- Configure Training, set the Video Column to
file_pathand the Caption Column tocaption, add a few sample prompts, and start the run.



In the “Samples” section you can specify a few prompts to test as the model trains. This helps you get a feel for how the model is performing and make sure it is learning what you want. Match the caption format you trained on, including your trigger token and any
duration note. Click “Create Fine-tune” and Oxen provisions a dedicated GPU. You can launch multiple runs in parallel to sweep hyperparameters.


Watching the Model Learn
As your model trains, Oxen automatically samples videos from the prompts you specified in the previous step (by default every 200 steps). You can see the model start to learn the subject’s face, motion, and (where supported) audio after a couple hundred steps. 2 second video of the office manager in a cowboy hat and dark aviators says, “You’re going to have to fine-tune that on Oxen.ai.” An out-of-distribution prompt, the LoRA adds new details without losing the character or overfitting.Deploying the Model
When the model has finished training, deploy it by clicking the “Deploy Model” button. Deployment takes a few minutes to complete. Some models offer more than one pipeline, for example a fast distilled pipeline for quick iteration and a higher-quality production pipeline. Once the model is deployed, you can use it in the playground or via the API. The model page gives you a ready-to-paste curl command with your API key filled in. Replace themodel name with the name of your deployed model.

Using the Playground
Click the “Open Playground” button to use the model in the playground. This lets you prompt the model with different images and prompts to see how it performs. If your model supports it, you can pass a first frame to ground the generation. Without one, the model generates from what it learned. The playground saves a history of your prompts and generations so you can refer back to them later.