# Video Prompt Generator

> Generate video prompts using a variety of techniques including camera direction, style, pacing, special effects and more.


## Overview

- **Endpoint**: `https://fal.run/fal-ai/video-prompt-generator`
- **Model ID**: `fal-ai/video-prompt-generator`
- **Category**: llm
- **Kind**: inference
**Tags**: motion, transformation, chat, claude, gpt



## Pricing

- **Price**: $0.001 per 1

For more details, see [fal.ai pricing](https://fal.ai/pricing).

## API Information

This model can be used via our HTTP API or more conveniently via our client libraries.
See the input and output schema below, as well as the usage examples.


### Input Schema

The API accepts the following input parameters:


- **`input_concept`** (`string`, _required_):
  Core concept or thematic input for the video prompt
  - Examples: "A futuristic city at dusk"

- **`style`** (`StyleEnum`, _optional_):
  Style of the video prompt Default value: `"Simple"`
  - Default: `"Simple"`
  - Options: `"Minimalist"`, `"Simple"`, `"Detailed"`, `"Descriptive"`, `"Dynamic"`, `"Cinematic"`, `"Documentary"`, `"Animation"`, `"Action"`, `"Experimental"`

- **`camera_style`** (`CameraStyleEnum`, _optional_):
  Camera movement style Default value: `"None"`
  - Default: `"None"`
  - Options: `"None"`, `"Steadicam flow"`, `"Drone aerials"`, `"Handheld urgency"`, `"Crane elegance"`, `"Dolly precision"`, `"VR 360"`, `"Multi-angle rig"`, `"Static tripod"`, `"Gimbal smoothness"`, `"Slider motion"`, `"Jib sweep"`, `"POV immersion"`, `"Time-slice array"`, `"Macro extreme"`, `"Tilt-shift miniature"`, `"Snorricam character"`, `"Whip pan dynamics"`, `"Dutch angle tension"`, `"Underwater housing"`, `"Periscope lens"`

- **`camera_direction`** (`CameraDirectionEnum`, _optional_):
  Camera direction Default value: `"None"`
  - Default: `"None"`
  - Options: `"None"`, `"Zoom in"`, `"Zoom out"`, `"Pan left"`, `"Pan right"`, `"Tilt up"`, `"Tilt down"`, `"Orbital rotation"`, `"Push in"`, `"Pull out"`, `"Track forward"`, `"Track backward"`, `"Spiral in"`, `"Spiral out"`, `"Arc movement"`, `"Diagonal traverse"`, `"Vertical rise"`, `"Vertical descent"`

- **`pacing`** (`PacingEnum`, _optional_):
  Pacing rhythm Default value: `"None"`
  - Default: `"None"`
  - Options: `"None"`, `"Slow burn"`, `"Rhythmic pulse"`, `"Frantic energy"`, `"Ebb and flow"`, `"Hypnotic drift"`, `"Time-lapse rush"`, `"Stop-motion staccato"`, `"Gradual build"`, `"Quick cut rhythm"`, `"Long take meditation"`, `"Jump cut energy"`, `"Match cut flow"`, `"Cross-dissolve dreamscape"`, `"Parallel action"`, `"Slow motion impact"`, `"Ramping dynamics"`, `"Montage tempo"`, `"Continuous flow"`, `"Episodic breaks"`

- **`special_effects`** (`SpecialEffectsEnum`, _optional_):
  Special effects approach Default value: `"None"`
  - Default: `"None"`
  - Options: `"None"`, `"Practical effects"`, `"CGI enhancement"`, `"Analog glitches"`, `"Light painting"`, `"Projection mapping"`, `"Nanosecond exposures"`, `"Double exposure"`, `"Smoke diffusion"`, `"Lens flare artistry"`, `"Particle systems"`, `"Holographic overlay"`, `"Chromatic aberration"`, `"Digital distortion"`, `"Wire removal"`, `"Motion capture"`, `"Miniature integration"`, `"Weather simulation"`, `"Color grading"`, `"Mixed media composite"`, `"Neural style transfer"`

- **`custom_elements`** (`string`, _optional_):
  Custom technical elements (optional) Default value: `""`
  - Default: `""`

- **`image_url`** (`string`, _optional_):
  URL of an image to analyze and incorporate into the video prompt (optional)

- **`model`** (`ModelEnum`, _optional_):
  Model to use Default value: `"google/gemini-2.0-flash-001"`
  - Default: `"google/gemini-2.0-flash-001"`
  - Options: `"anthropic/claude-3.5-sonnet"`, `"anthropic/claude-3-5-haiku"`, `"anthropic/claude-3-haiku"`, `"google/gemini-2.5-flash-lite"`, `"google/gemini-2.0-flash-001"`, `"meta-llama/llama-3.2-1b-instruct"`, `"meta-llama/llama-3.2-3b-instruct"`, `"meta-llama/llama-3.1-8b-instruct"`, `"meta-llama/llama-3.1-70b-instruct"`, `"openai/gpt-4o-mini"`, `"openai/gpt-4o"`, `"deepseek/deepseek-r1"`

- **`prompt_length`** (`PromptLengthEnum`, _optional_):
  Length of the prompt Default value: `"Medium"`
  - Default: `"Medium"`
  - Options: `"Short"`, `"Medium"`, `"Long"`



**Required Parameters Example**:

```json
{
  "input_concept": "A futuristic city at dusk"
}
```

**Full Example**:

```json
{
  "input_concept": "A futuristic city at dusk",
  "style": "Simple",
  "camera_style": "None",
  "camera_direction": "None",
  "pacing": "None",
  "special_effects": "None",
  "model": "google/gemini-2.0-flash-001",
  "prompt_length": "Medium"
}
```


### Output Schema

The API returns the following output format:

- **`prompt`** (`string`, _required_):
  Generated video prompt
  - Examples: "A futuristic city glows softly at dusk, captured with smooth gimbal movements and a slow burn pacing, enhanced by subtle holographic overlays."



**Example Response**:

```json
{
  "prompt": "A futuristic city glows softly at dusk, captured with smooth gimbal movements and a slow burn pacing, enhanced by subtle holographic overlays."
}
```


## Usage Examples

### cURL

```bash
curl --request POST \
  --url https://fal.run/fal-ai/video-prompt-generator \
  --header "Authorization: Key $FAL_KEY" \
  --header "Content-Type: application/json" \
  --data '{
     "input_concept": "A futuristic city at dusk"
   }'
```

### Python

Ensure you have the Python client installed:

```bash
pip install fal-client
```

Then use the API client to make requests:

```python
import fal_client

def on_queue_update(update):
    if isinstance(update, fal_client.InProgress):
        for log in update.logs:
           print(log["message"])

result = fal_client.subscribe(
    "fal-ai/video-prompt-generator",
    arguments={
        "input_concept": "A futuristic city at dusk"
    },
    with_logs=True,
    on_queue_update=on_queue_update,
)
print(result)
```

### JavaScript

Ensure you have the JavaScript client installed:

```bash
npm install --save @fal-ai/client
```

Then use the API client to make requests:

```javascript
import { fal } from "@fal-ai/client";

const result = await fal.subscribe("fal-ai/video-prompt-generator", {
  input: {
    input_concept: "A futuristic city at dusk"
  },
  logs: true,
  onQueueUpdate: (update) => {
    if (update.status === "IN_PROGRESS") {
      update.logs.map((log) => log.message).forEach(console.log);
    }
  },
});
console.log(result.data);
console.log(result.requestId);
```


## Additional Resources

### Documentation

- [Model Playground](https://fal.ai/models/fal-ai/video-prompt-generator)
- [API Documentation](https://fal.ai/models/fal-ai/video-prompt-generator/api)
- [OpenAPI Schema](https://fal.ai/api/openapi/queue/openapi.json?endpoint_id=fal-ai/video-prompt-generator)

### fal.ai Platform

- [Platform Documentation](https://docs.fal.ai)
- [Python Client](https://docs.fal.ai/clients/python)
- [JavaScript Client](https://docs.fal.ai/clients/javascript)
