> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.videogen.io/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.videogen.io/_mcp/server.

# Apply remix actions

> Step two of the VideoGen flow: apply remix actions (background music, logo, captions, transitions, natural-language edits) to a project.

Remix actions are edits applied to a project after a workflow builds it: background music, a logo overlay, caption changes, transitions, or open-ended natural-language edits. This step is optional. Skip ahead to [export](/export-your-video) if your video is ready as-is.

You can apply remix actions two ways:

* In the same workflow call, by passing a `remixActions` array (each runs after the video is built).
* On an existing project, by calling `POST /v1/projects/{projectId}/remix`.

## Apply to an existing project

Send an ordered list of edits. Each runs asynchronously as its own remix action, and the response returns one remix action id per edit in order.

#### TypeScript

```typescript
import { VideoGen } from "@videogen/sdk";

const client = new VideoGen({ apiKey: "sk_videogen_live_..." });

const { remixActionIds } = await client.projects.remixProject({
  projectId,
  remixActions: [
    { type: "SET_BACKGROUND_MUSIC", fileId: "vg_file_...", volume: 0.3 },
    { type: "SET_LOGO", fileId: "vg_file_..." },
    { type: "ADD_TRANSITIONS", sectionTransition: "DYNAMIC", assetTransition: "FADE" },
  ],
});

console.log(remixActionIds);
```

#### cURL

```bash
curl -X POST https://api.videogen.io/v1/projects/PROJECT_ID/remix \
  -H "Authorization: Bearer sk_videogen_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "remixActions": [
      { "type": "SET_BACKGROUND_MUSIC", "fileId": "vg_file_...", "volume": 0.3 },
      { "type": "SET_LOGO", "fileId": "vg_file_..." },
      { "type": "ADD_TRANSITIONS", "sectionTransition": "DYNAMIC", "assetTransition": "FADE" }
    ]
  }'
```

Poll `GET /v1/projects/{projectId}/remix-actions` until each action's `status` is terminal. Pass `saveAsNewProject: true` to apply the edits to a copy and leave the original untouched.

## Next steps

* [Remix actions reference](/remix-actions): Every action type and its fields.
* [Export your video](/export-your-video): Render the project to an MP4.