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

# टेक्स्ट से वीडियो

> Krea API के माध्यम से Veo 3.1, Kling 2.5, Hailuo, और अन्य मॉडलों के साथ टेक्स्ट प्रॉम्प्ट से सिनेमेटिक क्लिप्स, एनिमेशन और स्टोरीटेलिंग के लिए वीडियो जनरेट करें।

export const ModelOverviewCard = ({name, description, icon, href}) => {
  const resolvedIcon = (() => {
    if (typeof icon !== "string" || !icon.startsWith("/") || icon.startsWith("//")) return icon;
    if (typeof window === "undefined") return icon;
    const base = "/docs";
    const under = window.location.pathname === base || window.location.pathname.startsWith(base + "/");
    return under && !icon.startsWith(base + "/") ? base + icon : icon;
  })();
  return <a href={href} className="group relative block rounded-xl border border-gray-200 dark:border-gray-800 bg-white dark:bg-black overflow-hidden hover:border-black dark:hover:border-white transition-all duration-200 p-6">
      {}
      <div className="flex items-center justify-center w-8 h-8 rounded-lg mb-4 transition-colors duration-200">
        {icon && <img src={resolvedIcon} alt={`${name} logo`} className="w-8 h-8 object-contain transition-all duration-200" />}
      </div>

      {}
      <div className="space-y-2">
        <h3 className="text-lg font-semibold text-black dark:text-white transition-colors">
          {name}
        </h3>
        <p className="text-sm text-gray-600 dark:text-gray-400 line-clamp-4">
          {description}
        </p>
      </div>

      {}
      <div className="absolute top-6 right-6 opacity-0 group-hover:opacity-100 transition-opacity duration-200">
        <svg className="w-4 h-4 text-black dark:text-white" fill="none" stroke="currentColor" viewBox="0 0 24 24">
          <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M9 5l7 7-7 7" />
        </svg>
      </div>
    </a>;
};

export const HeroHeader = ({image, video, title, description}) => {
  return <div className="relative aspect-[2/1] h-[30vh] w-full rounded-lg overflow-hidden mb-8">
      {}
      {video && <video autoPlay muted loop playsInline className="absolute top-0 left-0 w-full h-full object-cover hidden md:block m-0" style={{
    zIndex: 1,
    objectPosition: "20% 20%"
  }}>
          <source src={video} type="video/webm" />
        </video>}

      {}
      <img src={image} alt="" className={`absolute top-0 left-0 m-0 w-full h-full object-cover ${video ? "md:hidden" : "block"}`} style={{
    zIndex: 1,
    objectPosition: "20% 20%"
  }} />

      {}
      <div className="absolute inset-0 bg-gradient-to-t from-black/70 via-black/30 to-black/10 flex flex-col justify-end p-8 dark:hidden" style={{
    zIndex: 2
  }}>
        <h1 className="text-4xl font-bold text-white m-0 drop-shadow-[0_2px_4px_rgba(0,0,0,0.5)]">
          {title}
        </h1>
        <p className="text-lg text-white/95 mt-2 drop-shadow-[0_1px_2px_rgba(0,0,0,0.5)]">
          {description}
        </p>
      </div>

      {}
      <div className="absolute inset-0 bg-gradient-to-t from-black/80 via-black/40 to-black/20 hidden dark:flex flex-col justify-end p-8" style={{
    zIndex: 2
  }}>
        <h1 className="text-4xl font-bold text-white m-0 drop-shadow-[0_2px_4px_rgba(0,0,0,0.5)]">
          {title}
        </h1>
        <p className="text-lg text-white/95 mt-2 drop-shadow-[0_1px_2px_rgba(0,0,0,0.5)]">
          {description}
        </p>
      </div>
    </div>;
};

<HeroHeader image="https://s.krea.ai/docs-text-to-video.webp" video="https://s.krea.ai/docs-text-to-video-new.webm" title="टेक्स्ट से वीडियो" description="टेक्स्ट से वीडियो जनरेट करें। उन्नत वीडियो जनरेशन मॉडलों के साथ सिनेमेटिक सीक्वेंस, एनिमेशन, और विज़ुअल स्टोरीज़ बनाएँ।" />

