---
title: Use Higgsfield with invideo
description: Make clips in Higgsfield, then finish them in invideo with cuts, captions, music and an upscale, on a timeline your agent edits.
---
It depends on the job. Higgsfield is an AI video and image platform that makes short generated clips from prompts, images and references. invideo adds what comes after the clip: a real timeline, captions, music, cuts, an upscale, and an agent that does the edit in your chat.

Use Higgsfield to make the shots. Use invideo to turn the shots into a finished video.

## When to use both

Use both when the clips are good but the video is not finished. Common cases:

- **Several clips, one ad.** You made five shots in Higgsfield and need them cut together, in order, to a beat.
- **A clip that needs words.** The shot needs captions, a title, a call to action or a voiceover.
- **A clip that needs sound.** The clip is silent, or its sound does not fit, and it needs music that clears rights.
- **A sharper file.** The clip needs an upscale before it goes to a client or a big screen.

## Hand-off: from Higgsfield into invideo

Download each clip from Higgsfield as a video file, an MP4. Then your agent brings it into an invideo project:

- **A public link.** `add_media` with `media_url`.
- **A file on your computer.** `start_upload` with the `file_name`, a PUT of the bytes to the `upload_url`, then `add_media` with the `upload_id`. In a terminal, `invideo asset upload <project-url> <file>`.
- **A file in a chat app.** You drag the file into the chat. It arrives through `file` on `add_media`.

Each file becomes a sequence in the project, with its own sequence URL. On a timeline's URL, `add_media` also puts it in that timeline's media bin.

From there, the agent finishes the video:

- **Cuts.** `place_media`, `split_clip`, `trim_clip` and `delete_clip` on the timeline. Beats from `media` `audio.beats` when the cut follows music.
- **Captions.** `media` `audio.transcript` on the clip with speech, then `add_captions` with slides and words.
- **Music.** `search_library` in `stock_music`, or `generate` with `elevenlabs_music_v2_5_instrumental`.
- **Upscale.** `media` `video.upscale` on the clip or on the exported file, with its default model or one from its list, such as `topaz_starlight_precise_26`.

The full recipe is in [Finish an AI clip from Higgsfield, Runway or Magnific](/how-to/marketing/finish-an-ai-clip).

## Hand-off: from invideo to Higgsfield

When you want a clip back in Higgsfield, your agent runs `export` with `format` `video`. The result is a 1080p MP4. The agent reads the export card for the download, and you upload that file to Higgsfield like any other video.

Use this when a finished cut becomes the input for another generation, such as a reference video.

## Steps

Edits and exports are free. Generation and transcripts cost credits. Paid stock costs a small credit charge, or one of your workspace's iStock licenses. Your agent runs a dry run first and tells you the price before it spends anything.

Your agent runs a dry run first. For any call that costs 1 credit or more, it tells you the price and waits for your yes. A call under 1 credit runs without asking, and your agent tells you what it cost.

<Steps>
<Step title="Bring the clips in">
The agent calls `add_media` for each Higgsfield clip, with `media_url` or an `upload_id` from `start_upload`. Expected result: one sequence URL per clip.
</Step>
<Step title="Make a timeline on a branch">
The agent calls `new_timeline` in the shape you asked for, then makes a branch with `timeline_history`. Expected result: a timeline URL on a branch, not main.
</Step>
<Step title="Cut the clips together">
The agent calls `edit_timeline` with `place_media` for each clip, then trims and orders them. Expected result: a new `state_token`.
</Step>
<Step title="Caption the speech">
The agent prices `audio.transcript` with `dry_run`, starts it, and calls again after `retry_after_s` for the words. Then it sends `add_captions`. Expected result: a caption clip.
</Step>
<Step title="Pick and price the music">
The agent runs `find_models` with the music bed in words, picks one, and reads its inputs with `get_model`. A good pick is `elevenlabs_music_v2_5_instrumental`. The agent can search for others with `find_models`. It calls `generate` with `dry_run: true` and the real inputs, and tells you the price. Expected result: a price and no charge.
</Step>
<Step title="Make the music">
The agent calls `generate` with `max_credits` set to that price and an `idempotency_key`. Expected result: a thread URL, then a sequence URL when the music lands. The agent reads that URL with `read`, and never calls `generate` again to check.
</Step>
<Step title="Check, then export">
The agent runs `check_timeline` and `capture`, then `export` with `format` `video` and an `idempotency_key`. Expected result: an export card with status `completed`.
</Step>
</Steps>

The key MCP call, the full `add_media` call for a clip with a public link:

```json
{
  "url": "<edit-url>",
  "media_url": "https://example.com/higgsfield-shot-1.mp4",
  "file_name": "higgsfield-shot-1.mp4"
}
```

`<edit-url>` is the timeline's URL, from `new_timeline`. The `media_url` is the clip's public link.

The same hand-off from a terminal:

```bash
invideo agent register <project-url> --name <name>
export INVIDEO_AS=<name>
invideo asset upload <project-url> ./higgsfield/*.mp4
invideo edit new <project-url> --name "Ad v1" --width 1080 --height 1920
invideo edit export <edit-url> --format video --quality 1080 \
  --idempotency-key "ad-v1" --json
invideo status <card-url> --wait
invideo notebook show <card-url> --out ./out
```

`<project-url>` comes from `invideo project new` or `list_projects`. `<name>` is the name you choose in `invideo agent register`. `<edit-url>` is the `url` that `invideo edit new` returns. `<card-url>` is `.sequences[0]` of the export answer.

A music bed from a terminal:

```bash
invideo gen models <project-url> --query "instrumental music bed"
invideo gen model <project-url> --model elevenlabs_music_v2_5_instrumental
invideo gen run <page-url> --model elevenlabs_music_v2_5_instrumental \
  --dry-run -i prompt="warm upbeat bed for a product ad"
invideo gen run <page-url> --model elevenlabs_music_v2_5_instrumental \
  -i prompt="warm upbeat bed for a product ad" \
  --max-credits <price> --idempotency-key music-1
```

`<project-url>` is the same project. `<page-url>` is a page that `invideo notebook show <project-url>` lists. `<price>` is the price the dry run returns.

## When to stay in Higgsfield

Stay in Higgsfield when the job is the shot itself. Higgsfield's own tools are the place to try new prompts, models and camera moves, and to edit one generated clip by swapping an element in it.

Also stay there when the clip is the final output, with no cut, no captions and no music. invideo adds value once there is more than one piece to put together.

## If something goes wrong

| Symptom | Fix |
| --- | --- |
| `add_media` with `media_url` is refused | The link must be public. Download the file, then upload it with `start_upload` and `add_media` with the `upload_id`. |
| `edit_timeline` is refused as a conflict, or CLI exit code 3 | Someone's edit landed first. Read the timeline again with `get_timeline`, then send the change with the new `state_token`. |
| `audio.transcript` returns no words | The clip has no speech. Skip the captions, or add a voice-over first. |
| `get_model` or `generate` refuses the model as not found | Models retire. Run `find_models` with the job in words, use the best match, and tell the person which model you used. |
| Avoid: call `generate` again to check on a run | Instead: read the thread or sequence URL with `read`. A second `generate` starts a second paid run. |

## Related

- [Finish an AI clip from Higgsfield, Runway or Magnific](/how-to/marketing/finish-an-ai-clip)
- [When to use Higgsfield vs invideo](/compare/higgsfield)
- [Add music and sound effects that clear rights](/how-to/creators/music-and-sound-effects)
- [Add word-by-word captions](/how-to/creators/word-by-word-captions)
- [Check your video before you say it is done](/how-to/check-your-video)
- [invideo for AI agents](/agents)