curl --request POST \
--url https://api.apimart.ai/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "flux-kontext-pro",
"prompt": "髪の色を青に変える",
"image_urls": ["https://upload.apimart.ai/f/models/9998230420418352-159728fe-5ae8-4330-857a-a84c034d8d21-flux-kontext-pro.webp"],
"size": "16:9"
}'
import requests
url = "https://api.apimart.ai/v1/images/generations"
payload = {
"model": "flux-kontext-pro",
"prompt": "髪の色を青に変える",
"image_urls": ["https://upload.apimart.ai/f/models/9998230420418352-159728fe-5ae8-4330-857a-a84c034d8d21-flux-kontext-pro.webp"],
"size": "16:9"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://api.apimart.ai/v1/images/generations";
const payload = {
model: "flux-kontext-pro",
prompt: "髪の色を青に変える",
image_urls: ["https://upload.apimart.ai/f/models/9998230420418352-159728fe-5ae8-4330-857a-a84c034d8d21-flux-kontext-pro.webp"],
size: "16:9"
};
const headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(payload)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01KFG5BBFNK1YQDTJDZY0P0QT2"
}
]
}
{
"error": {
"code": 401,
"message": "認証に失敗しました。APIキーを確認してください",
"type": "authentication_error"
}
}
{
"error": {
"code": 402,
"message": "残高が不足しています。チャージしてから再試行してください",
"type": "payment_required"
}
}
Flux Kontext
Flux Kontext 画像生成
- 非同期処理モード。後続の照会に使用するタスク ID を返します
- Pro と Max はどちらもテキストからの画像生成と参照画像の編集に対応しています
- 生成結果の expires_at は画像リンクの有効期限を示します
POST
/
v1
/
images
/
generations
curl --request POST \
--url https://api.apimart.ai/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "flux-kontext-pro",
"prompt": "髪の色を青に変える",
"image_urls": ["https://upload.apimart.ai/f/models/9998230420418352-159728fe-5ae8-4330-857a-a84c034d8d21-flux-kontext-pro.webp"],
"size": "16:9"
}'
import requests
url = "https://api.apimart.ai/v1/images/generations"
payload = {
"model": "flux-kontext-pro",
"prompt": "髪の色を青に変える",
"image_urls": ["https://upload.apimart.ai/f/models/9998230420418352-159728fe-5ae8-4330-857a-a84c034d8d21-flux-kontext-pro.webp"],
"size": "16:9"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://api.apimart.ai/v1/images/generations";
const payload = {
model: "flux-kontext-pro",
prompt: "髪の色を青に変える",
image_urls: ["https://upload.apimart.ai/f/models/9998230420418352-159728fe-5ae8-4330-857a-a84c034d8d21-flux-kontext-pro.webp"],
size: "16:9"
};
const headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(payload)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01KFG5BBFNK1YQDTJDZY0P0QT2"
}
]
}
{
"error": {
"code": 401,
"message": "認証に失敗しました。APIキーを確認してください",
"type": "authentication_error"
}
}
{
"error": {
"code": 402,
"message": "残高が不足しています。チャージしてから再試行してください",
"type": "payment_required"
}
}
curl --request POST \
--url https://api.apimart.ai/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "flux-kontext-pro",
"prompt": "髪の色を青に変える",
"image_urls": ["https://upload.apimart.ai/f/models/9998230420418352-159728fe-5ae8-4330-857a-a84c034d8d21-flux-kontext-pro.webp"],
"size": "16:9"
}'
import requests
url = "https://api.apimart.ai/v1/images/generations"
payload = {
"model": "flux-kontext-pro",
"prompt": "髪の色を青に変える",
"image_urls": ["https://upload.apimart.ai/f/models/9998230420418352-159728fe-5ae8-4330-857a-a84c034d8d21-flux-kontext-pro.webp"],
"size": "16:9"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://api.apimart.ai/v1/images/generations";
const payload = {
model: "flux-kontext-pro",
prompt: "髪の色を青に変える",
image_urls: ["https://upload.apimart.ai/f/models/9998230420418352-159728fe-5ae8-4330-857a-a84c034d8d21-flux-kontext-pro.webp"],
size: "16:9"
};
const headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(payload)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01KFG5BBFNK1YQDTJDZY0P0QT2"
}
]
}
{
"error": {
"code": 401,
"message": "認証に失敗しました。APIキーを確認してください",
"type": "authentication_error"
}
}
{
"error": {
"code": 402,
"message": "残高が不足しています。チャージしてから再試行してください",
"type": "payment_required"
}
}
対応モデル
| モデル名 | 説明 |
|---|---|
flux-kontext-pro | Flux Kontext Pro 画像生成・編集モデル |
flux-kontext-max | Flux Kontext Max 高品質画像生成・編集モデル |
認証
string
必須
すべてのエンドポイントで Bearer Token による認証が必要ですAPI Key の取得:API Key 管理ページで API Key を取得してくださいリクエストヘッダーに次の値を追加します:
Authorization: Bearer YOUR_API_KEY
Body
string
必須
モデル名
flux-kontext-pro- Kontext Pro 画像生成・編集モデルflux-kontext-max- Kontext Max 高品質画像生成・編集モデル
boolean
デフォルト:"false"
画像タスクを送信する前にコンテンツモデレーションを実行するかどうかを指定します。
true:omni-moderation-latestでプロンプトと入力画像を審査falseまたは省略:審査リクエストを行わず、審査コストや遅延を追加しない(デフォルト)
string
必須
画像の生成または編集内容を記述するテキスト。
array
参照画像のリスト。省略するとテキストから画像を生成し、指定すると画像を編集します。制限:
- 最大 4 枚の画像に対応
- 公開アクセス可能な URL または Base64 エンコードされた入力画像に対応しています
- 出力画像とすべての参照画像の合計ピクセル数は 9MP 以下でなければなりません
string
デフォルト:"1:1"
画像のアスペクト比対応するアスペクト比と自動モード:
1:1- 正方形(デフォルト)4:3- 横向き 4:33:4- 縦向き 3:416:9- 横向きワイドスクリーン9:16- 縦向き3:2- 横向き 3:22:3- 縦向き 2:321:9- ウルトラワイド9:21- ウルトラトールauto- 参照画像のアスペクト比に従う
size に auto を指定すると、image_urls がある場合は参照画像のアスペクト比に従います。参照画像がない場合は、デフォルトの 1:1 として処理されます。1024x1536 のようなピクセル文字列は、対応する最も近いアスペクト比にマッピングされ、正確なピクセルサイズでは出力されません。Kontext は width と height に対応しておらず、指定するとタスクが失敗します。resolution は Kontext では効果がなく、出力は約 1MP です。string
デフォルト:"png"
出力画像のエンコード形式
png- PNG 形式(デフォルト)jpeg- JPEG 形式webp- WebP 形式
string
レスポンス形式の互換パラメータ。指定できる値は
url と b64_json です。画像のエンコード形式は変わらず、画像形式には output_format が優先して使用されます。integer
デフォルト:"1"
生成する画像の枚数。値は
1 でなければなりません。複数枚が必要な場合は、複数のタスクを送信してください。integer
ランダムシード。同じシードとその他のパラメータを使用すると、同じ結果を再現できます。省略した場合はランダムに生成されます。
boolean
デフォルト:"false"
プロンプト強化を有効にするかどうか
true- 有効false- 無効(デフォルト)
明示的に false を設定すると、プロンプトの書き換えを無効にできます。
integer
デフォルト:"2"
セーフティ許容度範囲:0~6。値が大きいほど許容度が高くなります
実際の出力サイズ
| 比率 | 実際の出力サイズ |
|---|---|
1:1 | 1024×1024 |
4:3 | 1184×880 |
3:4 | 880×1184 |
16:9 | 1392×752 |
9:16 | 752×1392 |
3:2 | 1248×832 |
2:3 | 832×1248 |
21:9 | 1568×672 |
9:21 | 672×1568 |
ユースケース例
画像編集(入力画像あり){
"model": "flux-kontext-pro",
"prompt": "背景をビーチに変更",
"image_urls": ["https://example.com/photo.jpg"],
"size": "16:9",
"output_format": "png"
}
{
"model": "flux-kontext-max",
"prompt": "青い猫",
"size": "1:1",
"seed": 12345
}
{
"model": "flux-kontext-max",
"prompt": "画像 1 の人物を画像 2 のシーンに配置し、ライティングを統一する",
"image_urls": [
"https://example.com/person.jpg",
"https://example.com/scene.jpg"
],
"size": "4:3"
}
Response
integer
レスポンスステータスコード
タスク結果の照会
送信に成功したら、GET /v1/tasks/{task_id} でタスクのステータスをポーリングします。詳しくはタスク照会 APIを参照してください。
成功レスポンス例
{
"code": 200,
"data": {
"id": "task_01KFG5BBFNK1YQDTJDZY0P0QT2",
"status": "completed",
"progress": 100,
"created": 1785133674,
"completed": 1785133683,
"actual_time": 9,
"estimated_time": 15,
"result": {
"images": [
{
"url": [
"https://upload.apimart.ai/f/image/xxxxxxxx-flux-kontext.png"
],
"expires_at": 1785220083
}
]
}
}
}
data.result.images[0].url[0] です。expires_at はこのリンクの有効期限を表す Unix タイムスタンプです。有効期限までに画像を保存してください。
タスクステータス
| ステータス | 意味 |
|---|---|
submitted / pending | 受付済みまたは処理待ち。ポーリングを続けます |
processing | 生成中。ポーリングを続けます |
completed | 生成成功。結果は result.images にあります |
failed | 生成失敗。data.error.message を確認してください |
無効なモデルパラメータとタスクの失敗
無効なモデルパラメータは非同期で通知されます。送信時は HTTP 200 とtask_id が返り、タスクを照会すると最終的に failed となり、具体的な理由が data.error.message に示されます。そのため、必ず最終ステータスまでポーリングしてください。
{
"code": 200,
"data": {
"status": "failed",
"error": {
"type": "task_failed",
"code": "task_failed",
"message": "width/height are not supported by flux-kontext-pro"
}
}
}
data.error.code は常に task_failed で、具体的な理由は message に記載されます。失敗したタスクは全額返金されます。
注意事項
- 非同期処理:送信後に
task_idが返されます。結果を取得するには/v1/tasks/{task_id}をポーリングしてください。 - 参照画像の要件:参照画像は最大 4 件まで指定でき、公開アクセス可能な画像 URL または Base64 エンコードされた入力画像を使用できます。出力画像との合計は 9MP 以下でなければなりません。
- サイズのルール:デフォルトのアスペクト比は
1:1です。ピクセル文字列は最も近い対応比率にマッピングされ、width/heightは拒否され、resolutionは効果がありません。Kontext の出力は約 1MP です。 - 生成枚数:
nは1でなければならず、1 回のリクエストで生成される画像は 1 枚です。 - プロンプトの書き換え:
prompt_upsampling: falseを明示的に設定すると、プロンプトの書き換えを無効にできます。 - 結果リンク:画像 URL の有効期限は、対応する
expires_atの Unix タイムスタンプに従います。期限までに保存してください。 - 参照 URL にアクセスできない場合:
temporarily unavailable dependencyというメッセージは、参照画像にアクセスできないことを示す場合があります。URL が公開されており、アクセス制限や期限切れの署名がないことを先に確認してください。