> ## 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.

# वेबहुक

> रीयल-टाइम जॉब पूर्णता इवेंट्स प्राप्त करने, पोलिंग को कम करने, और अपने एप्लिकेशन में विश्वसनीय एसिंक्रोनस वर्कफ़्लो बनाने के लिए वेबहुक सेट अप करें।

## अवलोकन

`GET /jobs/{id}` को बार-बार पोल करने के बजाय, आप एक वेबहुक URL प्रदान कर सकते हैं ताकि जब आपका जॉब पूरा हो जाए तो एक POST अनुरोध प्राप्त हो सके। यह अधिक कुशल है और अनावश्यक API कॉल्स को कम करता है।

## वेबहुक का उपयोग

किसी भी जनरेशन अनुरोध में `X-Webhook-URL` हेडर जोड़ें। जब जॉब टर्मिनल स्टेट (completed, failed, या cancelled) तक पहुँचता है, तो API आपके URL पर पूरे जॉब डेटा के साथ एक POST अनुरोध भेजेगा।

<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.image(
    "bfl/flux-1-dev",
    {
      prompt: "a serene mountain landscape at sunset",
      width: 1024,
      height: 576
    },
    { webhookUrl: "https://your-server.com/webhook" }
  );

  console.log(`Job ID: ${job.job_id}`);
  // Your webhook will receive the results when complete
  ```

  ```bash cURL theme={null}
  curl -X POST https://api.krea.ai/generate/image/bfl/flux-1-dev \
    -H "Authorization: Bearer YOUR_API_TOKEN" \
    -H "Content-Type: application/json" \
    -H "X-Webhook-URL: https://your-server.com/webhook" \
    -d '{
      "prompt": "a serene mountain landscape at sunset",
      "width": 1024,
      "height": 576
    }'
  ```

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

  API_BASE = "https://api.krea.ai"
  API_TOKEN = "your-token-secret"

  response = requests.post(
      f"{API_BASE}/generate/image/bfl/flux-1-dev",
      headers={
          "Authorization": f"Bearer {API_TOKEN}",
          "Content-Type": "application/json",
          "X-Webhook-URL": "https://your-server.com/webhook"
      },
      json={
          "prompt": "a serene mountain landscape at sunset",
          "width": 1024,
          "height": 576
      }
  )

  job = response.json()
  print(f"Job ID: {job['job_id']}")
  # Your webhook will receive the results when complete
  ```

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

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

  func main() {
      apiBase := "https://api.krea.ai"
      apiToken := "your-token-secret"

      payload := map[string]interface{}{
          "prompt": "a serene mountain landscape at sunset",
          "width":  1024,
          "height": 576,
      }

      jsonData, _ := json.Marshal(payload)
      req, _ := http.NewRequest("POST", apiBase+"/generate/image/bfl/flux-1-dev", bytes.NewBuffer(jsonData))
      req.Header.Set("Authorization", "Bearer "+apiToken)
      req.Header.Set("Content-Type", "application/json")
      req.Header.Set("X-Webhook-URL", "https://your-server.com/webhook")

      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"])
      // Your webhook will receive the results when complete
  }
  ```
</CodeGroup>

## वेबहुक पेलोड

जब जॉब पूरा हो जाता है, तो आपके वेबहुक URL को जॉब डेटा के साथ एक POST अनुरोध प्राप्त होता है:

```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:30:05.000Z",
  "result": {
    "urls": ["https://..."]
  }
}
```

## सर्वोत्तम प्रथाएँ

<Check>
  **तुरंत प्रतिक्रिया दें** - तेज़ी से 2xx स्टेटस कोड लौटाएँ। यदि आवश्यक हो तो वेबहुक डेटा को एसिंक्रोनस रूप से प्रोसेस करें।
</Check>

<Warning>
  **पेलोड की पुष्टि करें** - परिणामों को प्रोसेस करने से पहले सत्यापित करें कि `job_id` आपके द्वारा शुरू किए गए किसी जॉब से मेल खाता है।
</Warning>

* सुरक्षा के लिए HTTPS एंडपॉइंट्स का उपयोग करें
* डुप्लिकेट डिलीवरी के मामले में आइडेम्पोटेंसी लागू करें
* डिबगिंग के लिए वेबहुक रसीदों को लॉग करें

## वेबहुक बनाम पोलिंग

| दृष्टिकोण  | फ़ायदे                                      | नुकसान                            |
| ---------- | ------------------------------------------- | --------------------------------- |
| **वेबहुक** | रीयल-टाइम सूचनाएँ, कम API कॉल्स             | एक सार्वजनिक एंडपॉइंट की आवश्यकता |
| **पोलिंग** | कहीं भी काम करता है, सर्वर की आवश्यकता नहीं | अधिक API कॉल्स, थोड़ा विलंब       |

जब आपके पास ऐसा सर्वर हो जो HTTP अनुरोध प्राप्त कर सके तो वेबहुक का उपयोग करें। क्लाइंट-साइड एप्लिकेशन के लिए या जब आप कोई सार्वजनिक एंडपॉइंट उजागर नहीं कर सकते तो पोलिंग का उपयोग करें।

## अगले चरण

<CardGroup cols={2}>
  <Card title="जॉब लाइफ़साइकिल" icon="cube" href="/developers/job-lifecycle">
    जॉब स्टेट्स और स्टेटस पोलिंग के बारे में जानें
  </Card>

  <Card title="कोड उदाहरण" icon="code" href="/developers/examples/text-to-image">
    वेबहुक हैंडलिंग के साथ पूर्ण उदाहरण देखें
  </Card>
</CardGroup>