## लोकप्रिय मॉडल

<div className="grid grid-cols-1 md:grid-cols-2 gap-4 hidden dark:grid">
  <ModelOverviewCard name="Veo 3.1" href="/api-reference/video/veo-31" icon="/images/logo/deepmind-dark.svg" description="असाधारण प्रॉम्प्ट अनुपालन और सिनेमेटिक गुणवत्ता वाला Google का वीडियो मॉडल।" />

  <ModelOverviewCard name="Kling 2.5" href="/api-reference/video/kling-25" icon="/images/logo/kling-dark.svg" description="टेम्पोरल कंसिस्टेंसी और यथार्थवादी फिज़िक्स के साथ उन्नत मोशन कंट्रोल।" />

  <ModelOverviewCard name="Hailuo 2.3" href="/api-reference/video/hailuo-23" icon="/images/logo/hailuo-dark.svg" description="स्मूद मोशन और प्राकृतिक सीन ट्रांज़िशन के साथ तेज़ जनरेशन।" />

  <ModelOverviewCard name="Wan 2.5" href="/api-reference/video/wan-25" icon="/images/logo/qwen-dark.svg" description="स्टाइल कंट्रोल और डिटेल प्रिज़र्वेशन के साथ हाई-रिज़ॉल्यूशन वीडियो सिंथेसिस।" />
</div>

<div className="grid grid-cols-1 md:grid-cols-2 gap-4 block dark:hidden">
  <ModelOverviewCard name="Veo 3.1" href="/api-reference/video/veo-31" icon="/images/logo/deepmind-light.svg" description="असाधारण प्रॉम्प्ट अनुपालन और सिनेमेटिक गुणवत्ता वाला Google का वीडियो मॉडल।" />

  <ModelOverviewCard name="Kling 2.5" href="/api-reference/video/kling-25" icon="/images/logo/kling-light.svg" description="टेम्पोरल कंसिस्टेंसी और यथार्थवादी फिज़िक्स के साथ उन्नत मोशन कंट्रोल।" />

  <ModelOverviewCard name="Hailuo 2.3" href="/api-reference/video/hailuo-23" icon="/images/logo/hailuo-light.svg" description="स्मूद मोशन और प्राकृतिक सीन ट्रांज़िशन के साथ तेज़ जनरेशन।" />

  <ModelOverviewCard name="Wan 2.5" href="/api-reference/video/wan-25" icon="/images/logo/qwen-light.svg" description="स्टाइल कंट्रोल और डिटेल प्रिज़र्वेशन के साथ हाई-रिज़ॉल्यूशन वीडियो सिंथेसिस।" />
</div>

***

<Note>
  वीडियो जनरेशन आमतौर पर इमेज जनरेशन से अधिक समय लेता है। वीडियो की लंबाई और गुणवत्ता सेटिंग्स के आधार पर लंबे प्रोसेसिंग समय के लिए तैयार रहें।
</Note>

## चरण 1: एक वीडियो जनरेट करें

अपने प्रॉम्प्ट और वीडियो पैरामीटर के साथ `/generate/video/kling/kling-2.5` पर एक POST अनुरोध करें। API तुरंत एक job ID लौटाता है।

