> ## 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 3 API の概要

> Krea 3 API ガイド: 指示に忠実に従う高速な画像編集モデルです。エンドポイント、パラメータ、思考モード、領域編集、コード例を解説します。

Krea 3 は高速な画像編集モデルです。自然な言葉による指示に従います。何を変え、何をそのまま残すかを伝えるだけで、Krea 3 が数秒で編集結果を生成します。テキストからの画像生成にも使えます。

<Info>
  Krea 3 API は現在**アーリーアクセス**中です。呼び出せるのは Krea 3 ベータに参加しているワークスペースのみです。アクセスをリクエストするには [sales@krea.ai](mailto:sales@krea.ai) までお問い合わせください。
</Info>

## エンドポイント

| モデル | エンドポイント |
| - | - |
| **Krea 3** | `POST /generate/image/krea/krea-3` |

このエンドポイントは標準の[ジョブのライフサイクル](/docs/ja/developers/job-lifecycle)に従います。`job_id` が返されるので、ジョブが完了するまで `GET /jobs/{job_id}` をポーリングしてください（または [Webhook](/docs/ja/developers/webhooks) を使用します）。出力画像は `result.urls[0]` に格納されます。

## クイックスタート: 最初の画像編集

すべてのリクエストには Bearer トークンが必要です。まだお持ちでない場合は [API キーと請求](/docs/ja/developers/api-keys-and-billing) を参照してください。

<Steps>
  <Step title="リファレンスをアップロードする">
    入力画像を `POST /assets` で送信します。レスポンスに `image_url` が含まれます。外部の画像 URL や base64 データ URI を `image_urls` に直接渡すこともできます。
  </Step>

  <Step title="編集を作成する">
    プロンプトとリファレンスを指定して `POST /generate/image/krea/krea-3` を呼び出します。レスポンスの `job_id` を保存してください。
  </Step>

  <Step title="結果を取得する">
    `status` が `completed` になるまで `GET /jobs/{job_id}` をポーリングします。出力は `result.urls[0]` に格納されます。
  </Step>
</Steps>

<CodeGroup>
  ```bash cURL theme={null}
  # Bash + curl + jq. Set KREA_API_TOKEN to your API token first.
  set -euo pipefail
  : "${KREA_API_TOKEN:?Set your Krea API token}"

  # 1. Upload a reference
  ASSET=$(curl --fail-with-body --silent --show-error --max-time 60 \
    https://api.krea.ai/assets \
    -H "Authorization: Bearer $KREA_API_TOKEN" \
    -F "file=@reference.png")

  IMAGE_URL=$(printf '%s' "$ASSET" | jq -er '.image_url')

  # 2. Create an edit
  PAYLOAD=$(jq -n --arg image "$IMAGE_URL" '{
    prompt: "Place the product on a clean studio background",
    thinking_mode: "fast",
    image_urls: [$image],
    resolution: "2k"
  }')

  JOB=$(curl --fail-with-body --silent --show-error --max-time 60 \
    https://api.krea.ai/generate/image/krea/krea-3 \
    -H "Authorization: Bearer $KREA_API_TOKEN" \
    -H "Content-Type: application/json" \
    -d "$PAYLOAD")

  JOB_ID=$(printf '%s' "$JOB" | jq -er '.job_id')

  # 3. Get the result
  for attempt in $(seq 1 150); do
    JOB=$(curl --fail-with-body --silent --show-error --max-time 30 \
      "https://api.krea.ai/jobs/$JOB_ID" \
      -H "Authorization: Bearer $KREA_API_TOKEN")
    STATUS=$(printf '%s' "$JOB" | jq -er '.status')
    case "$STATUS" in
      completed)
        printf '%s' "$JOB" | jq -er '.result.urls[0]'
        exit 0 ;;
      failed|cancelled)
        printf 'Job ended: %s\n' "$STATUS" >&2; exit 1 ;;
      scheduled|processing|queued|backlogged|sampling|intermediate-complete)
        sleep 2 ;;
      *) printf 'Unexpected status: %s\n' "$STATUS" >&2; exit 1 ;;
    esac
  done
  printf 'Polling timed out\n' >&2
  exit 1
  ```

  ```python Python theme={null}
  # Python 3 + requests: pip install requests
  # Set KREA_API_TOKEN to your API token first.
  import os
  import time
  import requests

  api = "https://api.krea.ai"
  headers = {"Authorization": f"Bearer {os.environ['KREA_API_TOKEN']}"}

  # 1. Upload a reference
  with open("reference.png", "rb") as image:
      response = requests.post(
          f"{api}/assets", headers=headers,
          files={"file": image}, timeout=60,
      )
  response.raise_for_status()
  image_url = response.json()["image_url"]

  # 2. Create an edit
  response = requests.post(
      f"{api}/generate/image/krea/krea-3",
      headers=headers,
      json={
          "prompt": "Place the product on a clean studio background",
          "thinking_mode": "fast",
          "image_urls": [image_url],
          "resolution": "2k",
      },
      timeout=60,
  )
  response.raise_for_status()
  job_id = response.json()["job_id"]

  # 3. Get the result
  pending = {"scheduled", "processing", "queued", "backlogged",
             "sampling", "intermediate-complete"}
  deadline = time.monotonic() + 300

  while time.monotonic() < deadline:
      response = requests.get(
          f"{api}/jobs/{job_id}", headers=headers, timeout=30,
      )
      response.raise_for_status()
      job = response.json()
      if job["status"] == "completed":
          print(job["result"]["urls"][0])
          break
      if job["status"] not in pending:
          raise RuntimeError(f"Job ended: {job['status']}")
      time.sleep(2)
  else:
      raise TimeoutError("Polling timed out")
  ```

  ```javascript Node.js theme={null}
  // Node.js 22+. Save as example.mjs.
  // Set KREA_API_TOKEN to your API token first.
  import { readFile } from "node:fs/promises";

  const token = process.env.KREA_API_TOKEN;
  if (!token) throw new Error("Set your Krea API token");
  const api = "https://api.krea.ai";
  const headers = { Authorization: `Bearer ${token}` };

  async function request(path, options = {}) {
    const response = await fetch(`${api}${path}`, {
      ...options,
      headers: { ...headers, ...options.headers },
      signal: AbortSignal.timeout(60_000),
    });
    if (!response.ok) throw new Error(`HTTP ${response.status}`);
    return response.json();
  }

  // 1. Upload a reference
  const form = new FormData();
  form.append("file", new Blob([await readFile("reference.png")]), "reference.png");
  const asset = await request("/assets", { method: "POST", body: form });

  // 2. Create an edit
  const job = await request("/generate/image/krea/krea-3", {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({
      prompt: "Place the product on a clean studio background",
      thinking_mode: "fast",
      image_urls: [asset.image_url],
      resolution: "2k",
    }),
  });

  // 3. Get the result
  const pending = new Set([
    "scheduled", "processing", "queued", "backlogged",
    "sampling", "intermediate-complete",
  ]);
  const deadline = Date.now() + 300_000;
  let imageUrl;

  while (Date.now() < deadline) {
    const result = await request(`/jobs/${job.job_id}`);
    if (result.status === "completed") {
      imageUrl = result.result.urls[0];
      break;
    }
    if (!pending.has(result.status)) {
      throw new Error(`Job ended: ${result.status}`);
    }
    await new Promise((resolve) => setTimeout(resolve, 2_000));
  }
  if (!imageUrl) throw new Error("Polling timed out");
  console.log(imageUrl);
  ```
