1. Hướng Dẫn Sử Dụng API
COCO Studio Document
  • HƯỚNG DẪN SỬ DỤNG COCO STUDIO / COCO STUDIO WEB USER GUIDE
  • Hướng Dẫn Sử Dụng Nâng Cao Chất Lượng Video & Giải Pháp Seedance 2.5
  • Dreamina Seedance 2.0 series prompt guide
  • Dreamina Seedance 2.5 Prompt Guide
  • Hướng Dẫn Sử Dụng API
    • 📖 Coco Partner API – Hướng Dẫn Tích Hợp Hệ Thống Toàn Diện
    • 📖 Hướng Dẫn Tích Hợp Advance Creation API
    • Video — Draft mode (bản nháp)
    • AI Video Upscale API - Hướng Dẫn Sử Dụng
  • MCP
    • 🤖 Coco MCP – Hướng Dẫn Dùng Coco Studio qua AI Agent
  • Model
    • List model video
      GET
    • List model image
      GET
    • List model audio
      GET
  • AI Video Generation
    • Tạo, Sửa hoặc Kéo dài Video AI (Tất cả các chế độ)
      POST
    • Lấy danh sách Video của đối tác
      GET
    • Dự toán chi phí tạo / sửa / kéo dài video
      POST
    • Tra cứu chi tiết & kết quả video
      GET
    • Xóa tác vụ video lỗi
      DELETE
    • Hoàn thiện bản nháp Draft thành bản 1080p chính thức
      POST
  • Advance Creation
    • Đăng ký Asset / Người thật (KYC)
      POST
    • Dự toán chi phí đăng ký Advance Creation
      POST
    • Danh sách Asset Advance Creation
      GET
    • Chi tiết Asset Advance Creation
      GET
    • Xóa Asset Advance Creation
      DELETE
  • AI Video Upscale
    • Tạo tác vụ Upscale Video
      POST
    • Dự toán chi phí Upscale Video
      POST
    • Lấy cấu hình hỗ trợ Upscale
      GET
    • Chi tiết & kết quả Video Upscale
      GET
  • Balance & Account
    • Kiểm tra số dư Credit của đối tác
  • Image
    • Create image
    • Get image detail
    • List Image
    • Delete image fail
  • Audio
    • Create Audio
    • Get audio detail
    • Delete audio fail
    • List audio
  • Upload & Assets
    • Khởi tạo Upload file (Presigned POST)
    • Xác nhận hoàn tất Upload và lấy assetId
    • Lấy giới hạn tải lên của thư viện
  • Schemas
    • ListModelVideoResponse
    • ListModelImageResponse
    • ListModelAudioResponse
    • CreateVideo
    • CreateVideoResponse
    • VideoDetailResponse
    • CreateImage
    • DeleteAudioFailResponse
    • DeleteImageFailResponse
    • CreateImageResponse
    • ListAudioResponse
    • CreateDraftVideoRequest
    • ErrorItem
    • FileItemReference
    • ImageDetailResponse
    • CreateVideoEditingRequest
    • CreateVideoWithMultiReferenceRequest
    • CreateAudio
    • VideoInitResponse
    • CreateVideoExtensionRequest
    • RegisterAdvanceCreationRequest
    • EstimateCostResponse
    • AudioDetailResponse
    • VideoUpscaleListResponse
    • AdvanceCreationItemResponse
    • EstimateUpscaleResponse
    • CreateAdvanceCreation
    • VideoFileReference
    • VideoUpscaleCapabilitiesResponse
    • CreateAdvanceCreationResponse
    • ErrorResponse
    • EstimateResponse
    • EstimateVideoUpscaleRequest
    • CreateVideoRequest
    • ListStorageAdvanceCreationResponse
    • FinalizeVideoRequest
    • EstimateVideoUpscaleResponse
    • DeleteAdvanceCreationResponse
    • VideoTaskCreatedResponse
    • WebhookVideoUpscalePayload
    • ListVideoResponse
    • DeleteVideoFailResponse
    • AdvanceCreationRegisterRequest
    • AdvanceCreationDetailResponse
    • ListImageResponse
    • CreateVideoUpscaleRequest
    • CreateVideoUpscaleResponse
    • VideoUpscaleDetailResponse
    • UploadInitRequest
    • UploadInitResponse
    • UploadCompleteResponse
    • BalanceResponse
  1. Hướng Dẫn Sử Dụng API

📖 Coco Partner API – Hướng Dẫn Tích Hợp Hệ Thống Toàn Diện

1. Giới thiệu tổng quan (Overview)#

Coco Partner API là cổng kết nối RESTful API hiệu năng cao dành cho các đối tác / hệ thống bên thứ ba, cung cấp trọn bộ các dịch vụ Generative AI thế hệ mới:
🎬 AI Video Generation: Text-to-Video, Image-to-Video, Multimodal Reference Video, First & Last Frame Transition, Video Draft Mode.
🚀 AI Video Upscale: Nâng chất lượng & độ phân giải (lên tới 4K/8K), xuất ProRes 422 HQ, FFV1 Lossless 16-bit, chuỗi ảnh OpenEXR 16-bit.
🖼️ AI Image Generation: Text-to-Image, Image-to-Image (Seedream 5.0 Lite/Pro của BytePlus, GPT Image của OpenAI).
🎙️ AI Audio Generation: Text-to-Speech (TTS), Voice Cloning / Reference Audio (Seed Audio).
🗄️ Model Management: Lấy danh sách model khả dụng theo thời gian thực.
💳 Balance & Credits: Kiểm tra số dư tài khoản (Credits) khả dụng theo thời gian thực.

2. Xác thực API (Authentication)#

Tất cả các API yêu cầu xác thực bằng API Key thông qua Header của HTTP Request.

Header quy định:#

Header KeyKiểu dữ liệuBắt buộcMô tả
apiKey (hoặc apikey)stringCóKhóa API Key bí mật được cấp riêng cho đối tác
Content-TypestringCóapplication/json

