---
title: Use Magnific with invideo
description: Upscale images and video in Magnific, then lay them out, cut and caption them in invideo. Or run Magnific's image upscalers inside invideo.
---
It depends on the step. Magnific is strong at making one image or one video sharper and richer: its Creative Image Upscaler, its relight tools and its video upscaler. invideo adds what comes after the upscale: layout on a timeline, cuts, captions, music, and an agent that does the edit.

Where Magnific's work on a single frame ends and the layout of a video starts, hand off to invideo.

## When to use both

Use both when an upscaled asset has to become part of a video. Common cases:

- **Product stills to a video.** Upscaled product photos become slides in an ad, with motion, text and music.
- **AI clips that need detail.** A generated clip goes through Magnific's video upscaler, then into a cut.
- **Thumbnails and posters.** One upscaled frame becomes the cover, and the rest of the video is cut in invideo.

## Magnific inside invideo

invideo runs two of Magnific's image upscalers as models of `media` `image.upscale`:

- **`magnific_upscaler_creative`** (Magnific Upscaler Creative): adds detail, with style, creativity and scale settings.
- **`magnific_upscaler_precision_v2`** (Magnific Upscaler Precision): stays close to the source.

The agent passes the model as `model` and its settings as `inputs`. The settings come from `get_model`. For `magnific_upscaler_creative` they include `scale_factor` and `optimized_for`.

invideo also runs Magnific's skin enhancers as models with `generate`: `magnific_skin_enhancer.skin_enhancer_creative`, `magnific_skin_enhancer.skin_enhancer_faithful` and `magnific_skin_enhancer.skin_enhancer_flexible`.

Magnific's video upscaler is not one of the `video.upscale` models in invideo. For video, use Magnific's own app, or `video.upscale` with a model from its list, such as `topaz_starlight_precise_26`.

## Hand-off: from Magnific into invideo

Download the result from Magnific. Images come as image files. Magnific's video upscaler gives an MP4 by default. Then your agent brings each file in:

- **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.

Then the agent lays the video out. It places stills and clips with `place_media`. It moves a still with `add_keyframe_lane` on `zoom_x` or `position_x`, then `add_keyframes`. It adds text with `add_text` and music from `search_library`.

## Hand-off: from invideo to Magnific

To upscale a finished frame or cut in Magnific, your agent exports it from invideo:

- **One frame.** `export` with `format` `video`, `mode` `image` and `still_at` in seconds.
- **The video.** `export` with `format` `video`. The result is a 1080p MP4.

You upload that file to Magnific. For a sharper master of the whole video, upscale the export, not each shot.

## 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 images in">
The agent calls `add_media` for each file. Expected result: one sequence URL per file.
</Step>
<Step title="Price the upscale, if you want one">
The agent reads `magnific_upscaler_creative` with `get_model`. It calls `media` with `op` `image.upscale`, `model` `magnific_upscaler_creative` and `dry_run`, and tells you the price. Expected result: a price and no charge.
</Step>
<Step title="Run the upscale">
The agent runs the same call with `max_credits` set to that price and an `idempotency_key`. Expected result: a sequence URL for the new image, beside the source.
</Step>
<Step title="Lay out the video">
The agent calls `new_timeline`, makes a branch with `timeline_history`, then places the images with `place_media`. Expected result: a new `state_token`.
</Step>
<Step title="Add motion, text and music">
The agent adds a zoom or pan with `add_keyframe_lane` and `add_keyframes`, then `add_text` and a music clip from `stock_music`. Expected result: a timeline that plays from start to end.
</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`. Expected result: an export card with status `completed`.
</Step>
</Steps>

The key MCP call, the full `media` call, priced first:

```json
{
  "url": "<sequence-url>",
  "op": "image.upscale",
  "model": "magnific_upscaler_creative",
  "inputs": { "scale_factor": "4x", "optimized_for": "standard" },
  "dry_run": true
}
```

`<sequence-url>` is the `url` that `add_media` returns for the image. The `inputs` names come from `get_model`.

## When to stay in Magnific

Stay in Magnific when the job is one image or one clip and its look. Relight, a creative upscale with a prompt, and a video upscale to a ProRes master are Magnific's work.

Move to invideo once the asset needs a sequence, text, sound, or a person and an agent editing 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`. |
| `image.upscale` is refused with `code: "not_found"` | The call named a media bin asset. Pass the image's sequence URL from `add_media`. |
| `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 Magnific vs invideo](/compare/magnific)
- [Turn a product photo into a video without redrawing the product](/how-to/marketing/product-photo-to-video)
- [Make a thumbnail for the video](/how-to/creators/thumbnail)
- [Know the cost before you spend](/how-to/cost-before-you-spend)
- [invideo for AI agents](/agents)