<CodeGroup>
  ```javascript Node.js theme={null}
  // npm install @krea-ai/sdk
  import { Krea } from "@krea-ai/sdk";

  const krea = new Krea({ apiKey: process.env.KREA_API_KEY });

  const job = await krea.video("kling/kling-2.5", {
    prompt: "a majestic eagle soaring over snow-capped mountains at sunrise",
    duration: 5,
    aspect_ratio: "16:9"
  });

  console.log(`Job ID: ${job.job_id}`);
  ```

  ```bash cURL theme={null}
  curl -X POST https://api.krea.ai/generate/video/kling/kling-2.5 \
    -H "Authorization: Bearer YOUR_API_TOKEN" \
    -H "Content-Type: application/json" \
    -d '{
      "prompt": "a majestic eagle soaring over snow-capped mountains at sunrise",
      "duration": 5,
      "aspect_ratio": "16:9"
    }'
  ```

  ```python Python theme={null}
  import requests

  API_BASE = "https://api.krea.ai"
  API_TOKEN = "YOUR_API_TOKEN"

  response = requests.post(
      f"{API_BASE}/generate/video/kling/kling-2.5",
      headers={
          "Authorization": f"Bearer {API_TOKEN}",
          "Content-Type": "application/json"
      },
      json={
          "prompt": "a majestic eagle soaring over snow-capped mountains at sunrise",
          "duration": 5,
          "aspect_ratio": "16:9"
      }
  )

  job = response.json()
  print(f"Job ID: {job['job_id']}")
  ```

  ```go Go theme={null}
  package main

  import (
      "bytes"
      "encoding/json"
      "fmt"
      "net/http"
  )

  func main() {
      apiBase := "https://api.krea.ai"
      apiToken := "YOUR_API_TOKEN"

      payload := map[string]interface{}{
          "prompt": "a majestic eagle soaring over snow-capped mountains at sunrise",
          "duration": 5,
          "aspect_ratio": "16:9",
      }

      jsonData, _ := json.Marshal(payload)
      req, _ := http.NewRequest("POST", apiBase+"/generate/video/kling/kling-2.5", bytes.NewBuffer(jsonData))
      req.Header.Set("Authorization", "Bearer "+apiToken)
      req.Header.Set("Content-Type", "application/json")

      client := &http.Client{}
      resp, _ := client.Do(req)
      defer resp.Body.Close()

      var job map[string]interface{}
      json.NewDecoder(resp.Body).Decode(&job)
      fmt.Printf("Job ID: %s\n", job["job_id"])
  }
  ```
</CodeGroup>