3. Luồng xử lý Bất đồng bộ (Asynchronous Queue Workflow)#

Vì các tác vụ AI cần thời gian tính toán và render, toàn bộ các API tạo (POST) đều hoạt động theo mô hình hàng đợi bất đồng bộ:
[Client] ──(1) Gửi Request POST /video (hoặc /image, /audio) kèm webHookUrl──► [Partner API]
[Client] ◄─(2) Trả về ngay publicId & status: 1 (PENDING)────────────────────── [Partner API]
                                                                                      │
                                                                           (3) Đẩy vào Queue xử lý
                                                                                      │
[Client] ◄════(4) Bắn Webhook POST kết quả khi AI render xong═════════════════════════╝
   hoặc
[Client] ──(5) Chủ động Polling GET /<service>/:publicId─────────────────────► [Partner API]

Các trạng thái tác vụ (status):#

0 / 1 (PENDING): Đang xếp hàng đợi xử lý.
1 / 2 (PROGRESSING / PROCESSING): Đang được AI worker xử lý render.
2 / 3 (SUCCESS): Hoàn thành thành công, đã có URL file media.
3 / 4 (FAIL): Thất bại (hệ thống tự động hoàn lại số dư tạm giữ/escrow).

4. AI Video Generation API#

A. Ma trận so sánh giữa các Model Video#

Tính năng / Thông sốDreamina-Seedance-2.5 (Mới nhất)Dreamina-Seedance-2.0 / Fast (Tiêu chuẩn)
Partner Model IDep-20260809114245-bzj48 (hoặc ep-20260824222535-8ddl9)dreamina-seedance-2-0-fast-260128
Loại Input hỗ trợText, Image, Video, AudioText, Image, Video, Audio
Số lượng Ảnh tham chiếu (files)Tối đa 30 ảnh (≤ 30MB/ảnh)Tối đa 9 ảnh (≤ 30MB/ảnh)
Số lượng Video tham chiếu (files)Tối đa 10 video (2s – 30s/clip, ≤ 200MB)Tối đa 3 video (2s – 15s/clip, ≤ 200MB)
Số lượng Audio tham chiếu (files)Tối đa 10 audio (2s – 30s/clip, ≤ 15MB)Tối đa 3 audio (2s – 15s/clip, ≤ 15MB)
Chế độ tạo video (mode)• 1: Reference generation
• 2: First & Last frame
• 1: Reference generation
• 2: First & Last frame
Độ dài xuất (seconds)4 đến 30 giây4 đến 15 giây
Chế độ Smart Length (duration: 2)✅ Hỗ trợ (AI tự đo độ dài tối ưu)❌ Không hỗ trợ
Độ phân giải (resolution)1 (480p), 2 (720p), 3 (1080p), 4 (4k)1 (480p), 2 (720p)
Tỉ lệ khung hình (ratio)1 (21:9), 2 (16:9), 3 (4:3), 4 (1:1), 5 (3:4), 6 (9:16), 7 (adaptive)1 (21:9), 2 (16:9), 3 (4:3), 4 (1:1), 5 (3:4), 6 (9:16), 7 (adaptive)
Định dạng xuất (outputFormat)"mp4", "mov""mp4"
Tự sinh âm thanh AI (outputSound)✅ Có hỗ trợ (true/false)✅ Có hỗ trợ (true/false)

B. Bảng mã định nghĩa Enums Video#

mode:
1 (Reference Generation - Tạo video từ ảnh, video, audio tham chiếu).
2 (First & Last Frame - Chuyển cảnh giữa 2 khung hình, yêu cầu truyền ảnh có role first_frame và last_frame).
3 (Video Editing - Chỉnh sửa, thêm/xoá/thay thế chi tiết trong clip có sẵn theo mốc thời gian).
4 (Video Extension - Kéo dài, tiếp nối câu chuyện từ clip có sẵn).
resolution: 1 (480p), 2 (720p), 3 (1080p), 4 (4k).
ratio: 1 (21:9), 2 (16:9), 3 (4:3), 4 (1:1), 5 (3:4), 6 (9:16), 7 (adaptive - bắt buộc khi sửa/kéo dài video).
duration: 1 (Seconds - chỉ định số giây cụ thể qua seconds), 2 (SmartLength - tự động độ dài tối ưu, bắt buộc khi sửa video).

C. Request Body Mẫu: Tạo Video (POST /video)#

Endpoint POST /video là cổng khởi tạo duy nhất phục vụ cho tất cả các loại hình sinh video của hệ thống:

1. Tạo Video từ Văn Bản thuần túy (Text-to-Video - Không cần ảnh/video)#

Khi tạo video từ văn bản, bạn chỉ cần mô tả chi tiết cảnh quay trong prompt và không cần truyền mảng files (hoặc để files: []):
{
  "partnerModelId": "ep-20260809114245-bzj48",
  "name": "Text-to-Video: Drone Over Canyon",
  "prompt": "Cinematic aerial drone shot soaring through a red rock canyon at golden hour, breathtaking landscape, photorealistic 4k, smooth cinematic camera motion",
  "mode": 1,
  "resolution": 3,
  "ratio": 2,
  "duration": 1,
  "seconds": 5,
  "outputFormat": "mp4",
  "outputSound": true,
  "watermark": false,
  "webHookUrl": "https://your-webhook-domain.com/webhook/video"
}

2. Tạo Video từ 1 Ảnh tĩnh (Image-to-Video / I2V)#

Truyền assetId của bức ảnh vào files với role: "reference_image". AI sẽ tạo chuyển động tự nhiên cho nhân vật và bối cảnh dựa theo câu lệnh prompt:
{
  "partnerModelId": "ep-20260809114245-bzj48",
  "name": "Image-to-Video: Animate Portrait",
  "prompt": "The woman gently turns her head toward the camera, smiles softly as the sea breeze blows her hair, cinematic depth of field, warm sunset lighting",
  "mode": 1,
  "resolution": 3,
  "ratio": 2,
  "duration": 1,
  "seconds": 5,
  "outputFormat": "mp4",
  "outputSound": true,
  "webHookUrl": "https://your-webhook-domain.com/webhook/video",
  "files": [
    {
      "assetId": "4a71b290-7c23-42be-a37c-f179b00982df",
      "role": "reference_image"
    }
  ]
}

