文生图 · Generate Image
根据一段文本提示词(prompt)直接生成图片,无需依附于某条对话消息。与 对话生图 不同,本接口是独立的「文生图」通道:你自由描述画面、选择引擎与画风。
本接口为异步接口:提交后立即返回一个 logId,图片不会在本次响应里直接返回,需用该 logId 调用 查询生成任务 轮询获取最终结果。
接口地址
POST https://xiangcao.ai/api/generate-image
提交成功后响应的
status通常为pending,表示任务已受理、正在生成。请保存返回的logId,随后轮询 查询生成任务 直到status变为completed(或failed)。
鉴权
需要在请求头携带 API Key:
Authorization: Bearer <YOUR_API_KEY>
缺少或无效的 Token 会返回 401。接口对每个用户有调用频率限制(rate limit)。
请求体(JSON)
只有 prompt 必填,其余字段均可选,不传时由后端按引擎默认值填充。提示词支持中文,后端会按引擎自动翻译/优化(除非引擎原生支持中文)。
常用字段
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
prompt | string | 是 | 画面描述提示词。为空或非字符串会返回 400。 |
engine | string | 否 | 引擎 ID,不传使用默认 xiangcao-nova。可选值见下方「引擎」。 |
negativePrompt | string | 否 | 负向提示词,描述不希望出现的内容。 |
aspectRatio | string | 否 | 宽高比,见下方枚举;不传默认 2:3(竖图)。 |
resolution | string | 否 | 分辨率档位:1M / 1.5M / 2M,不传默认 1M。仅对部分引擎生效。 |
nSamples | number | 否 | 一次生成的图片数量,1–4,不传默认 1。 |
seed | number | 否 | 随机种子,用于复现结果;不传则随机。 |
seedIndex | number | 否 | 在基础 seed 上叠加的偏移量,用于复现批量生成(nSamples > 1)中的第几张;不传按 0 处理。 |
stylePreset | string | 否 | 画风预设 ID,不传或 none 时不注入风格。 |
引擎
engine 为品牌化引擎 ID,不同引擎的画风与出图质量不同。默认 xiangcao-nova。当前仅支持以下两个引擎:
| 引擎 ID | 说明 |
|---|---|
xiangcao-nova | 新一代旗舰,二次元首选(默认)。 |
xiangcao-classic | 旧版本,复古画风。 |
宽高比与分辨率
aspectRatio可选值:1:1、9:16、16:9、2:3、3:2、4:5、5:4。resolution可选值:1M(标清)、1.5M(高清)、2M(超清);分辨率越高越贵,且仅对部分引擎生效,其余引擎忽略此字段沿用原生尺寸。
类型定义(TypeScript)
type AspectRatio = "1:1" | "9:16" | "16:9" | "2:3" | "3:2" | "4:5" | "5:4";
type Resolution = "1M" | "1.5M" | "2M";
interface GenerateImageRequest {
/** 画面描述提示词(必填) */
prompt: string;
/** 引擎 ID;不传使用默认 xiangcao-nova */
engine?: string;
/** 负向提示词 */
negativePrompt?: string;
/** 宽高比;不传默认 2:3 */
aspectRatio?: AspectRatio;
/** 分辨率档位;不传默认 1M(仅部分引擎生效) */
resolution?: Resolution;
/** 生成数量 1-4;不传默认 1 */
nSamples?: number;
/** 随机种子;不传则随机 */
seed?: number;
/** 基础 seed 的偏移量,复现批量生成中的第几张;不传按 0 处理 */
seedIndex?: number;
/** 画风预设 ID;不传或 "none" 不注入风格 */
stylePreset?: string;
}
响应(JSON)
| 字段 | 类型 | 说明 |
|---|---|---|
logId | string | 本次生成记录的 ID,用它调用 查询生成任务 轮询结果。 |
status | string | 任务状态:pending(已受理,生成中)/ completed(已出图)/ failed(失败)。提交后通常为 pending。 |
taskId | string | null | 底层生成任务 ID(可能为空)。 |
urls | string[] | 图片地址数组;异步提交时通常为空,最终结果请从 查询生成任务 获取。 |
interface GenerateImageResponse {
/** 生成记录 ID,用于查询任务状态 */
logId: string;
/** 任务状态 */
status: "pending" | "completed" | "failed";
/** 底层任务 ID,可能为空 */
taskId?: string | null;
/** 生成的图片地址 */
urls: string[];
}
拿到
logId后,请轮询 查询生成任务 获取图片;当其status变为completed时,返回的urls即为最终图片。
计费
- 按「引擎基价 × 张数倍率 ×(1 + 分辨率加成)」预估积分(钻石),并在生成前扣费。
- 张数越多单价越低(倍率 1 / 1.8 / 2.4 / 3 对应 1–4 张);分辨率
1.5M、2M会带来额外加成。 - 需要精确预估时,可先调用
calculate-generation-price接口预览本次扣费。
示例
请求:
curl -X POST "https://xiangcao.ai/api/generate-image" \
-H "Authorization: Bearer <YOUR_API_KEY>" \
-H "Content-Type: application/json" \
-d '{
"prompt": "夕阳下的少女,海边,长发飘动",
"engine": "xiangcao-nova",
"aspectRatio": "2:3",
"nSamples": 1
}'
响应(异步受理,urls 待轮询获取):
{
"logId": "log_abc123",
"status": "pending",
"taskId": "task_789",
"urls": []
}
随后用 logId 轮询 查询生成任务 获取最终图片。
错误处理
出错时返回相应 HTTP 状态码及 JSON:{ "error": "..." }。
| 状态码 | 说明 |
|---|---|
400 | prompt 缺失或非法(Missing or invalid 'prompt' in request body)。 |
401 | 未携带有效的 Bearer Token,或账号已被封禁。 |
402 | 积分(钻石)不足,无法完成本次生成。 |
500 | 服务端内部错误(Failed to generate image)。 |