curl --request POST \
--url https://api.apimart.ai/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "flux-2-pro",
"prompt": "草原にいる青い猫",
"resolution": "2MP",
"size": "16:9"
}'
import requests
url = "https://api.apimart.ai/v1/images/generations"
payload = {
"model": "flux-2-pro",
"prompt": "草原にいる青い猫",
"resolution": "2MP",
"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-2-pro",
prompt: "草原にいる青い猫",
resolution: "2MP",
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 2.0
Flux 2.0 画像生成
-
非同期処理モード。送信後にタスク ID を返します
-
テキストからの画像生成、画像からの画像生成、複数の参照画像の合成に対応しています
-
Flex、Pro、Max の 3 モデルに対応し、最大 4MP の画像を出力できます
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-2-pro",
"prompt": "草原にいる青い猫",
"resolution": "2MP",
"size": "16:9"
}'
import requests
url = "https://api.apimart.ai/v1/images/generations"
payload = {
"model": "flux-2-pro",
"prompt": "草原にいる青い猫",
"resolution": "2MP",
"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-2-pro",
prompt: "草原にいる青い猫",
resolution: "2MP",
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-2-pro",
"prompt": "草原にいる青い猫",
"resolution": "2MP",
"size": "16:9"
}'
import requests
url = "https://api.apimart.ai/v1/images/generations"
payload = {
"model": "flux-2-pro",
"prompt": "草原にいる青い猫",
"resolution": "2MP",
"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-2-pro",
prompt: "草原にいる青い猫",
resolution: "2MP",
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-2-flex | サンプリングステップ数とプロンプトガイダンス強度を調整できる詳細制御モデル |
flux-2-pro | 速度と品質のバランスに優れ、一般的な本番ワークフローに適したモデル |
flux-2-max | 高い画質が求められる用途に適した最高品質モデル |
認証
string
必須
すべてのエンドポイントで Bearer Token による認証が必要です。API Key の取得:API Key 管理ページで API Key を取得してください。リクエストヘッダーに次の値を追加します:
Authorization: Bearer YOUR_API_KEY
Body
string
必須
モデル名:
flux-2-flex- 詳細な制御が可能な Flex モデルflux-2-pro- 汎用 Pro モデルflux-2-max- 最高品質の Max モデル
boolean
デフォルト:"false"
画像タスクを送信する前にコンテンツモデレーションを実行するかどうかを指定します。
true:omni-moderation-latestでプロンプトと入力画像を審査falseまたは省略:審査リクエストを行わず、審査コストや遅延を追加しない(デフォルト)
string
必須
画像の生成または編集内容を記述するテキスト。
string
デフォルト:"2MP"
出力解像度の区分:
1MP2MP- デフォルト3MP4MP
1MP は 1,048,576 ピクセルです。互換エイリアス:512 / 512P / 1M は 1MP、1K / 1024 は 2MP、2K / 2048 は 3MP、4K は 4MP と同等です。それ以外の値は拒否されます。実際の出力サイズは size にも依存します。string
デフォルト:"1:1"
出力画像のアスペクト比またはピクセルサイズ。
size には auto も指定できます。image_urls を渡した場合は、現在の resolution の設定を維持したまま参照画像のアスペクト比に従います。参照画像がない場合は、デフォルトの 1:1 として処理されます。次のサイズオプションに対応しています:1:1- 正方形(デフォルト)4:3- 横向き3:4- 縦向き16:9- ワイドスクリーン9:16- 縦向き3:2- クラシックな横向き2:3- クラシックな縦向き21:9- 超ワイド9:21- 超縦長auto- 参照画像のアスペクト比に従う
"幅x高さ" 形式のピクセル文字列も指定できます。例:"1024x1536"。integer
正確な出力幅(ピクセル単位)。
height と同時に指定する必要があり、各値は 64 以上でなければなりません。どちらか一方だけを指定すると、タスクは失敗します。integer
正確な出力高さ(ピクセル単位)。
width と同時に指定する必要があり、各値は 64 以上でなければなりません。出力の総ピクセル数は 4MP 以下、つまり width × height ≤ 4,194,304 でなければなりません。array
画像からの画像生成または複数の参照画像の合成に使用する参照画像のリスト。制限:
- 最大 8 枚の画像に対応
- 公開アクセス可能な URL または Base64 エンコードされた入力画像に対応しています
- 出力画像とすべての参照画像の合計ピクセル数は 9MP 以下でなければなりません
string
デフォルト:"jpeg"
出力画像のエンコード形式。
jpeg、png、webp に対応し、デフォルトは jpeg です。integer
デフォルト:"1"
生成する画像の枚数。値は
1 でなければなりません。複数枚が必要な場合は、複数のタスクを送信してください。integer
ランダムシード。同じシードとその他のパラメータを使用すると、同じ結果を再現できます。省略した場合はランダムに生成されます。
boolean
デフォルト:"false"
プロンプト強化を有効にするかどうか:
true- 有効false- 無効(デフォルト)
明示的に false を設定すると、プロンプトの書き換えを無効にできます。
integer
デフォルト:"2"
コンテンツ審査の許容度。範囲は 0~5 です。値が大きいほど審査の許容度が高くなります。
integer
デフォルト:"50"
サンプリングステップ数。
flux-2-flex でのみ使用できます。範囲は 1~50 です。値を大きくすると、通常はディテールが増える一方で生成時間が長くなります。number
デフォルト:"5.0"
プロンプトガイダンス強度。
flux-2-flex でのみ使用できます。範囲は 1.5~10 です。値を大きくすると、通常は生成結果がプロンプトにより忠実になります。解像度対応表
| 比率 | 1MP | 2MP(デフォルト) | 3MP | 4MP |
|---|---|---|---|---|
1:1 | 1024×1024 | 1440×1440 | 1536×1536 | 2048×2048 |
4:3 | 1152×864 | 1664×1248 | 1824×1360 | 2336×1760 |
3:4 | 864×1152 | 1248×1664 | 1360×1824 | 1760×2336 |
16:9 | 1344×752 | 1920×1072 | 2048×1152 | 2720×1536 |
9:16 | 752×1344 | 1072×1920 | 1152×2048 | 1536×2720 |
3:2 | 1248×832 | 1728×1152 | 1872×1248 | 2496×1664 |
2:3 | 832×1248 | 1152×1728 | 1248×1872 | 1664×2496 |
21:9 | 1504×640 | 2176×928 | 2304×992 | 3072×1312 |
9:21 | 640×1504 | 928×2176 | 992×2304 | 1312×3072 |
サイズパラメータの優先順位
widthとheightを両方指定すると、正確なピクセルサイズになります。sizeに1024x1536のようなピクセル文字列を指定すると、正確なピクセルサイズになります。- それ以外の場合は、
resolutionとsizeのアスペクト比から上の表に従ってサイズが決まります。 - サイズ指定を省略した場合は
2MPと1:1、つまり 1440×1440 になります。
width または height の一方だけを指定することはできず、タスクは失敗します。
ユースケース例
基本的なテキストからの画像生成{
"model": "flux-2-pro",
"prompt": "サイバーパンク風の都市の夜景。濡れた路面にネオンが反射している",
"resolution": "1MP",
"size": "16:9"
}
{
"model": "flux-2-max",
"prompt": "朝霧に包まれた雪山と湖。豊かなディテール、映画のような雰囲気",
"resolution": "4MP",
"size": "3:2"
}
{
"model": "flux-2-pro",
"prompt": "青い猫",
"width": 1024,
"height": 1536
}
{
"model": "flux-2-pro",
"prompt": "画像 1 の人物を画像 2 のシーンに配置し、ライティングと色調を統一する",
"image_urls": [
"https://example.com/person.jpg",
"https://example.com/scene.jpg"
],
"resolution": "2MP",
"size": "16:9"
}
{
"model": "flux-2-flex",
"prompt": "ミニマルなスタイルのポスター。大きな見出しに SUMMER SALE、その下に小さく 50% OFF と表示",
"resolution": "3MP",
"size": "3:4",
"steps": 50,
"guidance": 6.5
}
Response
送信に成功すると、data は配列として返され、タスク ID は data[0].task_id にあります。
integer
レスポンスステータスコード。
タスク結果の照会
タスクは非同期で処理されます。送信レスポンスのtask_id を使って次のエンドポイントを呼び出し、ステータスが completed または failed になるまでポーリングしてください:
curl --request GET \
--url https://api.apimart.ai/v1/tasks/task_01KFG5BBFNK1YQDTJDZY0P0QT2 \
--header 'Authorization: Bearer <token>'
| ステータス | 説明 |
|---|---|
submitted / pending | タスクは受け付け済みまたはキュー内にあります。ポーリングを続けてください |
processing | 画像を生成中です。ポーリングを続けてください |
completed | タスクが完了しました。result.images[0].url[0] から画像 URL を取得できます |
failed | タスクが失敗しました。レスポンスのエラー情報を確認してください |
{
"code": 200,
"data": {
"id": "task_01KFG5BBFNK1YQDTJDZY0P0QT2",
"status": "completed",
"progress": 100,
"result": {
"images": [
{
"url": [
"https://upload.apimart.ai/f/image/xxxxxxxx-flux-2.jpeg"
],
"expires_at": 1785220083
}
]
}
}
}
result.images[].url は文字列の配列です。このシリーズでは 1 回のリクエストで生成される画像が 1 枚に固定されているため、url[0] を参照してください。画像 URL の有効期限は同じオブジェクト内の expires_at Unix タイムスタンプに従います。期限までに生成結果を保存してください。
無効なモデルパラメータとタスクの失敗
無効なモデルパラメータは非同期で通知されます。送信時は HTTP 200 とtask_id が返り、タスクを照会すると最終的に failed となり、具体的な理由が data.error.message に示されます。そのため、必ず最終ステータスまでポーリングしてください。
{
"code": 200,
"data": {
"status": "failed",
"error": {
"type": "task_failed",
"code": "task_failed",
"message": "`steps` must be between 1 and 50 (got 0)"
}
}
}
data.error.code は常に task_failed で、具体的な理由は message に記載されます。失敗したタスクは全額返金されます。
注意事項
- サイズ制限:出力画像は 4MP 以下で、幅と高さはいずれも 64 ピクセル以上でなければなりません。
- 合計ピクセル数の制限:出力画像とすべての参照画像の合計ピクセル数は 9MP 以下でなければなりません。
- 参照画像の要件:参照画像は最大 8 件まで指定でき、公開アクセス可能な画像 URL または Base64 エンコードされた入力画像を使用できます。
- 固定生成枚数:
nは1でなければならず、1 回のリクエストで生成される画像は 1 枚です。 - プロンプト強化:
prompt_upsamplingはデフォルトで無効です。 - Flex 専用パラメータ:
stepsとguidanceはflux-2-flexでのみ使用できます。 - 非同期タスク:送信に成功したら、
/v1/tasks/{task_id}をポーリングして最終結果を取得してください。