3. Chuyển cảnh 2 khung hình (First & Last Frame Transition - mode: 2)#

Tạo video chuyển tiếp mượt mà từ khung hình đầu sang khung hình cuối. Yêu cầu truyền đúng 2 ảnh vào files với role: "first_frame" và role: "last_frame":
{
  "partnerModelId": "ep-20260809114245-bzj48",
  "name": "First & Last Frame: Day to Night",
  "prompt": "Smooth time-lapse transition from the daytime city view in @image1 to the glittering night skyline in @image2, vehicles moving with light trails",
  "mode": 2,
  "resolution": 3,
  "ratio": 2,
  "duration": 1,
  "seconds": 5,
  "outputFormat": "mp4",
  "outputSound": true,
  "webHookUrl": "https://your-webhook-domain.com/webhook/video",
  "files": [
    {
      "assetId": "4a71b290-7c23-42be-a37c-f179b00982df",
      "role": "first_frame"
    },
    {
      "assetId": "8b192834-31da-45e2-9b2f-110293847561",
      "role": "last_frame"
    }
  ]
}

4. Tạo Video nhanh giá rẻ với Model Seedance 2.0 Fast#

Dùng partnerModelId: "dreamina-seedance-2-0-fast-260128" cho các tác vụ cần thời gian phản hồi nhanh và tối ưu chi phí (hỗ trợ độ dài từ 4s đến 15s):
{
  "partnerModelId": "dreamina-seedance-2-0-fast-260128",
  "name": "Fast Coffee Steam Scene",
  "prompt": "Close-up of hot steaming coffee being poured into a white ceramic cup on a wooden table, cozy morning atmosphere",
  "mode": 1,
  "resolution": 2,
  "ratio": 2,
  "duration": 1,
  "seconds": 4,
  "outputFormat": "mp4",
  "webHookUrl": "https://your-webhook-domain.com/webhook/video"
}

5. Tạo Video tham chiếu nhiều clip (Multimodal Reference - Mode 1)#

Kết hợp nhiều video, ảnh và audio tham chiếu cùng lúc (Seedance 2.5 hỗ trợ tối đa 10 video, 30 ảnh, 10 audio):
{
  "partnerModelId": "ep-20260809114245-bzj48",
  "name": "Multi-Video Kungfu Scene",
  "prompt": "Apply sword combat motion from @video1, orbit camera trajectory from @video2, character face from @image1",
  "mode": 1,
  "resolution": 3,
  "ratio": 2,
  "duration": 1,
  "seconds": 5,
  "outputFormat": "mp4",
  "webHookUrl": "https://your-webhook-domain.com/webhook/video",
  "files": [
    {
      "assetId": "e3057cae-9907-4e92-ba2c-2936c0500a4d",
      "role": "reference_video"
    },
    {
      "assetId": "8b192834-31da-45e2-9b2f-110293847561",
      "role": "reference_video"
    },
    {
      "assetId": "4a71b290-7c23-42be-a37c-f179b00982df",
      "role": "reference_image"
    }
  ]
}
⚠️ Lưu ý quan trọng về tệp tham chiếu (files):
API yêu cầu truyền assetId (không nhận trực tiếp url ngoài để đảm bảo an toàn bảo mật và tránh timeout).
Cách lấy assetId:
Với tệp tự tải lên: Gọi POST /upload → tải tệp lên presigned URL → gọi POST /upload/:uploadId/complete để nhận assetId.
Với clip/ảnh do Coco sinh: Lấy trực tiếp trường storagePublicId từ GET /video/:publicId hoặc GET /image/:publicId.
Quy ước role:
Ảnh: "reference_image" (hoặc "first_frame", "last_frame" trong Mode 2).
Video: "reference_video" (hoặc để trống, hệ thống tự động gán theo định dạng video).
Audio: "reference_audio".

D. Draft mode (bản nháp giá rẻ, chỉ Dreamina Seedance 2.5)#

Tạo bản nháp 480p để duyệt nội dung với chi phí thấp, sau đó tạo bản chính thức 1080p dùng lại toàn bộ nội dung của bản nháp (prompt, file tham chiếu, thời lượng, tỉ lệ, seed, âm thanh).
Bước 1: Tạo bản nháp (POST /video), thêm tham số:
Tham sốKiểu dữ liệuBắt buộcKhoảng giá trị / Mô tả
draftbooleanKhôngtrue để tạo bản nháp. Chỉ dùng với model Dreamina Seedance 2.5 và resolution = 480p (1)
Bước 2: Hoàn thiện bản chính thức (POST /video/:publicId/finalize) (publicId của bản nháp), body tuỳ chọn:
Tham sốKiểu dữ liệuBắt buộcKhoảng giá trị / Mô tả
webHookUrlstringKhôngBỏ trống thì dùng webHookUrl của bản nháp
Response trả về video mới (bản chính thức) với publicId riêng, kèm "draftOf": "<publicId bản nháp>".

E. Hướng Dẫn Sửa & Kéo Dài Video (Video Editing & Video Extension)#

Tính năng Video Editing và Video Extension chỉ hỗ trợ trên model Dreamina Seedance 2.5 (ep-20260809114245-bzj48 hoặc ep-20260824222535-8ddl9), cho phép bạn chỉnh sửa nội dung trong clip đã có hoặc kéo dài nối tiếp câu chuyện với sự nhất quán tuyệt đối về nhân vật, bối cảnh và chuyển động.

1. Quy định về Tham số & Ràng buộc Kỹ thuật#

