# kwaivgi/kling-3.0/text-to-video > Kling 3.0 delivers premier text-to-video generation with cinematic visuals, smooth motion, and precise prompt adherence including native audio. This high-performance solution offers affordable pricing for creating professional, ready-to-share clips. ## Overview - **Endpoint**: `https://api.shortapi.ai/api/v1/job/create` - **Model ID**: `kwaivgi/kling-3.0/text-to-video` - **Category**: text-to-video - **Kind**: inference ## Pricing When the mode is set to Standard, the cost is $0.143 per second for generated video with audio off and $0.214 per second with audio on. When the mode is set to Pro, the cost is $0.190 per second for generated video with audio off and $0.286 per second with audio on. For more details, please check our pricing page. ## 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: - **`mode`** (`string`, _required_): Video generation mode - Default: `pro` - Options: "pro", "std" - **`duration`** (`string`, _required_): Total Video Length, unit: s (seconds) - Default: `5` - Range: `3` to `15` - **`multi_shot`** (`bool`, _required_): Whether to generate multi_shots - Default: `false` - Options: "true", "false" - **`shot_type`** (`string`, _optional_): Shot breakdown method: User-specified or Intelligent split - Default: `intelligence` - Options: "customize", "intelligence" - **`prompt`** (`string`, _optional_): Text prompts. Cannot be empty when multi_shot is false or shot_type is 'intelligence' - Examples: "An action shot of a black lab swimming..." - **`negative_prompt`** (`string`, _optional_): Negative text prompt - **`multi_prompt`** (`list`, _optional_): Enabled when shot_type is 'customize'. Number of shots: 1-6. The sum of shot durations must equal the task duration - **`duration`** (`int`, _required_): Shot duration. Must be greater than or equal to 1 and less than or equal to the total video duration - Range: `1` to `15` - **`prompt`** (`string`, _required_): Shot prompt - Examples: "An action shot of a black lab swimming..." - **`aspect_ratio`** (`string`, _optional_): The aspect ratio of the generated video frame (width:height) - Default: `16:9` - Options: "1:1", "16:9", "9:16" - **`generate_audio`** (`bool`, _optional_): Whether to generate original audio for the video - Default: `false` - Options: "true", "false" ### Output Schema The API returns a JSON response with a `job_id` for tracking the request status. **Create Job Response:** ```json { "code": 0, "data": { "amount": "0.02", "job_id": "" } } ``` **Query Job Result (when status is 2, meaning succeeded):** ```json { "code": 0, "data": { "status": 2, "result": { "videos": [{ "url": "https://..." }] } } } ``` ## Use Example To use this model, make an HTTP POST request to the API endpoint, then poll for results using the returned `job_id`. ### Bash (cURL) ```bash # Step 1: Create a job response=$(curl --request POST \ --url https://api.shortapi.ai/api/v1/job/create \ --header "Authorization: Bearer $SHORTAPI_KEY" \ --header "Content-Type: application/json" \ --data '{ "model": "kwaivgi/kling-3.0/text-to-video", "args": { "mode": "pro", "duration": "5", "multi_shot": false }, "callback_url": "CALLBACK_URL" }') JOB_ID=$(echo "$response" | grep -o '"job_id": *"[^"]*"' | sed 's/"job_id": *//; s/"//g') # Step 2: Poll for results curl --request GET \ --url "https://api.shortapi.ai/api/v1/job/query?id=$JOB_ID" \ --header "Authorization: Bearer $SHORTAPI_KEY" ``` ### JavaScript (Fetch API) ```javascript // Step 1: Create a job const response = await fetch(`https://api.shortapi.ai/api/v1/job/create`, { method: "POST", headers: { "Authorization": `Bearer ${SHORTAPI_KEY}`, "Content-Type": "application/json" }, body: JSON.stringify({ "model": "kwaivgi/kling-3.0/text-to-video", "args": { "mode": "pro", "duration": "5", "multi_shot": false }, "callback_url": "CALLBACK_URL" }) }); const data = await response.json(); const JOB_ID = data.job_id; // Step 2: Poll for results const result = await fetch(`https://api.shortapi.ai/api/v1/job/query?id=${JOB_ID}`, { method: "GET", headers: { "Authorization": `Bearer ${SHORTAPI_KEY}` } }); const resultData = await result.json(); console.log(resultData); ``` ### Python (Requests) ```python import requests # Step 1: Create a job url = "https://api.shortapi.ai/api/v1/job/create" payload = { "model": "kwaivgi/kling-3.0/text-to-video", "args": { "mode": "pro", "duration": "5", "multi_shot": False }, "callback_url": "CALLBACK_URL" } headers = { "Authorization": f"Bearer {SHORTAPI_KEY}", "Content-Type": "application/json" } response = requests.post(url, headers=headers, json=payload) data = response.json() JOB_ID = data.get("job_id") # Step 2: Poll for results result_url = f"https://api.shortapi.ai/api/v1/job/query?id={JOB_ID}" result = requests.get(result_url, headers={"Authorization": f"Bearer {SHORTAPI_KEY}"}) print(result.json()) ```