# vid2md modes & credits

Every job picks one of six modes. Modes change frame sampling density, prompt depth, and how aggressively the processor merges spoken audio into visual segments. They do not change the API shape or the output schema described in [output format](/docs/output-format).

Default model selection:
- `blurb` and `concise` run on `google/gemini-3.1-flash-lite` — cheapest, fastest path.
- `story` runs on `nvidia/nemotron-3-nano-omni/video` via fal.ai — single video-native call, no per-frame work.
- `regular`, `detailed`, `ultra-detailed` run on `google/gemini-3.5-flash` — richer per-frame visual detail.

Override either default by passing `"model": "..."` in the job body.

## The six modes

### `blurb` (1 credit per started 5 minutes)

One paragraph. No timestamps. No bullets. The whole video is sent to Gemini in a single call — no per-frame extraction, no audio windowing. Around 10-15 seconds end-to-end on a 60-second clip.

Pick it when you only need a sentence or two saying what a video is about: bug-report triage routing, lead-in for a search index, "what's in this Loom" before opening it.

```json
{"video_url":"...", "mode":"blurb"}
```

Output looks like:
```markdown
# Video Watch Report

## Blurb

A short product demo of a Markdown editor. The presenter opens a file, types a few headings, and shows live preview. No dialogue beyond brief narration of each click.
```

### `story` (1 credit per started minute)

A scene paragraph followed by 10-25 numbered timestamped events covering the whole video. Single call to NVIDIA's Nemotron-3 Nano Omni Video model via fal.ai — no frame extraction, no audio windowing on our side. Around 10-15 seconds end-to-end on a one-minute clip.

Pick it when you need a narrative beat list — "what happened, when" — without the per-frame depth of `regular`. Good fit for trailers, short demos, security clips, sports highlights.

```json
{"video_url":"...", "mode":"story"}
```

Output looks like:
```markdown
# Video Watch Report

## Story

A short product walkthrough opening on a dashboard, followed by a quick edit, then a save confirmation.

1. **00:00 - 00:04**: Dashboard loads with three empty cards.
2. **00:04 - 00:09**: Cursor opens the leftmost card and types a title.
...
```

### `concise` (1x)

Wide frame interval, short prompt, audio collapsed into segment summaries. Picks out scene changes and one or two notes per beat.

Pick it when you want a fast skim of a long screen recording or webinar. A 45 minute conference talk becomes a one screen Markdown outline.

```json
{"video_url":"...", "mode":"concise"}
```

### `regular` (2x)

Default for most jobs. Tighter frame interval, fuller per-segment observations, transcript lines paired with the frames they reference.

Pick it when a downstream agent has to cite specific moments. A 10 minute product demo becomes a navigable timeline with quotes.

### `detailed` (4x)

Dense visual notes, UI text and on-screen code captured per segment, transcript kept verbatim instead of summarized.

Pick it for tutorials, code walkthroughs, or anything where viewers pause to read the screen. A 20 minute IDE recording captures filenames, terminal output, and inline code.

### `ultra-detailed` (8x)

Maximum prompt density. Short frame interval, exhaustive per-frame observations, every spoken phrase kept with timestamps, deltas tracked at sub-segment granularity.

Pick it for incident postmortems, depositions, surgical training, or footage where one missed cue breaks the report. Expect long Markdown output and slow jobs.

## Credits

vid2md bills at job creation. The processor reserves credits up front from the ledger so a job cannot run while you go negative.

Formula:

```
credits = ceil(max_duration_seconds / 60) * mode_multiplier
```

Multipliers: `concise` 1, `regular` 2, `detailed` 4, `ultra-detailed` 8. `blurb` is special-cased at 1 credit per started 5 minutes; `story` is 1 credit per started minute (covers fal.ai cold-spike compute).

A 61 second video counts as 2 started minutes. The reservation caps at `max_duration_seconds`, which itself caps at 7200 seconds (2 hours) for authenticated jobs and 60 seconds for the landing-page demo. The processor never charges past the video's real length when it finishes early.

Charged credits land in the `charged_credits` field on `GET /v1/jobs/{job_id}`. Buy more with `starter` (100), `growth` (500), or `scale` (1500) packages. See the [API reference](/docs/api) for checkout payloads and the [quickstart](/docs/quickstart) for a working end-to-end call.