Thông số / Cấu hìnhSửa Video (Video Editing)Kéo Dài Video (Video Extension)
mode3 (hoặc 1 kèm prompt triggers)4 (hoặc 1 kèm prompt triggers)
Tỉ lệ khung hình (ratio)Bắt buộc 7 (adaptive) (khoá theo video gốc)Bắt buộc 7 (adaptive) (khoá theo video gốc)
Thời lượng (duration)Bắt buộc 2 (SmartLength)
(Hệ thống tự khóa độ dài xuất xấp xỉ đúng độ dài clip gốc, seconds = -1)
• 1 (Seconds): Tự chọn độ dài qua seconds
• 2 (SmartLength): AI tự tính độ dài nối tiếp tối ưu
Độ dài video nguồnTừ 4 đến 30 giây (khuyến nghị 4s – 20s để ổn định nhất)Từ 2 đến 30 giây
Số lượng video nguồn (files)Đúng 1 video cần chỉnh sửaTối thiểu 1 video cần kéo dài
Định dạng xuất (outputFormat)Khuyến nghị "mov" (hoặc "mp4")Khuyến nghị "mov" (hoặc "mp4")
Ảnh/Audio bổ trợ (files)Có thể kèm 1 – 5 ảnh (role: "reference_image") hoặc audio để thay thế nhân vật/giọng nóiCó thể kèm ảnh/audio để bổ sung nhân vật/bối cảnh mới
💡 Cách tái sử dụng clip do Coco sinh ra:
Sau khi tạo một video thành công qua POST /video, response của GET /video/:publicId trả về trường storagePublicId. Bạn chỉ cần dùng giá trị này làm assetId trong mảng files của request tiếp theo mà không cần tải lại file.
🎬 Quy chế hoạt động & Tính phí của Video Extension (mode: 4):
Ý nghĩa của seconds: seconds là độ dài của phần video nối tiếp thêm (độ dài mới sinh ra), KHÔNG phải tổng thời lượng video. (Ví dụ: clip gốc 10s, bạn truyền seconds: 4 nghĩa là AI sẽ sinh thêm 4 giây nối tiếp).
Video kết quả trả về: AI chỉ render và trả về đúng phân đoạn nối tiếp (4s), KHÔNG gộp sẵn clip gốc vào. Phía client/đối tác sẽ tự ghép (stitch) clip gốc và clip nối dài nếu cần xuất video liền mạch.
Cơ chế tính phí (Tại sao kéo dài 4s giá 180 CC trong khi tạo mới 4s chỉ 85 CC?): Mô hình AI Seedance 2.5 tính phí dựa trên Tổng thời lượng tính toán = [Độ dài clip nguồn] + [Độ dài đoạn kéo dài]. Với clip gốc 10s và kéo dài thêm 4s, hệ thống phải load và xử lý toàn bộ 14s ngữ cảnh (10s + 4s = 14s) để đảm bảo sự liền mạch tuyệt đối về chuyển động và ánh sáng, do đó chi phí (180 CC) cao hơn so với việc tạo mới một clip 4s độc lập từ đầu (85 CC).

2. Kỹ thuật Viết Prompt Kích Hoạt (Prompt Triggers)#

Quy tắc định danh: Sử dụng @video1, @video2, @image1, @audio1 tương ứng với thứ tự các tệp truyền trong mảng files.
Cú pháp mốc thời gian (Timestamps): Dùng định dạng 0s-3s, [2s-5s], at 4-second mark, từ giây 2 đến 4... để chỉ định chính xác phân đoạn cần can thiệp.
A. Từ khóa kích hoạt Sửa Video (Video Editing):#
Prompt bắt buộc chứa ít nhất một từ khóa hành động:
Xóa vật thể/nhân vật: remove, delete, erase
Ví dụ: "In @video1, remove the red car parked on the roadside from 2s to 5s, restoring the empty street."
Thêm chi tiết mới: add, insert
Ví dụ: "Add gentle golden sunlight and falling autumn leaves to @video1 from 0s to 6s."
Thay thế/Sửa đổi: modify, replace, change to, switch
Ví dụ: "Editing task: Replace the man walking in @video1 with the anime character from @image1, matching all footsteps and movements."
B. Từ khóa kích hoạt Kéo Dài Video (Video Extension):#
Prompt bắt buộc chứa từ khóa tiếp nối câu chuyện:
Kéo dài về sau: extend backward, continue, continue from, extend the story
Ví dụ: "Extend @video1 backward: the character in @video1 reaches the edge of the cliff, looks down at the glowing ocean, and smiles."
Kéo dài về trước: extend forward
Ví dụ: "Extend @video1 forward: show what happened 5 seconds before the car explosion."

3. Request Body Mẫu#

Ví dụ 1: Sửa clip có sẵn (Xoá vật thể ở giây thứ 2, giữ nguyên độ dài gốc)#
{
  "partnerModelId": "ep-20260809114245-bzj48",
  "name": "Edit - Remove Object at 2s",
  "prompt": "Video editing: In @video1, remove the trash bin at the 2-second mark and replace it with a clean flower pot, leaving the rest of the clip completely unchanged.",
  "mode": 3,
  "resolution": 3,
  "ratio": 7,
  "duration": 2,
  "outputFormat": "mov",
  "outputSound": true,
  "webHookUrl": "https://your-webhook-domain.com/webhook/video",
  "files": [
    {
      "assetId": "e3057cae-9907-4e92-ba2c-2936c0500a4d",
      "role": "reference_video"
    }
  ]
}
Ví dụ 2: Sửa clip thay thế nhân vật chính bằng ảnh tham chiếu (@video1 + @image1)#
{
  "partnerModelId": "ep-20260809114245-bzj48",
  "name": "Edit - Replace Subject with Image",
  "prompt": "Editing task: Replace the protagonist in @video1 with the female character from @image1. Maintain exact lighting, camera movement, and walking sequence.",
  "mode": 3,
  "resolution": 3,
  "ratio": 7,
  "duration": 2,
  "outputFormat": "mov",
  "outputSound": true,
  "webHookUrl": "https://your-webhook-domain.com/webhook/video",
  "files": [
    {
      "assetId": "e3057cae-9907-4e92-ba2c-2936c0500a4d",
      "role": "reference_video"
    },
    {
      "assetId": "4a71b290-7c23-42be-a37c-f179b00982df",
      "role": "reference_image"
    }
  ]
}
Ví dụ 3: Kéo dài clip thêm 6 giây (Video Extension)#
{
  "partnerModelId": "ep-20260809114245-bzj48",
  "name": "Extend - Continue Story",
  "prompt": "Extend @video1 backward: The astronaut continues walking on the red sand of Mars, turns back toward the base station, and waves at the rover.",
  "mode": 4,
  "resolution": 3,
  "ratio": 7,
  "duration": 1,
  "seconds": 6,
  "outputFormat": "mov",
  "outputSound": true,
  "webHookUrl": "https://your-webhook-domain.com/webhook/video",
  "files": [
    {
      "assetId": "e3057cae-9907-4e92-ba2c-2936c0500a4d",
      "role": "reference_video"
    }
  ]
}