</CodeGroup>

<Tip>
  API トークンはサーバー側で保管してください。クライアントサイドのコードには絶対に含めないでください。
</Tip>

## パラメータ

| フィールド | 型 | 説明 |
| - | - | - |
| `prompt` | string | **必須。** 編集の指示です。何を変え、何をそのまま残すかを記述します。 |
| `image_urls` | array of strings | 任意。入力画像のリファレンスで、最大 8 枚です。編集の場合は 1 枚以上指定し、テキストからの画像生成の場合は省略します。`POST /assets` で取得した `image_url`、外部 URL、base64 データ URI を受け付けます。 |
| `thinking_mode` | enum | 任意。`fast`（デフォルト）または `high`。[思考モード](#thinking-modes)を参照してください。 |
| `resolution` | enum | `1k` または `2k`。`width` と `height` の両方を指定しない限り必須です。`width` および `height` と併用しないでください。 |
| `aspect_ratio` | enum | 任意。`1:1`、`4:5`、`3:4`、`2:3`、`9:16`、`5:4`、`4:3`、`3:2`、`16:9`、`21:9` のいずれかです。`resolution` と組み合わせて使用します。自動でフレーミングさせる場合は省略してください。 |
| `width` / `height` | integers | 任意。希望するサイズで、それぞれ 4096 以下の正の整数です。`resolution` や `aspect_ratio` を指定せずに、両方を指定してください。 |
| `seed` | integer | 任意。省略するとランダムなシードが選ばれます。 |
| `negative_prompt` | string | 任意。避けたい要素で、最大 1,024 文字です。 |
| `regional_edit` | boolean | 任意。画像の他の部分を正確に保ったまま局所的に編集するには `true` を設定します。`image_urls` に 1 枚以上の画像が必要です。[領域編集](#regional-edits)を参照してください。 |

<Note>
  `width` と `height` を指定した場合、出力はサポートされている最も近いアスペクト比と 1k または 2k のキャンバスに丸められます。正確なピクセルサイズは保証されません。

  同じ `seed` を再利用しても、同一の結果になるとは限りません。プロンプト拡張のステップが実行ごとに変わる可能性があるためです。
</Note>

<h2 id="thinking-modes">
  思考モード
</h2>

Krea 3 は生成の前にプロンプトを解釈します。`thinking_mode` で、どの程度プランニングを行うかを設定します。

| モード | 処理内容 | 用途 |
| - | - | - |
| `fast` | Krea がプロンプトをすばやく拡張してから生成します。最速です。**デフォルトかつ推奨。** | 明確でシンプルな編集や、日常的なリクエストの大半。 |
| `high` | Krea がより強力な推論エンジンを使い、プロンプトとリファレンス画像から複雑な編集をプランニングしてから生成します。処理は遅くなります。 | 複雑な編集や複数ステップの編集、複数のリファレンスを組み合わせる場合、または `fast` の結果がリクエストどおりにならなかった場合。 |

`thinking_mode` を省略すると、API は `fast` を使用します。どちらのモードも `regional_edit` をサポートしています。

<h2 id="regional-edits">
  領域編集
</h2>

`regional_edit: true` を指定すると、Krea 3 は画像のうち変更が必要な部分だけを再生成します。それ以外の部分は元のまま正確に保たれるため、品質を落とさずに同じ画像を何度でも編集できます。

**局所的な編集に使用します。** 画像の他の部分をピクセル単位で正確に保つ必要がある場合です。たとえば、オブジェクトの色の変更や差し替え、要素の追加や削除、細部の修正、看板の文字の変更などです。最新の出力に対して編集を重ねる場合も、この方法なら安全です。

**画像全体を再レンダリングすべきグローバルな編集では指定しません。** たとえば、スタイルの変更、ライティングの変更、季節や時間帯の変更、構図の変更、複数の画像を組み合わせた新しいシーンの作成などです。通常の編集では画像全体が再レンダリングされるため、最新の出力に編集を重ねるとアーティファクトが蓄積することがあります。

領域編集には `image_urls` に 1 枚以上の画像が必要です。

```json theme={null}
{
  "prompt": "Change the mug to red, keeping everything else the same",
  "image_urls": ["IMAGE_URL"],
  "thinking_mode": "fast",
  "resolution": "2k",
  "regional_edit": true
}
```

## プロンプトの書き方

Krea 3 は指示に従うエディターです。編集内容を自然な言葉で書いてください。

* まず変更内容を書きます。実行に役立つ詳細だけを追加してください。
* 画像の他の部分をそのまま残したい場合は、最後に保持を指示する一文を加えます。そのまま残すものをすべて列挙する必要はありません。
* プロンプトで複数の画像を使う場合は、各画像を写っている内容で指してください。例: "Put the sneaker from the second image on the person in the first image."

```text theme={null}
Change the mug to red, keeping everything else the same.
```

## 画像リファレンス

* Krea 3 は各リファレンスをアップロードされた解像度のまま使用します。4 MP を超えるリファレンスは 4 MP にリサイズされます。
* ほとんどの編集では 1 MP 程度で十分です。送信前にリファレンスをアップスケールしないでください。
* 細部が重要な場合（小さな文字、ロゴ、生地、引きのショットに写った顔など）は、手元にある最も高解像度の画像を送信してください。
* 1 回のリクエストでリファレンスが 5 枚以上ある場合、各リファレンスは長辺が最大 1536 px になるようリサイズされます。細部まで保持したい場合は 4 枚以下にしてください。

## Zero Data Retention

Krea 3 はエンタープライズワークスペース向けに [Zero Data Retention](/docs/ja/developers/zdr) をサポートしています。`X-Api-Zero-Data-Retention: 1` ヘッダーを送信してください。Zero Data Retention を使用する場合:

* `image_urls` 内のすべての画像は base64 データ URI である必要があります。
* `thinking_mode` には `fast` または `high` を指定できます。
* 1 回のリクエストで使用できる画像リファレンスは最大 4 枚です。

```bash theme={null}
IMAGE_DATA_URI="data:image/png;base64,$(base64 < ./reference.png | tr -d '\n')"

curl -X POST https://api.krea.ai/generate/image/krea/krea-3 \
  -H "Authorization: Bearer $KREA_API_TOKEN" \
  -H "Content-Type: application/json" \
  -H "X-Api-Zero-Data-Retention: 1" \
  -d '{
    "prompt": "Change the mug to red, keeping everything else the same",
    "image_urls": ["'"$IMAGE_DATA_URI"'"],
    "thinking_mode": "fast",
    "resolution": "2k"
  }'
```

## 料金

1 枚あたりの価格は、出力解像度、思考モード、画像リファレンスによって決まります。

| 料金項目 | 1K 出力 | 2K 出力 |
| - | - | - |
| 基本料金 | \$0.03 | \$0.06 |
| 1K リファレンス画像 1 枚ごと | +\$0.02 | +\$0.02 |
| 2K リファレンス画像 1 枚ごと | +\$0.07 | +\$0.07 |
| `high` 思考モード | 1 回の生成につき +\$0.02 | 1 回の生成につき +\$0.02 |

## 関連ページ

<CardGroup cols={2}>
  <Card title="ジョブのライフサイクル" icon="arrows-rotate" href="/docs/ja/developers/job-lifecycle">
    ジョブのステータス、ポーリング、結果について。
  </Card>

  <Card title="Webhooks" icon="bell" href="/docs/ja/developers/webhooks">
    ポーリングの代わりに、ジョブの完了時に通知を受け取ります。
  </Card>
</CardGroup>


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