<Info>
  **अपने API टोकन से बदलें**

  ऊपर दिए गए उदाहरणों में YOUR\_API\_TOKEN प्लेसहोल्डर को बदलने के लिए, आपको [krea.ai/settings/api-tokens](https://www.krea.ai/settings/api-tokens) में एक API टोकन जनरेट करना होगा। यदि आपको सहायता चाहिए, तो [API Keys & Billing](/developers/api-keys-and-billing) पेज पर दिए गए निर्देशों का पालन करें।
</Info>

**उदाहरण प्रतिक्रिया**

```json theme={null}
{
  "job_id": "550e8400-e29b-41d4-a716-446655440000",
  "status": "queued",
  "created_at": "2025-01-15T10:30:00.000Z",
  "estimated_time": "60-120 seconds"
}
```

***

## चरण 2: परिणामों के लिए पोल करें

वीडियो जनरेशन इमेज जनरेशन से अधिक समय लेता है। प्रगति की जाँच के लिए हर 5 सेकंड में `/jobs/{job_id}` को पोल करें।

<Note>
  **वेबहुक उपलब्ध हैं!**

  जब जॉब पूरे हो जाएँ तो सूचनाएँ प्राप्त करने के लिए वेबहुक सेट अप करें। शुरू करने के लिए [Webhooks guide](/developers/webhooks) देखें।
</Note>

<CodeGroup>
  ```javascript Node.js theme={null}
  // npm install @krea-ai/sdk
  import { Krea } from "@krea-ai/sdk";

  const krea = new Krea({ apiKey: process.env.KREA_API_KEY });

  async function waitForVideo(jobId) {
    const completed = await krea.jobs.wait(jobId, { intervalMs: 5000 });
    return completed.result.urls[0];
  }

  const videoUrl = await waitForVideo(job.job_id);
  console.log(`Video ready: ${videoUrl}`);
  ```

  ```bash cURL theme={null}
  curl -X GET https://api.krea.ai/jobs/YOUR_JOB_ID \
    -H "Authorization: Bearer YOUR_API_TOKEN"
  ```

  ```python Python theme={null}
  import time

  def wait_for_video(job_id):
      while True:
          response = requests.get(
              f"{API_BASE}/jobs/{job_id}",
              headers={"Authorization": f"Bearer {API_TOKEN}"}
          )
          job = response.json()

          if job["status"] == "completed":
              return job["result"]["urls"][0]
          if job["status"] in ("failed", "cancelled"):
              raise Exception(f"Job failed: {job['status']}")

          # Show progress if available
          if "progress" in job:
              print(f"Progress: {job['progress']}%")
          else:
              print(f"Status: {job['status']}")

          time.sleep(5)

  video_url = wait_for_video(job["job_id"])
  print(f"Video ready: {video_url}")
  ```

  ```go Go theme={null}
  func waitForVideo(jobID string) (string, error) {
      for {
          req, _ := http.NewRequest("GET", apiBase+"/jobs/"+jobID, nil)
          req.Header.Set("Authorization", "Bearer "+apiToken)

          resp, _ := client.Do(req)
          var job map[string]interface{}
          json.NewDecoder(resp.Body).Decode(&job)
          resp.Body.Close()

          switch job["status"] {
          case "completed":
              result := job["result"].(map[string]interface{})
              urls := result["urls"].([]interface{})
              return urls[0].(string), nil
          case "failed", "cancelled":
              return "", fmt.Errorf("job failed: %s", job["status"])
          }

          // Show progress if available
          if progress, ok := job["progress"]; ok {
              fmt.Printf("Progress: %.0f%%\n", progress)
          } else {
              fmt.Printf("Status: %s\n", job["status"])
          }

          time.Sleep(5 * time.Second)
      }
  }
  ```
</CodeGroup>

**उदाहरण पूर्ण प्रतिक्रिया**

```json theme={null}
{
  "job_id": "550e8400-e29b-41d4-a716-446655440000",
  "status": "completed",
  "created_at": "2025-01-15T10:30:00.000Z",
  "completed_at": "2025-01-15T10:31:45.000Z",
  "result": {
    "urls": ["https://gen.krea.ai/videos/your-video.mp4"]
  }
}
```

<Note>
  **वेबहुक उपलब्ध हैं!**

  जब जॉब पूरे हो जाएँ तो सूचनाएँ प्राप्त करने के लिए वेबहुक सेट अप करें। शुरू करने के लिए [Webhooks guide](/developers/webhooks) देखें।
</Note>

***

## सामान्य पैरामीटर

<Tip>
  सभी मॉडलों के विस्तृत पैरामीटर की सूची के लिए, [Model APIs](/api-reference/introduction) पेज देखें।
</Tip>

| पैरामीटर       | प्रकार | विवरण                                                           |
| -------------- | ------ | --------------------------------------------------------------- |
| `prompt`       | string | वीडियो सामग्री का विस्तृत विवरण                                 |
| `duration`     | number | सेकंड में वीडियो की लंबाई। समर्थित मान मॉडल पर निर्भर करते हैं। |
| `aspect_ratio` | string | वीडियो का आस्पेक्ट रेशियो, जैसे `16:9`, `9:16`, या `1:1`        |
| `start_image`  | string | इमेज-टू-वीडियो मॉडलों के लिए वैकल्पिक स्रोत इमेज URL            |
| `end_image`    | string | समर्थित मॉडलों के लिए वैकल्पिक अंतिम फ्रेम URL                  |
| `mode`         | string | उन मॉडलों के लिए वैकल्पिक क्वालिटी मोड जो इसे उजागर करते हैं    |
| `model`        | string | उपयोग करने के लिए वीडियो जनरेशन मॉडल                            |

<Tip>
  **बेहतर वीडियो के लिए प्रॉम्प्ट टिप्स:**

  * मोशन और कैमरा मूवमेंट के बारे में विशिष्ट रहें
  * सीन, लाइटिंग, और वातावरण का वर्णन करें
  * टाइमिंग का उल्लेख करें (जैसे, “धीरे-धीरे पैनिंग”, “क्विक ज़ूम”)
  * स्टाइल संदर्भ शामिल करें (जैसे, “सिनेमेटिक”, “डॉक्युमेंट्री स्टाइल”)
</Tip>

<Warning>
  वीडियो जनरेशन की लागत इमेज जनरेशन से अधिक होती है। प्रति-मॉडल प्राइसिंग और अपने API बैलेंस को कैसे टॉप-अप करें, इसके लिए [API Keys & Billing](/developers/api-keys-and-billing) देखें।
</Warning>