5. AI Image Generation API#

Hệ thống hỗ trợ cả 2 nhà cung cấp hàng đầu: BytePlus (Seedream 5.0 Lite/Pro) và OpenAI (GPT Image).

A. Ma trận so sánh giữa các Model Image#

Thông số / Cấu hìnhBytePlus (Seedream 5.0 Lite/Pro)OpenAI (GPT Image)
Partner Model IDep-20260824222944-wmrzt (Lite)
ep-20260824223025-2c9qd (Pro)
gpt-image-2
Độ phân giải (resolution)"1K", "1.5K", "2K", "3K", "4K""1024x1024", "1024x1536", "1536x1024", "2560x1440", "3840x2160"
Tỉ lệ khung hình (ratio)"1:1", "4:3", "3:4", "16:9", "9:16", "21:9"(Tự động theo kích thước resolution)
Chất lượng (quality)N/A"low", "medium", "high"
Độ trong suốt nền (background)N/A"auto", "transparent", "opaque"
Kiểm duyệt an toàn (moderation)N/A"auto", "low"
Định dạng file xuất (outputFormat)"png", "jpeg""png", "jpeg", "webp" (Lưu ý: Transparent background yêu cầu PNG/WebP)
Số lượng tạo cùng lúc (numOfGenerate)1 đến 14 ảnh1 đến 14 ảnh
Ảnh tham chiếu (files)Tối đa 14 ảnh (≤ 30MB/ảnh)Tối đa 14 ảnh

B. Request Body mẫu: Tạo Ảnh (POST /image)#

1. Dùng Model BytePlus (Seedream 5.0 Pro)#

{
  "partnerModelId": "ep-20260824223025-2c9qd",
  "name": "Cyberpunk Street",
  "prompt": "Futuristic cyberpunk street at night, neon lights, rainy reflection, ultra-detailed, 8k",
  "resolution": "2K",
  "ratio": "16:9",
  "outputFormat": "png",
  "numOfGenerate": 2,
  "webHookUrl": "https://your-webhook-domain.com/webhook/image"
}

2. Dùng Model OpenAI (GPT Image - Nền trong suốt Transparent)#

{
  "partnerModelId": "gpt-image-2",
  "name": "Logo Icon",
  "prompt": "A modern minimalist 3D coffee cup logo icon, vibrant colors",
  "resolution": "1024x1024",
  "quality": "high",
  "background": "transparent",
  "outputFormat": "png",
  "numOfGenerate": 1,
  "webHookUrl": "https://your-webhook-domain.com/webhook/image"
}

6. AI Audio Generation API (Text-to-Speech & Voice Cloning)#

Hệ thống hỗ trợ model giọng nói Seed Audio với khả năng tùy biến chất giọng, tốc độ nói, cao độ và clone giọng từ file âm thanh mẫu.

A. Bảng thông số cấu hình Audio#

Tham sốKiểu dữ liệuBắt buộcKhoảng giá trị / Mô tả
partnerModelIdstringCóID model Audio (lấy từ GET /model/audio)
promptstringCóNội dung văn bản cần chuyển thành giọng nói (tối đa 3000 ký tự)
formatstringCóĐịnh dạng âm thanh: "mp3", "wav", "pcm", "ogg"
sampleRatenumberCóTần số mẫu: 16000, 24000, 44100, 48000 (Hz)
tonenumberKhôngCao độ giọng nói (pitch rate): từ -12 đến 12 (mặc định 0)
speechRatenumberKhôngTốc độ nói: từ -50 đến 100 (mặc định 0)
volumenumberKhôngÂm lượng (loudness): từ -50 đến 100 (mặc định 0)
numOfGeneratenumberCóSố lượng audio tạo cùng lúc (từ 1 đến 8)
filesarrayKhôngMảng file audio mẫu để Clone giọng (tối đa 3 clips, ≤ 10MB/clip)
imageFileobjectKhôngẢnh tham chiếu cảm xúc nhân vật (≤ 10MB)
webHookUrlstringCóURL nhận kết quả Webhook
⚠️ Lưu ý: files (Audio Reference) và imageFile (Image Reference) là loại trừ lẫn nhau (chỉ chọn truyền 1 trong 2).

B. Request Body mẫu: Tạo Audio (POST /audio)#

{
  "partnerModelId": "seed-audio-1.0",
  "name": "Podcast Intro Voice",
  "prompt": "Welcome to our AI technology podcast. Today we will explore the future of Generative AI!",
  "format": "mp3",
  "sampleRate": 44100,
  "tone": 0,
  "speechRate": 10,
  "volume": 0,
  "numOfGenerate": 1,
  "webHookUrl": "https://your-webhook-domain.com/webhook/audio"
}

7. AI Video Upscale API#

