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

# Metinden Görüntüye

> Krea API metinden görüntüye modellerini karşılaştırın — Krea 2, Flux, Nano Banana Pro ve daha fazlası — doğru olanı seçmek için fiyatlandırma, yetenekler ve kod örnekleriyle.

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-image.webp" title="Metinden Görüntüye" description="Metin promptlarından yüksek kaliteli görüntüler üretin. Fotogerçekçi görüntülerden sanatsal illüstrasyonlara kadar her şeyi son teknoloji AI modelleriyle oluşturun." />

## Popüler Modeller

<div className="grid grid-cols-1 md:grid-cols-2 gap-4 hidden dark:grid">
  <ModelOverviewCard name="Krea 2" href="/developers/krea-2/overview" icon="/images/logo/krea-logo-icon-dark.svg" description="Krea'nın temel modeli — stil aktarımı, moodboardlar ve ayarlanabilir yaratıcılık." />

  <ModelOverviewCard name="Flux" href="/api-reference/image/flux" icon="/images/logo/bfl-dark.svg" description="Kapsamlı stil desteği ve özel oranlarla hızlı, çok yönlü üretim." />

  <ModelOverviewCard name="Nano Banana Pro" href="/api-reference/image/nano-banana-pro" icon="/images/logo/deepmind-dark.svg" description="Üstün tipografi ve fotogerçekçi detay ile Google'ın en yeni modeli." />

  <ModelOverviewCard name="Seedream 4" href="/api-reference/image/seedream-4" icon="/images/logo/bytedance-dark.svg" description="Yüksek kaliteli metinden görüntüye ve görüntüden görüntüye, fotogerçekçi detay ve esnek çözünürlük." />

  <ModelOverviewCard name="GPT Image 2" href="/api-reference/image/chatgpt-2" icon="/images/logo/openai-dark.svg" description="OpenAI'nin yüksek kaliteli üretim ve düzenleme için en yeni görüntü modeli." />
</div>

<div className="grid grid-cols-1 md:grid-cols-2 gap-4 block dark:hidden">
  <ModelOverviewCard name="Krea 2" href="/developers/krea-2/overview" icon="/images/logo/krea-logo-icon-light.svg" description="Krea'nın temel modeli — stil aktarımı, moodboardlar ve ayarlanabilir yaratıcılık." />

  <ModelOverviewCard name="Flux" href="/api-reference/image/flux" icon="/images/logo/bfl-light.svg" description="Kapsamlı stil desteği ve özel oranlarla hızlı, çok yönlü üretim." />

  <ModelOverviewCard name="Nano Banana Pro" href="/api-reference/image/nano-banana-pro" icon="/images/logo/deepmind-light.svg" description="Üstün tipografi ve fotogerçekçi detay ile Google'ın en yeni modeli." />

  <ModelOverviewCard name="Seedream 4" href="/api-reference/image/seedream-4" icon="/images/logo/bytedance-light.svg" description="Yüksek kaliteli metinden görüntüye ve görüntüden görüntüye, fotogerçekçi detay ve esnek çözünürlük." />

  <ModelOverviewCard name="GPT Image 2" href="/api-reference/image/chatgpt-2" icon="/images/logo/openai-light.svg" description="OpenAI'nin yüksek kaliteli üretim ve düzenleme için en yeni görüntü modeli." />
</div>

***

## Genel Bakış

Flux, Nano Banana Pro ve diğer son teknoloji AI modellerini kullanarak metin açıklamalarından görüntüler üretin. Bu örnek, bir üretim isteği göndermekten nihai görüntüyü almaya kadar tüm iş akışında size rehberlik eder.

<Note>
  Görüntü üretimi asenkrondur. Hemen bir iş kimliği alırsınız, ardından görüntü hazır olana kadar sonuçları sorgularsınız.
</Note>

## Etkileşimli Playground

Farklı dillerde eksiksiz bir örnek:

