flux-kontext API 文生图接口文档
简介
Black Forest Labs推出商业级精度的图像生成,满足专业设计需求。
FLUX.1 Kontext模型,突破性的生成式流匹配模型(generative flow matching models),能够同时实现图像生成和编辑功能。支持文本+图像输入的上下文感知生成/编辑模型,控制更精准。
模型列表
flux-kontext-max – 功能最全面、处理能力最强的版本,可能拥有最大的上下文理解能力和生成效果。
flux-kontext-pro – 专为专业人士或高级用户设计的版本,在性能和功能上做了优化和平衡。
flux-kontext-dev – 主要面向开发者,用于测试、集成和早期开发探索的版本,可能在规模或速度上有所侧重。
API接口文档
请求方式
POST https://www.dmxapi.cn/v1/images/generations
请求头
Authorization: Bearer YOUR_API_KEY
Content-Type: application/json请求参数
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| prompt | string | 是 | 图像生成的文本描述提示词 |
| model | string | 是 | 使用的AI图像生成模型,可选值:flux-kontext-max、flux-kontext-pro、flux-kontext-dev |
| size | string | 否 | 图像尺寸比例,支持比例格式(如16x9、3x2)或具体尺寸,默认为1x1 |
| n | integer | 否 | 生成图像的数量,默认为1(注意:修改此值可能导致API报错) |
请求示例
bash
curl -X POST "https://www.dmxapi.cn/v1/images/generations" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"prompt": "充满科技感的店铺,招牌写着:DMXAPI",
"model": "flux-kontext-pro",
"size": "16x9",
"n": 1
}'响应格式
成功响应示例:
json
{
"data": [
{
"url": "https://example.com/generated-image.png",
"seed": 123456789
}
]
}或Base64格式响应:
json
{
"data": [
{
"b64_json": "iVBORw0KGgoAAAANSUhEUgAA...",
"seed": 123456789
}
]
}文生图代码示例 (Python)
python
import base64
import os
import time
import requests
# ============== API配置部分 ==============
# 配置DMXAPI的图像生成接口地址
API_URL = "https://www.dmxapi.cn/v1/images/generations" # DMXAPI图像生成的完整API地址
# 配置API密钥 - 建议在生产环境中使用环境变量管理,避免硬编码
API_KEY = "sk-*************************************" # 替换为你的DMXAPI令牌
# ============== 请求参数配置 ==============
params = {
"prompt": "充满科技感的店铺,招牌写着:DMXAPI", # 图像生成的文本描述提示词
"model": "flux-kontext-pro", # 使用的AI图像生成模型
"size": "16x9", # 图像尺寸比例,支持比例格式(如3x2)或具体尺寸
"n": 1, # 生成图像的数量(注意:修改此值可能导致API报错)
}
# ============== HTTP请求头配置 ==============
# 构建包含认证信息和内容类型的请求头
headers = {
"Authorization": f"Bearer {API_KEY}", # Bearer token认证方式
"Content-Type": "application/json" # 指定请求体为JSON格式
}
try:
# ============== 发送API请求 ==============
print("正在向DMXAPI发送图像生成请求...")
# 发送POST请求到图像生成API,设置30秒超时
response = requests.post(API_URL, headers=headers, json=params, timeout=30)
# ============== 处理API响应 ==============
if response.status_code == 200:
# 请求成功,解析JSON响应数据
data = response.json()
print("API请求成功,正在处理返回的图像数据...")
# ============== 处理URL格式的图像响应 ==============
if data.get("data") and data["data"][0].get("url"):
# 获取图像的下载URL
img_url = data["data"][0]["url"]
print(f"正在从URL下载图片: {img_url}")
# 从URL下载图像文件
img_response = requests.get(img_url, timeout=30)
if img_response.status_code == 200:
# 创建输出目录(如果不存在)
os.makedirs("output", exist_ok=True)
# 生成带时间戳的文件名,避免文件名冲突
filename = f"output/image_{time.strftime('%Y%m%d_%H%M%S')}.png"
# 将图像数据写入文件
with open(filename, "wb") as f:
f.write(img_response.content)
print(f"图片保存成功: {filename}")
# 显示生成图像时使用的种子值(用于复现相同结果)
if data["data"][0].get("seed"):
print(f"使用的种子值: {data['data'][0]['seed']}")
else:
print(f"图片下载失败,HTTP状态码: {img_response.status_code}")
# ============== 处理Base64格式的图像响应 ==============
elif data.get("data") and data["data"][0].get("b64_json"):
print("检测到Base64格式的图像数据,正在解码...")
# 解码Base64格式的图像数据
img_data = base64.b64decode(data["data"][0]["b64_json"])
# 创建输出目录(如果不存在)
os.makedirs("output", exist_ok=True)
# 生成带时间戳的文件名
filename = f"output/image_{time.strftime('%Y%m%d_%H%M%S')}.png"
# 将解码后的图像数据写入文件
with open(filename, "wb") as f:
f.write(img_data)
print(f"图片保存成功: {filename}")
# ============== 处理异常响应格式 ==============
else:
print("警告:响应数据格式不符合预期")
print("API返回的数据中既没有'url'字段也没有'b64_json'字段")
print(f"完整响应内容: {data}")
else:
# ============== 处理API请求失败 ==============
print(f"API请求失败")
print(f"HTTP状态码: {response.status_code}")
print(f"错误原因: {response.reason}")
print(f"详细错误信息: {response.text}")
# ============== 异常处理 ==============
except requests.exceptions.RequestException as e:
# 处理网络相关的异常(连接超时、DNS解析失败等)
print(f"网络请求发生错误: {str(e)}")
print("请检查网络连接或API地址是否正确")
except Exception as e:
# 处理其他未预期的异常
print(f"程序执行过程中发生其他错误: {str(e)}")
print("请检查代码逻辑或联系技术支持")