图像
图像生成
通过模型、提示词、尺寸和迭代稳定地生成图像。
生产级图像始于清晰目标、主要主体和确定格式。当颜色、材质或风格比形容词更重要时,请使用参考图。
实操要点
按优先目标选择模型——速度、还原度、分辨率或控制能力——并保存每次结果的参数和版本。 nano-banana-*, gpt-image-2, z-image and doubao-seedream-* — Image generation.
每次尝试只改一件事。好的输出应保留为参考图,它是下一轮迭代最可靠的起点。
将 finished 和 failed 视为终态。使用 polling 或 webhook,在服务器保存原始错误,并向用户展示安全的信息。
提示词与 API 示例
A minimalist composition featuring a single, delicate red maple leaf positionedin the bottom-right of the frame. The background is a vast, empty off-whitecanvas, creating significant negative space for text. Soft, diffused lightingfrom the top left. Square image.

Source: Google AI for Developers, used under CC BY 4.0; format and dimensions adapted.
A high-resolution, studio-lit product photograph of a minimalist ceramic coffeemug in matte black, presented on a polished concrete surface. The lighting is athree-point softbox setup designed to create soft, diffused highlights andeliminate harsh shadows. The camera angle is a slightly elevated 45-degree shotto showcase its clean lines. Ultra-realistic, with sharp focus on the steamrising from the coffee. Square image.

Source: Google AI for Developers, used under CC BY 4.0; format and dimensions adapted.
A photo of a glossy magazine cover, the minimal blue cover has the large boldwords Nano Banana. The text is in a serif font and fills the view. No othertext. In front of the text there is a portrait of a person in a sleek andminimal dress. She is playfully holding the number 2, which is the focal point.Put the issue number and "Feb 2026" date in the corner along with a barcode. Themagazine is on a shelf against an orange plastered wall, within a designer store.

Source: Google AI for Developers, used under CC BY 4.0; format and dimensions adapted.
Mascot character for a developer tool: a friendly otter wearing a smallbackpack, vector illustration, thick outlines, limited palette of teal andsand, plain background
Abstract geometric background, overlapping translucent planes in indigo andamber, soft grain, no text
About these samples. Ready-made examples are copied to our own storage only when their source permits reuse. The exact prompt appears above each result, and the original source and license are linked below the media.
{"code": 200,"data": {"taskId": "019ca8b2-77d1-7a04-8c2e-15f9b0d4a6e1","status": "finished","files": [{"fileUrl": "https://storage.api-stock.com/generated/img-1a.png","fileType": "image"},{"fileUrl": "https://storage.api-stock.com/generated/img-1b.png","fileType": "image"},{"fileUrl": "https://storage.api-stock.com/generated/img-1c.png","fileType": "image"},{"fileUrl": "https://storage.api-stock.com/generated/img-1d.png","fileType": "image"}],"createdTime": "2026-02-28T12:41:02.000Z"}}
curl -X POST https://api.api-stock.com/api/v1/generation/create \-H "Authorization: Bearer sk-your-key" \-H "Content-Type: application/json" \-d '{"model": "nano-banana-2","input": {"prompt": "A brass orrery on a walnut desk, single window light, shallow depth of field","size": "3:2","resolution": "2K"}}'
{"code": 200,"data": {"taskId": "019ca8b2-77d1-7a04-8c2e-15f9b0d4a6e1","status": "not_started","createdAt": "2026-02-28T12:41:02.000Z"}}
{"model": "gpt-image-2","input": {"prompt": "A brass orrery on a walnut desk, single window light","size": "3:2","resolution": "2k","quality": "high"}}
{"model": "midjourney","input": {"action": "imagine","prompt": "A brass orrery on a walnut desk, single window light","size": "3:2","version": "7","stylize": 250,"chaos": 15,"speed": "relax"}}
const BASE = "https://api.api-stock.com/api/v1";const KEY = process.env.API_STOCK_KEY!;type TaskFile = { fileUrl: string; fileType: "image" | "video" | "music" };async function generateImage(prompt: string): Promise<string[]> {const create = await fetch(`${BASE}/generation/create`, {method: "POST",headers: {Authorization: `Bearer ${KEY}`,"Content-Type": "application/json",},body: JSON.stringify({model: "doubao-seedream-5-0-lite",input: { prompt, size: "1:1", resolution: "2K", outputFormat: "png" },}),});const created = await create.json();if (!create.ok) {throw new Error(`${created.error.code}: ${created.error.message}`);}const taskId: string = created.data.taskId;const deadline = Date.now() + 10 * 60_000;while (Date.now() < deadline) {await new Promise((r) => setTimeout(r, 3_000));const res = await fetch(`${BASE}/task/status/${taskId}`, {headers: { Authorization: `Bearer ${KEY}` },});const body = await res.json().catch(() => null);if (!res.ok) {if (res.status === 429) {const retryAfter = Number(res.headers.get("Retry-After") ?? 3);await new Promise((r) => setTimeout(r, retryAfter * 1000));continue;}const message = body?.error?.message ?? `${res.status} ${res.statusText}`;throw new Error(message);}const { data } = body;if (data.status === "finished") {return (data.files as TaskFile[]).map((f) => f.fileUrl);}if (data.status === "failed" || data.status === "expired") {throw new Error(data.errorMessage);}}throw new Error(`timed out waiting for ${taskId}`);}const urls = await generateImage("Isometric cutaway of a lighthouse");console.log(urls.length); // → 1
{"code": 400,"error": {"message": "Resolution \"3K\" is not supported by model doubao-seedream-4-5","type": "BadRequest","code": "invalid_input"}}
{"code": 200,"data": {"taskId": "019ca8b2-77d1-7a04-8c2e-15f9b0d4a6e1","status": "failed","createdTime": "2026-02-28T12:41:02.000Z","errorMessage": "This generation may violate our content policy. Please try a different prompt."}}
用你自己的密钥跑一遍
本指南中的所有模型都已上架 API Stock 目录——一个 API 密钥、一个预付余额,无需在各家供应商分别注册。