> ## Documentation Index
> Fetch the complete documentation index at: https://docs.freemodel.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Kling 4.0 Text to Video

> Kling 4.0 text to video API: 3–30 seconds, 720p/1080p and native stereo audio.

Generate a continuous shot from a written scene with Kuaishou Kling 4.0. Describe action, camera movement, lighting and sound.

| Property | Value |
| - | - |
| Public model ID | `kling-4-t2v` |
| Duration | Integer 3–30 seconds; default 5 |
| Resolution | `720p` (default) or `1080p` |
| Audio | Native stereo audio, always included |
| Framing | `16:9` (default), `9:16`, `1:1`, `21:9` |
| Input | Text only |

## Pricing

| Resolution | Per output second | 5 seconds |
| - | -: | -: |
| `720p` | \$0.21 | \$1.05 |
| `1080p` | \$0.315 | \$1.575 |

**100 FreeModel credits = \$1**. The selected resolution and requested output seconds determine the reservation. References do not add input-video charges because this release accepts no video input. Confirm current rates on the [Kling 4.0 model page](https://freemodel.app/models/kling-4).

**model** `string` *required*

Use `kling-4-t2v`.

**prompt** `string` *required*

A non-empty shot description, at most 8,000 characters. Include the sound you
want in the scene.

**seconds** `integer` (default: 5)

Any integer from `3` to `30`. Send a JSON number, not a quoted string.

**resolution** `string` (default: 720p)

`720p` or `1080p`.

**aspect\_ratio** `string` (default: 16:9)

`16:9`, `9:16`, `1:1` or `21:9`.

**generate\_audio** `boolean` (default: true)

Native audio is mandatory. Only `true` is accepted; omitting it also includes
audio.

This release does not accept `video_url`, `video_urls`, `audio_urls`, intermediate keyframes, saved elements, editing or extension controls. It does not expose 4K or HDR. Text mode does not accept image inputs.

## Request

```bash theme={null}
curl https://api.freemodel.app/v1/videos \
  -H "Authorization: Bearer $FREEMODEL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "kling-4-t2v",
  "prompt": "A paper boat drifts along a quiet stream, gentle water sounds",
  "seconds": 5,
  "resolution": "720p",
  "aspect_ratio": "16:9",
  "generate_audio": true
}'
```

## Poll and download

Save the returned gateway video `id`. Poll with the same API key and model ID until `status` is `completed` or `failed`. Download only after completion.

```bash theme={null}
curl "https://api.freemodel.app/v1/videos/$VIDEO_ID?model=kling-4-t2v" \
  -H "Authorization: Bearer $FREEMODEL_API_KEY"

curl -L "https://api.freemodel.app/v1/videos/$VIDEO_ID/content?model=kling-4-t2v" \
  -H "Authorization: Bearer $FREEMODEL_API_KEY" \
  --output video.mp4
```

Keep polling an existing task after a client timeout. Repeated status checks do not create a new generation. Save the MP4 promptly and respect any returned expiry time. See the [video workflow](https://docs.freemodel.app/api-reference/video-generation.md) for task states and error handling.

> [card] [Open Kling 4.0](https://freemodel.app/models/kling-4)
>
> Try the three modes in the Playground and compare live rates.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.