Nâng chất lượng và độ phân giải của video: tăng độ nét, giảm nhiễu, và có thể xuất sang định dạng hậu kỳ (ProRes, FFV1, EXR). Tác vụ chạy bất đồng bộ; kết quả trả qua Webhook (mục 10) hoặc tra cứu (mục 11).
Nguồn video là một trong hai:
videoPublicId: một video bạn đã tạo bằng POST /video và đã hoàn thành.
videoUrl: đường dẫn https tới file MP4/MOV, tối đa 10 GB. Hệ thống tự tải file về trước khi xử lý.

A. Ma trận Định dạng đầu ra (outputFormat)#

outputFormatFile nhận đượctoolVersionNhận bitrateGiới hạn video đầu vào
auto (mặc định).mp4standard / professionalCó—
h264_8.mp4 – H.264 8-bitprofessionalCó—
h265_8.mp4 – H.265 8-bitprofessionalCó—
h265_10.mp4 – H.265 10-bitprofessionalCó—
prores_10.mov – ProRes 422 HQ 10-bitprofessionalKhông—
ffv1_16.mov – FFV1 16-bit (lossless)professionalKhôngTối đa 40 giây
exr_16.zip – chuỗi ảnh EXR 16-bit, không có âm thanhprofessionalKhôngTối đa 40 giây
⚠️ ProRes, FFV1, EXR và H.265 10/12-bit thường không phát được trên trình duyệt: hãy tải file về và mở bằng phần mềm dựng phim. File có thể rất lớn (FFV1 ~77 MB mỗi giây ở 1080p, EXR ~1,6 GB cho 6 giây ở 1080p).
⚠️ Professional 16-bit (ffv1_16, exr_16) có thể mất hơn 20 phút kể cả với video vài giây. Nên nhận kết quả qua Webhook.
Danh sách định dạng đang được bật cho tài khoản: GET /video-upscale/capabilities.

B. Bảng tham số: Tạo tác vụ Upscale (POST /video-upscale)#

Tham sốKiểu dữ liệuBắt buộcKhoảng giá trị / Mô tả
videoPublicIdstringCó*publicId của video (POST /video) đã hoàn thành và còn trong thời hạn lưu
videoUrlstringCó*URL https tới file MP4/MOV, tối đa 10 GB, truy cập công khai (URL có chữ ký cũng được). Không chấp nhận địa chỉ nội bộ / IP riêng
resolutionstringCó**Độ phân giải đầu ra: "240p", "360p", "480p", "540p", "720p", "1080p", "2K", "4K", "8K"
resolutionLimitintegerCó**Thay cho resolution: khoá cạnh ngắn của video ở N pixel (128 – 2160)
fpsintegerCóSố khung hình/giây đầu ra: 15 – 120
toolVersionstringKhông"standard" (mặc định) hoặc "professional" (chất lượng cao hơn, giá cao hơn; bắt buộc với định dạng hậu kỳ)
outputFormatstringKhôngXem bảng A. Mặc định "auto"
scenestringKhôngChỉ áp dụng cho Standard: "common", "aigc", "short_series", "ugc", "old_film"
enhanceStylestringKhông"hd" (mặc định) hoặc "natural"
bitrateLevelstringKhông"low", "medium" (mặc định), "high". Không dùng chung với bitrate
bitrateintegerKhôngBitrate cụ thể (kbps): 10 – 150000. Không dùng chung với bitrateLevel
namestringKhôngTên tác vụ (tối đa 256 ký tự). Bỏ trống → "Upscale · <publicId>"
webHookUrlstringCóURL nhận kết quả khi tác vụ kết thúc
* Gửi đúng một trong hai: videoPublicId hoặc videoUrl.
** Gửi một trong hai: resolution hoặc resolutionLimit.

C. Request Body mẫu: Upscale từ video đã tạo (POST /video-upscale)#

{
  "videoPublicId": "09109249-8fa5-4857-a488-9946f124957e",
  "resolution": "1080p",
  "fps": 30,
  "webHookUrl": "https://your-domain.com/webhooks/coco"
}

D. Request Body mẫu: Upscale từ URL, xuất ProRes (POST /video-upscale)#

{
  "videoUrl": "https://cdn.your-domain.com/videos/clip.mp4",
  "name": "Clip quảng cáo – ProRes",
  "resolution": "4K",
  "fps": 30,
  "toolVersion": "professional",
  "outputFormat": "prores_10",
  "webHookUrl": "https://your-domain.com/webhooks/coco"
}
Response (200 OK):
{
  "publicId": "c79370e7-d263-4bb9-adc6-7136f00e333d",
  "name": "Clip quảng cáo – ProRes",
  "status": 0,
  "statusText": "pending",
  "phase": "downloading",
  "errorMessage": "",
  "createdDate": "2026-10-05T08:06:07.000Z",
  "output": { "master": null, "verifyStatus": null, "billing": null },
  "balance": { "estimateCost": 0, "confirmCost": null }
}

E. Trạng thái & Kết quả (GET /video-upscale/:publicId)#

