Sáng tạo
Lấy kết quả ảnh
Một job tạo ảnh: trạng thái khi đang chạy, ảnh khi xong.
https://api.sangtao.ai/v2/images/generations/{jobId}Xác thực
X-Api-Keystring · headerbắt buộcAPI key của bạn, tạo ở trang API key trong tài khoản.
Tham số đường dẫn
jobIdstringbắt buộcjobId trong đường dẫn.
Sau POST /images/generations, poll endpoint này bằng jobId vừa nhận tới khi status là "complete" (ảnh nằm ở resultUrl) hoặc "error". Chờ khoảng mười giây trước lần poll đầu, sau đó mỗi 5 giây — một ảnh thường mất 30–90 giây.
Response giống hệt GET /jobs/{jobId}, có thêm model, resolvedModel và server. Đường này chỉ tìm job ảnh: job loại khác trả 404 JOB_NOT_FOUND.
Trạng thái
| Trạng thái | Ý nghĩa | Làm gì |
|---|---|---|
| WaitingForAgent | Đã nhận, đang chờ máy | Tiếp tục poll |
| processing | Đang tạo | Tiếp tục poll |
| complete | Xong — ảnh ở resultUrl / resultImages | Tải về (link sống 7 ngày) |
| error | Hỏng — lý do ở error, failureKind; credit được hoàn | Sửa rồi gửi lại, hoặc thử lại |
So sánh status không phân biệt hoa thường.
Response
jobIdstringID duy nhất của job
typestringLoại job: "AgentJob" cho GPT Image, "RenderVideo" cho render tuỳ chỉnh. Cùng giá trị bộ lọc type của GET /jobs nhận.
categorystringNhóm của loại job, ví dụ "agent".
typeDisplayNamestringTên loại job để hiển thị, ví dụ "Agent Job".
titlestringTiêu đề của job. null với job không có tiêu đề — job ảnh không có.
promptstringPrompt bạn đã gửi. Có trong danh sách (GET /jobs); ở đây là null — đọc params.prompt.
statusstring"WaitingForAgent" | "processing" | "complete" | "error". So sánh không phân biệt hoa thường — endpoint này trả chữ thường trong khi vài chỗ khác trả "Complete".
progressnumber0 đến 100. Đo thực tế: giữ nguyên 0 cho tới khi job xong, nên không dùng làm thanh tiến độ được.
stepstringBước hiện tại của job nhiều bước. Job ảnh luôn null.
resultUrlstringẢnh hoặc video đã xong, trước đó là null. Link sống bảy ngày — cần giữ lâu hơn thì tải về lưu phía bạn.
resultImagesstring[]Cùng kết quả đó dạng mảng.
resultDataobjectChi tiết kết quả — resultUrl, imageUrls (mảng), width, height và durationMs (số), và thumbnailUrl khi job có ảnh thu nhỏ.
thumbnailUrlstringẢnh thu nhỏ, cho job video.
hasDownloadableAssetsbooleantrue khi job có file để tải về.
queuePositionnumberKhi job đang chờ máy: số job chưa được máy nhận đang đứng trước nó (0 = kế tiếp). null khi đã chạy hoặc đã xong.
etaSecondsnumberKhi đang chờ: còn khoảng bao nhiêu giây thì máy bắt đầu chạy. null khi chưa đủ dữ liệu, hoặc khi đã chạy.
etaCompleteSecondsnumberKhi đang chờ hoặc đang chạy: còn khoảng bao nhiêu giây thì có kết quả. null khi chưa đủ dữ liệu, hoặc khi đã xong.
errorstringLý do hỏng, viết cho người đọc. null nếu không hỏng.
failureKindstringMã lỗi để code xử lý. Đây là trường quyết định retry có ích hay không.
elapsedSecondsnumberThời gian chạy. Đo thử một ảnh đơn giản mất khoảng 13 giây.
creditCostnumberĐã quyết toán thì là số thực trừ. Job hỏng được hoàn tự động nên là 0. Khi job còn chạy là số credit đang khoá. Bằng 0 nếu gói tháng đã trả.
paramsobjectNhững gì bạn đã gửi, để đối chiếu. Job ảnh chỉ gồm các trường bạn gửi, đúng kiểu (số, true/false, mảng); referenceImages là các link gốc bạn gửi.
createdAtstringLúc nhận job; processingAt là lúc máy bắt đầu; completedAt là lúc xong.
modelstringTên model đúng như bạn gửi, ví dụ "gpt-image-latest".
resolvedModelstringModel đã chạy job, ví dụ "gpt-image-2.6" — chốt lúc tạo job.
serverstringServer đã chạy job: "standard".
retryCountnumberSố lần hệ thống tự thử lại. Không phải thứ bạn điều khiển.
webhookobjectChỉ có khi request gửi webhookUrl: kết quả lần giao gần nhất. Không nằm trong data của webhook
Đang xử lý:
{
"success": true,
"data": {
"jobId": "acff47cbfacf4e27bbc08770c9ea246d",
"type": "AgentJob",
"status": "processing",
"progress": 0,
"step": null,
"queuePosition": null,
"etaSeconds": null,
"etaCompleteSeconds": 25
}
}Hoàn thành:
{
"success": true,
"data": {
"jobId": "acff47cbfacf4e27bbc08770c9ea246d",
"type": "AgentJob",
"category": "agent",
"typeDisplayName": "Agent Job",
"title": null,
"prompt": null,
"status": "complete",
"progress": 100.0,
"resultUrl": "https://cdn.sangtao.ai/agent-jobs/acff47cb.../fa3c91.png",
"resultImages": [
"https://cdn.sangtao.ai/agent-jobs/acff47cb.../fa3c91.png"
],
"resultData": {
"resultUrl": "https://cdn.sangtao.ai/agent-jobs/acff47cb.../fa3c91.png",
"imageUrls": [
"https://cdn.sangtao.ai/agent-jobs/acff47cb.../fa3c91.png"
],
"width": 1024,
"height": 1024,
"durationMs": 13100
},
"error": null,
"failureKind": null,
"hasDownloadableAssets": true,
"queuePosition": null,
"etaSeconds": null,
"etaCompleteSeconds": null,
"elapsedSeconds": 13.1,
"creditCost": 0.0,
"createdAt": "2026-09-19T09:42:59Z",
"processingAt": "2026-09-19T09:43:17Z",
"completedAt": "2026-09-19T09:43:30Z",
"model": "gpt-image-latest",
"resolvedModel": "gpt-image-2.6",
"server": "standard"
}
}Lỗi:
{
"success": true,
"data": {
"jobId": "acff47cbfacf4e27bbc08770c9ea246d",
"status": "error",
"step": null,
"failureKind": "PROMPT_UNCLEAR",
"error": "The prompt is not clear enough to create an image. Describe the image you want more specifically.",
"creditCost": 0
}
}Khi request có webhookUrl, có thêm:
{
"webhook": {
"url": "https://example.com/webhooks/sangtao",
"status": "succeeded",
"attemptCount": 1,
"lastHttpStatus": 200,
"lastError": null,
"deliveryId": "dlv_7Fz2kWq4N"
}
}Mã lỗi
| Mã | errorCode | Khi nào |
|---|---|---|
| 404 | JOB_NOT_FOUND | Không có job ảnh nào của bạn với jobId này (job loại khác ở đây cũng 404) |
Job hỏng không phải lỗi của lượt gọi này: vẫn trả 200 với status "error".
Ví dụ đầy đủ
for i in $(seq 60); do
R=$(curl -sS https://api.sangtao.ai/v2/images/generations/$JOB \
-H "X-Api-Key: YOUR_KEY")
S=$(echo "$R" | jq -r '.data.status' | tr 'A-Z' 'a-z')
[ "$S" = "complete" ] && {
echo "$R" | jq -r '.data.resultUrl'; break
}
[ "$S" = "error" ] && {
echo "$R" | jq -r '.data.error'; break
}
sleep 5
done/images/generations/{jobId}curl "https://api.sangtao.ai/v2/images/generations/acff47cbfacf4e27bbc08770c9ea246d" \
-H "X-Api-Key: YOUR_API_KEY"{
"success": true,
"data": {
"jobId": "acff47cbfacf4e27bbc08770c9ea246d",
"type": "AgentJob",
"category": "agent",
"typeDisplayName": "Agent Job",
"title": null,
"prompt": null,
"status": "complete",
"progress": 100,
"resultUrl": "https://cdn.sangtao.ai/agent-jobs/acff47cb.../fa3c91.png",
"resultImages": [
"https://cdn.sangtao.ai/agent-jobs/acff47cb.../fa3c91.png"
],
"resultData": {
"resultUrl": "https://cdn.sangtao.ai/agent-jobs/acff47cb.../fa3c91.png",
"imageUrls": [
"https://cdn.sangtao.ai/agent-jobs/acff47cb.../fa3c91.png"
],
"width": 1024,
"height": 1024,
"durationMs": 13100
},
"error": null,
"failureKind": null,
"hasDownloadableAssets": true,
"queuePosition": null,
"etaSeconds": null,
"etaCompleteSeconds": null,
"elapsedSeconds": 13.1,
"creditCost": 0,
"createdAt": "2026-09-19T09:42:59Z",
"processingAt": "2026-09-19T09:43:17Z",
"completedAt": "2026-09-19T09:43:30Z",
"model": "gpt-image-latest",
"resolvedModel": "gpt-image-2.6",
"server": "standard"
}
}/images/generations/{jobId}curl "https://api.sangtao.ai/v2/images/generations/acff47cbfacf4e27bbc08770c9ea246d" \
-H "X-Api-Key: YOUR_API_KEY"{
"success": true,
"data": {
"jobId": "acff47cbfacf4e27bbc08770c9ea246d",
"type": "AgentJob",
"category": "agent",
"typeDisplayName": "Agent Job",
"title": null,
"prompt": null,
"status": "complete",
"progress": 100,
"resultUrl": "https://cdn.sangtao.ai/agent-jobs/acff47cb.../fa3c91.png",
"resultImages": [
"https://cdn.sangtao.ai/agent-jobs/acff47cb.../fa3c91.png"
],
"resultData": {
"resultUrl": "https://cdn.sangtao.ai/agent-jobs/acff47cb.../fa3c91.png",
"imageUrls": [
"https://cdn.sangtao.ai/agent-jobs/acff47cb.../fa3c91.png"
],
"width": 1024,
"height": 1024,
"durationMs": 13100
},
"error": null,
"failureKind": null,
"hasDownloadableAssets": true,
"queuePosition": null,
"etaSeconds": null,
"etaCompleteSeconds": null,
"elapsedSeconds": 13.1,
"creditCost": 0,
"createdAt": "2026-09-19T09:42:59Z",
"processingAt": "2026-09-19T09:43:17Z",
"completedAt": "2026-09-19T09:43:30Z",
"model": "gpt-image-latest",
"resolvedModel": "gpt-image-2.6",
"server": "standard"
}
}