<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 result = await krea.subscribe("image/bfl/flux-1-dev", {
    input: {
      prompt: "a serene mountain landscape at sunset",
      width: 1024,
      height: 576,
      steps: 28
    }
  });

  console.log(`Image ready: ${result.data?.urls[0]}`);
  ```

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

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

  # Adım 1: Üretim işini oluştur
  response = requests.post(
      f"{API_BASE}/generate/image/bfl/flux-1-dev",
      headers={
          "Authorization": f"Bearer {API_TOKEN}",
          "Content-Type": "application/json"
      },
      json={
          "prompt": "a serene mountain landscape at sunset",
          "width": 1024,
          "height": 576,
          "steps": 28
      }
  )
  job = response.json()
  job_id = job["job_id"]

  # Adım 2: Tamamlanma için sorgula
  while True:
      response = requests.get(
          f"{API_BASE}/jobs/{job_id}",
          headers={"Authorization": f"Bearer {API_TOKEN}"}
      )
      job = response.json()

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

      print(f"Status: {job['status']}")
      time.sleep(2)
  ```

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

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

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

      // Adım 1: Üretim işini oluştur
      payload := map[string]interface{}{
          "prompt": "a serene mountain landscape at sunset",
          "width":  1024,
          "height": 576,
          "steps":  28,
      }
      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")

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

      jobID := job["job_id"].(string)

      // Adım 2: Tamamlanma için sorgula
      for {
          req, _ := http.NewRequest("GET", apiBase+"/jobs/"+jobID, nil)
          req.Header.Set("Authorization", "Bearer "+apiToken)

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

          switch jobStatus["status"] {
          case "completed":
              result := jobStatus["result"].(map[string]interface{})
              imageURL := result["urls"].([]interface{})[0].(string)
              fmt.Printf("Image ready: %s\n", imageURL)
              return
          case "failed", "cancelled":
              fmt.Printf("Job failed: %s\n", jobStatus["status"])
              return
          }

          fmt.Printf("Status: %s\n", jobStatus["status"])
          time.Sleep(2 * time.Second)
      }
  }
  ```

  ```bash cURL theme={null}
  # Adım 1: Üretim işini oluştur
  curl -X POST https://api.krea.ai/generate/image/bfl/flux-1-dev \
    -H "Authorization: Bearer YOUR_API_TOKEN" \
    -H "Content-Type: application/json" \
    -d '{
      "prompt": "a serene mountain landscape at sunset",
      "width": 1024,
      "height": 576,
      "steps": 28
    }'

  # Yanıt: {"job_id": "550e8400-e29b-41d4-a716-446655440000", ...}

  # Adım 2: Tamamlanma için sorgula (tamamlanana kadar tekrarla)
  curl -X GET https://api.krea.ai/jobs/550e8400-e29b-41d4-a716-446655440000 \
    -H "Authorization: Bearer YOUR_API_TOKEN"
  ```
</CodeGroup>

<Info>
  **API Tokenınızla değiştirin**

  Yukarıdaki örneklerdeki YOUR\_API\_TOKEN yer tutucusunu değiştirmek için, [krea.ai/settings/api-tokens](https://www.krea.ai/settings/api-tokens) adresinde bir API tokenı oluşturmanız gerekir. Yardıma ihtiyacınız varsa [API Anahtarları ve Faturalandırma](/developers/api-keys-and-billing) sayfasındaki talimatları izleyin.
</Info>

Mevcut tüm modelleri bulmak için [Model API'leri](/api-reference/introduction) sayfasına bakın.

***

## Ayrıntılı İnceleme

Aşağıda, bir üretim isteği göndermekten nihai görüntüyü almaya kadar tüm iş akışında size rehberlik edeceğiz.

## Adım 1: Bir Görüntü Üretim İşi Oluşturun

`/generate/image/bfl/flux-1-dev` adresine promptunuz ve parametrelerinizle bir POST isteği yapın. API hemen bir iş kimliği döndürür—üretim asenkron olarak gerçekleşir.

<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,
    steps: 28
  });

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

  ```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" \
    -d '{
      "prompt": "a serene mountain landscape at sunset",
      "width": 1024,
      "height": 576,
      "steps": 28
    }'
  ```

  ```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"
      },
      json={
          "prompt": "a serene mountain landscape at sunset",
          "width": 1024,
          "height": 576,
          "steps": 28
      }
  )

  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-token-secret"

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

      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")

      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>

**Örnek Yanıt**

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

***

## Adım 2: Sonuçları Sorgulayın

İş tamamlanana kadar `/jobs/{job_id}` adresini her 2 saniyede bir sorgulayın. Krea API bazı modeller için ara üretim çıktıları sağlar.

<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 waitForJob(jobId) {
    const completed = await krea.jobs.wait(jobId, { intervalMs: 2000 });
    return completed.result.urls[0];
  }

  const imageUrl = await waitForJob(job.job_id);
  console.log(`Image ready: ${imageUrl}`);
  ```

  ```bash cURL theme={null}
  # İş durumunu kontrol et
  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_job(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']}")

          print(f"Status: {job['status']}")
          time.sleep(2)

  image_url = wait_for_job(job["job_id"])
  print(f"Image ready: {image_url}")
  ```

  ```go Go theme={null}
  func waitForJob(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"])
          }

          fmt.Printf("Status: %s\n", job["status"])
          time.Sleep(2 * time.Second)
      }
  }
  ```
</CodeGroup>

<Note>
  **Webhook'lar mevcut!**

  İşler tamamlandığında bildirim almak için webhook'ları ayarlayın. Başlamak için [Webhooks kılavuzuna](/developers/webhooks) bakın.
</Note>

<Tip>
  Tüm modeller için detaylı parametrelerin listesi için [Model API'leri](/api-reference/introduction) sayfasına bakın.
</Tip>

**Örnek Tamamlanmış Yanıt**

```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:25.000Z",
  "result": {
    "urls": [
      "https://krea.ai/generations/your-image.png"
    ]
  }
}
```

<Tip>
  Tüm olası iş durumları ve tam iş yaşam döngüsü hakkında bilgi edinmek için [İş Yaşam Döngüsü](/developers/job-lifecycle) sayfasına bakın.
</Tip>
