# Customizing the video

Every Slideshot run produces a polished `demo.mp4`. You can shape it for a launch tweet, a docs embed, a changelog clip, or an internal walkthrough by setting `options.video`, `options.artifacts`, and `options.intro` when creating the run.

{% docsVideoExample title="Customization preview" description="Placeholder video using an existing Slideshot demo asset while we add product-specific examples." videoSrc="/videos/landing/slideshot.mp4" /%}

This page is a map of the controls. Each sub-page goes deeper with the exact option shape, defaults, and trade-offs.

## What you can customize

- [Intro templates](/docs/customizing-video/intro-templates): prepend a branded title card to the start of the demo. Choose a text-only template, a logo template, or a layered template that fades over the first frame of the workflow.
- [Background](/docs/customizing-video/background): frame the recorded content on a solid color or gradient canvas, with rounded corners and centered content.
- [Video and content size](/docs/customizing-video/video-and-content-size): pick the output dimensions (`1920x1080` by default, anything from `320x180` up to `2560x1440`) and how the recorded UI sits inside the canvas.
- [Blur emails](/docs/customizing-video/blur-emails): mask email addresses and other sensitive identifiers during recording so they never appear in `raw.mp4` or `demo.mp4`.
- [Show shortcuts](/docs/customizing-video/show-shortcuts): overlay mac-style key chips for completed keyboard actions so power-user flows are readable.

You can also opt into [`artifacts.gif: true`](/docs/api/runs) to get a `demo.gif` rendered from the final `demo.mp4`.

## How to choose the right settings

The right combination depends on where the video will be published.

- **Launch videos**: strong branded intro, brand-aligned background, GIF output for social platforms that prefer it.
- **Docs and help-center videos**: quiet neutral background, no intro card or a minimal one, full landscape output. Skip the GIF unless your docs platform needs it.
- **Changelog videos**: short intro card with the feature name, modest background, larger cursor for visibility.
- **Social clips**: square or vertical output size, branded background, GIF output, and shortcut overlays if the flow is keyboard-heavy.
- **Recordings against real data**: enable [blur emails](/docs/customizing-video/blur-emails). Pair with a dedicated demo account whenever possible.

## Where the options live

All visual options sit inside `options` on `POST /v1/agent/runs`. A run that uses every customization looks like this:

```json
{
  "target_url": "https://app.example.com",
  "goal": "Create a project and open the analytics dashboard.",
  "options": {
    "auth": { "source": "default" },
    "video": {
      "blur_emails": true,
      "shortcuts": true,
      "cursor": "default",
      "size": { "width": 1920, "height": 1080, "content": { "scale": 0.92 } },
      "background": { "type": "gradient", "from": "#0B1220", "to": "#101A33", "direction": "diagonal" }
    },
    "artifacts": { "gif": true },
    "intro": {
      "template": "simple-line-by-line-slide",
      "content": { "text": "Analytics, now in 60 seconds" },
      "style": { "background": { "type": "gradient", "from": "#0B1220", "to": "#101A33", "direction": "diagonal" }, "textColor": "#FFFFFF" }
    }
  }
}
```

Each sub-object is independent: pass only the groups you need (`auth`, `video`, `artifacts`, `intro`) and omit the rest.
