Theo dõi Job

GEThttps://sangtao.ai/api/v2/jobs/{jobId}

Tài liệu cho Theo dõi Job.

Tất cả endpoint tạo nội dung (ảnh, video, voiceover...) trả về jobId. Poll endpoint này để theo dõi tiến độ và lấy kết quả.

Luồng xử lý

Trạng tháiMô tảHành động
pendingJob đang chờ trong queueTiếp tục poll
processingĐang xử lý, có progress updatesHiện progress bar
completeHoàn thành! Kết quả trong resultUrl / resultImagesHiển thị kết quả
errorLỗi. Thông báo trong trường errorHiện lỗi + tùy chọn thử lại

Các trường response

jobIdstring

ID duy nhất của job

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".

progressnumber

0 đế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.

stepstring

Bước hiện tại, cho job nhiều bước như voiceover. 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.

resultDataobject

Chi tiết kết quả — resultUrl, imageUrls, width, height, durationMs.

thumbnailUrlstring

Ảnh thu nhỏ, cho job video.

errorstring

Lý do hỏng, viết cho người đọc. null nếu không hỏng.

failureKindstring

Mã lỗi để code xử lý. Đây là trường quyết định retry có ích hay không.

elapsedSecondsnumber

Thời gian chạy. Đo thử một ảnh đơn giản mất khoảng 13 giây.

creditCostnumber

Chi phí thực tế, quyết toán khi xong. Bằng 0 nếu gói tháng đã trả. Job hỏng thì không bị tính tiền, credit hoàn tự động.

paramsobject

Request đã lưu — tiện để đối chiếu xem thực sự đã gửi gì.

createdAtstring

Lúc nhận job; processingAt là lúc máy bắt đầu; completedAt là lúc xong.

retryCountnumber

Số lần hệ thống tự thử lại. Không phải thứ bạn điều khiển.

Ví dụ response

Đang xử lý:

json
{
  "success": true,
  "data": {
    "jobId": "abc-123",
    "status": "processing",
    "progress": 60,
    "step": "generating_images"
  }
}

Hoàn thành (video):

json
{
  "success": true,
  "data": {
    "jobId": "abc-123",
    "status": "complete",
    "resultUrl": "https://cdn.sangtao.ai/videos/result.mp4",
    "thumbnailUrl": "https://cdn.sangtao.ai/videos/thumb.jpg",
    "creditCost": 8
  }
}

Hoàn thành (ảnh):

json
{
  "success": true,
  "data": {
    "jobId": "img-456",
    "status": "complete",
    "resultImages": [
      "https://cdn.sangtao.ai/images/result1.jpg",
      "https://cdn.sangtao.ai/images/result2.jpg"
    ],
    "creditCost": 1
  }
}

Lỗi:

json
{
  "success": true,
  "data": {
    "jobId": "abc-123",
    "status": "error",
    "error": "Content moderation: prompt contains unsafe content"
  }
}

Tần suất poll

Chờ khoảng mười giây trước lần poll đầu — không job nào xong nhanh hơn thế, nên poll ngay lập tức lúc nào cũng nhận về "chưa xong".

Loại jobTần suất khuyên nghịThời gian thường mất
Tạo ảnh5 giây13-90 giây
Tạo video5 giây30s - 3 phút
Video AI Voice3 giây1-5 phút
Video Stock3 giây1-3 phút
Bài báo ra Video5 giây2-5 phút

Tên bước (Voiceover/Stock Video)

Note: Job nhiều bước trả về trường step khi đang xử lý. Tạo ảnh và video chỉ có pending/processing/complete.
BướcMô tả
generating_scriptAI đang viết/chia kịch bản thành các scene
generating_voiceĐang tạo giọng đọc từ văn bản
generating_imagesĐang tạo ảnh AI cho từng scene
searching_stockĐang tìm video stock cho từng scene
renderingĐang render video hoàn chỉnh

Ví dụ đầy đủ

for i in $(seq 60); do
  R=$(curl -sS https://sangtao.ai/api/v2/jobs/$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