statusstatusTextÝ nghĩa
0pendingĐang chờ (đang tải file nguồn hoặc chờ xử lý)
1processingĐang upscale
2successHoàn thành
3failureThất bại, xem errorMessage
phase chi tiết hơn: "downloading" (đang tải file từ videoUrl), "queued", "processing", "completed", "failed".
Kết quả khi hoàn thành:
{
  "publicId": "204afc22-41dd-4c6a-92e0-9981c4234d1e",
  "status": 2,
  "statusText": "success",
  "phase": "completed",
  "output": {
    "master": {
      "url": "https://s3.ap-southeast-1.amazonaws.com/files/204afc22-41dd-4c6a-92e0-9981c4234d1e.mov",
      "fileName": "204afc22-41dd-4c6a-92e0-9981c4234d1e.mov",
      "mimeType": "video/quicktime",
      "contentType": "video",
      "container": "mov",
      "codec": "ffv1",
      "bitDepth": 16,
      "width": 1920,
      "height": 1080,
      "sizeBytes": 309941372,
      "durationSeconds": 4,
      "hasAudio": false
    },
    "verifyStatus": "matched",
    "billing": "charged"
  },
  "balance": { "estimateCost": 23, "confirmCost": 22 }
}
TrườngMô tả
output.master.urlLink tải file kết quả, lưu 30 ngày kể từ khi hoàn thành
output.master.contentType"video", hoặc "image_sequence" (EXR, file .zip)
output.verifyStatus"matched": đúng định dạng yêu cầu. "mismatched" / "unverifiable": khác hoặc không kiểm chứng được, khi đó không tính phí
output.billing"charged" (đã trừ tiền), "waived" (miễn phí), "refunded" (đã hoàn tiền)
balance.estimateCostSố tiền tạm giữ (escrow) khi bắt đầu xử lý
balance.confirmCostSố tiền thực tế bị trừ. null khi tác vụ chưa kết thúc
🛡️ Danh sách Host / Bucket lưu trữ kết quả trên Production (dành cho hệ thống cấu hình Whitelist):
BytePlus TOS (Lưu trữ tệp Video Upscale): *.tos-s3-ap-southeast-1.bytepluses.com (ví dụ https://coco-prod.tos-s3-ap-southeast-1.bytepluses.com hoặc https://tos-s3-ap-southeast-1.bytepluses.com).
AWS S3 (Lưu trữ Video/Image thông thường): ap-southeast-1-coco.s3.ap-southeast-1.amazonaws.com (hoặc *.s3.ap-southeast-1.amazonaws.com).
⚠️ Chi phí tính theo độ phân giải đầu ra, fps, toolVersion (Professional đắt hơn Standard) và thời lượng video; outputFormat không làm thay đổi giá. Tác vụ thất bại được hoàn tiền toàn bộ.

8. Quản lý Danh sách Model (GET /model/*)#

Các API này không cần truyền body, dùng để lấy danh sách partnerModelId và name chính xác đang hoạt động trên hệ thống:
Phương thứcEndpointMô tả
GET/model/videoLấy danh sách các Model Video
GET/model/imageLấy danh sách các Model Image
GET/model/audioLấy danh sách các Model Audio
Response mẫu (200 OK):
{
  "code": 200,
  "data": [
    {
      "partnerModelId": "ep-20260824222944-wmrzt",
      "name": "Seedream-5-0-lite"
    },
    {
      "partnerModelId": "ep-20260824223025-2c9qd",
      "name": "Seedream-5-0-pro"
    },
    {
      "partnerModelId": "gpt-image-2",
      "name": "GPT Image"
    }
  ]
}

9. Kiểm tra Số dư & Credits (GET /balance)#

API kiểm tra số dư ví tài khoản (Coco Credits) của đối tác.
Phương thức: GET
Endpoint: /balance (hỗ trợ alias /company/balance)
Header: apiKey: YOUR_API_KEY_HERE

Response mẫu (200 OK):#

{
  "balance": 1500.5,
  "credits": 1500.5,
  "availableBalance": 1500.5,
  "escrow": 20.0,
  "currency": "CCC",
  "lastModified": "2026-10-21T03:00:00.000Z"
}
Ý nghĩa các trường:
balance: Số dư khả dụng hiện tại của tài khoản (Credits).
credits: Tương đương balance (số credits có thể dùng để tạo Video/Image/Audio/Upscale).
availableBalance: Số dư thực tế có thể sử dụng (đã trừ phần tạm giữ/escrow và tính theo quota thành viên nếu có).
escrow: Số dư đang được tạm giữ cho các tác vụ đang xử lý/render.
currency: Mã đơn vị tiền tệ ("CCC" hoặc "CC").
lastModified: Thời gian cập nhật số dư gần nhất.

10. Cấu trúc dữ liệu Webhook Callback nhận kết quả#

Khi bất kỳ tác vụ nào (Video, Image, Audio, Video Upscale) hoàn tất render, hệ thống sẽ tự động gửi HTTP POST request đến webHookUrl bạn đã cung cấp:

A. Payload Callback Video (POST /video):#

{
  "id": "e3057cae-9907-4e92-ba2c-2936c0500a4d",
  "status": "success",
  "name": "Cinematic Beach Cat",
  "videoUrl": "https://s3.ap-southeast-1.amazonaws.com/files/video.mp4",
  "lastFrameUrl": "https://s3.ap-southeast-1.amazonaws.com/files/last-frame.jpeg",
  "thumbnailUrl": "https://s3.ap-southeast-1.amazonaws.com/files/thumb.jpg",
  "duration": 5,
  "resolution": "720p",
  "ratio": "16:9"
}

B. Payload Callback Video Upscale (POST /video-upscale):#

Gửi một lần khi tác vụ kết thúc. source = 4 là sự kiện của Video Upscale. Sau khi nhận, gọi GET /video-upscale/:publicId để lấy link file và chi phí.
{
  "aiVideoUpscaleId": "204afc22-41dd-4c6a-92e0-9981c4234d1e",
  "source": 4,
  "status": 2,
  "createdDate": "2026-10-05T09:41:48.000Z"
}
Khi thất bại (status = 3):
{
  "aiVideoUpscaleId": "739ae40d-1dda-408c-b211-de052055438c",
  "source": 4,
  "status": 3,
  "createdDate": "2026-10-05T09:41:49.000Z",
  "errorMessage": "Output format exr_16 accepts videos up to 40 seconds (this one is 41.00s)"
}
⚠️ Endpoint nhận webhook cần trả HTTP 2xx. Lỗi tạm thời (5xx/timeout) được gửi lại; lỗi 4xx thì hệ thống ngừng gửi.

C. Payload Callback Image:#

{
  "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "status": "success",
  "name": "Cyberpunk Street",
  "images": [
    {
      "url": "https://s3.ap-southeast-1.amazonaws.com/files/image-1.png",
      "thumbnailUrl": "https://s3.ap-southeast-1.amazonaws.com/files/thumb-1.jpg"
    }
  ]
}

D. Payload Callback Audio:#

{
  "id": "7b8f9e60-f654-4a21-88bb-4c270d97bb01",
  "status": "success",
  "name": "Podcast Intro Voice",
  "audioUrl": "https://s3.ap-southeast-1.amazonaws.com/files/podcast.mp3",
  "duration": 6.2,
  "format": "mp3"
}

11. Tra cứu & Quản lý tác vụ qua API#

Tra cứu chi tiết theo publicId:
GET /video/:publicId (trả về thêm draft, finalized, draftOf)
GET /video-upscale/:publicId (tra cứu trạng thái và link file upscale)
GET /image/:publicId
GET /audio/:publicId
Lấy danh sách tác vụ (có phân trang):
GET /video?page=1&size=20
GET /video-upscale?page=1&size=20 (hỗ trợ thêm query search để tìm theo tên)
GET /advance-creation?page=1&size=20
GET /image?page=1&size=20
GET /audio?page=1&size=20
Hoàn thiện bản chính thức từ bản nháp Draft:
POST /video/:publicId/finalize
Ước tính chi phí tác vụ:
POST /video/estimate
POST /video-upscale/estimate

Schema Response Ước tính chi phí (/estimate):#

1. Response của POST /video/estimate:#
{
  "estimatedCost": 25,
  "availableBalance": 1450.5,
  "sufficient": true
}
estimatedCost: Số credit (CC) dự kiến cần tạm giữ/chi trả cho tác vụ video.
availableBalance: Số dư khả dụng hiện tại của công ty.
sufficient: true nếu số dư khả dụng đủ để thực hiện tác vụ, false nếu không đủ.
2. Response của POST /video-upscale/estimate:#
{
  "estimatedCost": 62,
  "availableBalance": 1450.5,
  "sufficient": true,
  "durationSeconds": 90,
  "approximate": false
}
durationSeconds: Độ dài video (giây) được đo bằng ffprobe (nếu dùng videoPublicId) hoặc do client truyền vào (nếu dùng videoUrl).
approximate: false nếu hệ thống đo chính xác từ video trên Coco, true nếu ước tính dựa trên durationSeconds do client truyền khi dùng videoUrl.

12. Bảng mã lỗi thường gặp (Error Codes)#

A. Lỗi chung & Xác thực#

HTTP CodeError MessageÝ nghĩa & Cách xử lý
400ApiKey InvalidHeader apiKey bị thiếu hoặc không chính xác
400Model is required / Not found partnerModelIdModel không tồn tại. Gọi GET /model/* để lấy đúng ID
400Insufficient account balanceSố dư tài khoản không đủ để tạm giữ cọc (escrow)
400Transparent background requires PNG or WebP output formatChọn background: "transparent" nhưng lại đặt outputFormat: "jpeg"
400Reference audio and reference image cannot be used togetherAudio API không cho phép truyền cả ảnh và clip audio cùng lúc
400This model only allows seconds from 4 to 30Tham số seconds vượt quá phạm vi của Video model
429Too Many RequestsVượt quá giới hạn tần suất gửi request (Rate Limit)

B. Lỗi Video Draft Mode & Finalize#

HTTP CodeError MessageÝ nghĩa & Cách xử lý
400Draft mode is only supported by Dreamina Seedance 2.5.Gửi draft: true nhưng chọn model khác
400Draft mode requires resolution 480p.Gửi draft: true nhưng resolution khác 480p (1)
400This video was not created in Draft mode.Gọi finalize một video không phải bản nháp
400Draft video is not ready yet.Bản nháp chưa xử lý xong
400Draft video failed, cannot finalize.Bản nháp đã thất bại, không thể finalize
400This draft has already been finalized.Bản nháp đã được dùng để finalize trước đó
400This draft has expired (older than 7 days) and can no longer be finalized.Bản nháp đã quá hạn 7 ngày
400This draft was created with a model version that has since changed …Model AI đã nâng cấp, cần tạo bản nháp mới

C. Lỗi Video Upscale API#

HTTP CodeError MessageÝ nghĩa & Cách xử lý
400Provide exactly one of videoUrl or videoPublicIdThiếu nguồn video, hoặc gửi đồng thời cả hai
400videoUrl must be an https URLvideoUrl phải có giao thức https
400videoUrl must point to a public internet address.URL trỏ tới địa chỉ nội bộ / IP riêng
400The source URL returned HTTP 404.File nguồn không tồn tại
400The source file exceeds the 10 GB limit.File nguồn lớn hơn 10 GB
400Video not found.videoPublicId không tồn tại hoặc không thuộc tài khoản
400The video is not ready (or has expired).Video nguồn chưa hoàn thành hoặc đã hết hạn lưu
400Output format … requires the Professional tool versionĐịnh dạng hậu kỳ cần toolVersion: "professional"
400Output format … does not accept bitrate or bitrateLevelProRes / FFV1 / EXR không nhận cấu hình bitrate
400Too many source downloads in progress for this company. Try again later.Đang có quá nhiều tác vụ tải file cùng lúc từ tài khoản
Các lỗi xảy ra trong quá trình xử lý bất đồng bộ (trả trong errorMessage qua Webhook / Tra cứu, tự hoàn lại tiền):
errorMessageÝ nghĩa / Xử lý
Download failed: the source returned HTTP <code>.Server chứa file nguồn từ chối khi hệ thống tải về
Download failed: the source took too long to download.Tải file nguồn vượt quá 3 giờ
The source is not an MP4/MOV video file.URL không trả về file video định dạng MP4/MOV hợp lệ
Output format … accepts videos up to 40 seconds (this one is …s)Định dạng 16-bit (FFV1, EXR) gửi video dài hơn 40 giây
Insufficient account balance.Số dư không đủ cho chi phí thực tế
Modified at 2026-10-23 05:16:51
Previous
Dreamina Seedance 2.5 Prompt Guide
Next
📖 Hướng Dẫn Tích Hợp Advance Creation API
Built with