跳转到主要内容

请求体

model
string
默认值:"dall-e-3"
要使用的模型(例如:dall-e-3flux-promidjourney)。
prompt
string
必填
所需图像的文本描述。
n
integer
默认值:"1"
要生成的图像数量(1-4,取决于模型)。
size
string
默认值:"1024x1024"
图像尺寸。选项因模型而异:
  • DALL-E 3:1024x10241792x10241024x1792
  • 其他模型:512x5121024x1024 等。
quality
string
默认值:"standard"
图像质量(standardhd)。仅限 DALL-E 3。
response_format
string
默认值:"url"
响应格式:urlb64_json
style
string
默认值:"vivid"
DALL-E 3 的风格:vividnatural
user
string
终端用户的唯一标识符。

响应

内联响应

created
integer
创建时的 Unix 时间戳。
data
array
生成的图像数组。每个对象包含:
  • url (string):生成的图像 URL
  • b64_json (string):Base64 编码的图像(如果请求)
  • revised_prompt (string):使用的提示词(DALL-E 3)

异步任务响应

某些图像模型会立即返回异步任务,而某些模型可能会根据路由的提供商路径表现为内联或基于任务。当响应包含 status: "pending" 时,请将其视为异步任务响应:
在提供 poll_url 时,请准确使用它。将 task_id 视为后续轮询的异步任务标识。
created
integer
创建时的 Unix 时间戳。
task_id
string
用于轮询的唯一任务标识符。
status
string
初始状态:pending
poll_url
string
用于轮询结果的相对 URL(例如:/v1/tasks/{id})。
data
array
包含占位符数据的数组。在完成之前,url 将为空。
当您收到 status: "pending" 时,请使用 获取图像状态 接口来轮询结果。
curl -X POST "https://api.lemondata.cc/v1/images/generations" \
  -H "Authorization: Bearer sk-your-api-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "dall-e-3",
    "prompt": "A white cat sitting on a windowsill watching rain",
    "size": "1024x1024",
    "quality": "standard",
    "n": 1
  }'
{
  "created": 1706000000,
  "data": [
    {
      "url": "https://...",
      "revised_prompt": "A fluffy white cat with bright eyes sitting peacefully on a wooden windowsill, watching raindrops stream down the glass window..."
    }
  ]
}

可用模型

模型类型特性
dall-e-3通常为内联最佳质量,提示词增强
dall-e-2通常为内联更快速,更经济
flux-pro通常基于任务照片级真实感,高质量
flux-schnell通常为内联非常快速
midjourney通常基于任务艺术风格
ideogram-v3通常基于任务最佳文本渲染
stable-diffusion-3通常为内联开源,可定制
不要将模型硬编码为始终同步或始终异步。如果创建响应返回 status: "pending",请遵循 poll_url 并进行轮询直到完成。

处理基于任务的响应

对于图像模型,请始终检查响应是否包含 status: "pending"
import requests
import time

def generate_image(prompt, model="midjourney"):
    # Create image request
    response = requests.post(
        "https://api.lemondata.cc/v1/images/generations",
        headers={"Authorization": "Bearer sk-your-api-key"},
        json={"model": model, "prompt": prompt}
    )
    data = response.json()

    # Check if task-based
    if data.get("status") == "pending":
        task_id = data["task_id"]
        poll_url = data.get("poll_url")
        print(f"Image task started: {task_id}")

        # Poll for result
        while True:
            status_resp = requests.get(
                f"https://api.lemondata.cc{poll_url}" if poll_url else f"https://api.lemondata.cc/v1/tasks/{task_id}",
                headers={"Authorization": "Bearer sk-your-api-key"}
            )
            status_data = status_resp.json()

            if status_data["status"] == "completed":
                return status_data["data"][0]["url"]
            elif status_data["status"] == "failed":
                raise Exception(status_data.get("error", "Generation failed"))

            time.sleep(3)
    else:
        # Inline response
        return data["data"][0]["url"]

# Usage
url = generate_image("a beautiful sunset over mountains", model="midjourney")
print(f"Generated image: {url}")