Seedance API
ผสานระบบสร้างวิดีโอเข้ากับผลิตภัณฑ์ของคุณด้วย Seedance 2.5 หรือ Seedance 2.0 พร้อมระบบงานแบบอะซิงโครนัส, เว็บฮุค และระบบเรียกเก็บค่าบริการตามเครดิตที่ใช้จริง
https://api.seevio.aiในหน้านี้
บทนำ
API นี้ช่วยให้คุณส่งงานสร้างวิดีโอของ Seedance 2.5 และ Seedance 2.0 ได้โดยใช้โปรแกรมอัตโนมัติ โดยเราขอแนะนำโมเดล Seedance 2.5 ซึ่งเป็นเวอร์ชันล่าสุดที่รองรับการสร้างวิดีโอจากข้อความ, การสร้างวิดีโอจากภาพแรก หรือภาพแรกและภาพสุดท้าย รวมถึงการใช้อ้างอิงแบบมัลติโมดอลเพื่อสร้างวิดีโอ การทำงานของระบบจะเป็นแบบอะซิงโครนัส (Asynchronous) กล่าวคือ เมื่อคุณสร้างงาน ระบบจะส่ง Task ID กลับไปให้ทันที จากนั้นคุณสามารถรับไฟล์วิดีโอที่เสร็จสมบูรณ์ได้ด้วยการส่งคำขอตรวจสอบสถานะ (Polling) หรือรับการแจ้งเตือนผ่านเว็บฮุค (Webhook)
งานแบบอะซิงโครนัส
การส่งคำขอตรวจสอบสถานะ (Polling) เหมาะสำหรับการทำงานในช่วงพัฒนาและระบบที่ไม่มีความซับซ้อน
รองรับเว็บฮุค
แนะนำให้ใช้เว็บฮุค (Webhooks) สำหรับระบบที่ใช้งานจริง (Production) เพื่อหลีกเลี่ยงการส่งคำขอตรวจสอบสถานะถี่เกินไป และเพื่อรับการแจ้งเตือนทันทีเมื่อระบบประมวลผลงานเสร็จสิ้นหรือเกิดข้อผิดพลาด
ระบบจัดการเครดิตแม่นยำ
ระบบจะสำรองเครดิตทันทีเมื่อส่งคำขอ และจะหักเครดิตจริงเมื่อสร้างวิดีโอสำเร็จ หากงานล้มเหลวหรือหมดเวลา ระบบจะคืนเครดิตให้โดยอัตโนมัติ
การยืนยันตัวตน
สร้างคีย์ API ได้ที่แดชบอร์ด และส่งคีย์ดังกล่าวเป็น Bearer token ในทุกๆ คำขอ ทั้งนี้ ระบบจะแสดงคีย์ตัวเต็มให้เห็นเพียงครั้งเดียวตอนสร้างคีย์เท่านั้น
Authorization: Bearer sk_live_xxxxxxxxใช้คีย์ที่ขึ้นต้นด้วย sk_live_ สำหรับระบบที่ใช้งานจริง (Production)
ใช้คีย์ที่ขึ้นต้นด้วย sk_test_ สำหรับการทดสอบบน Sandbox ภายใต้เงื่อนไขการทำงานของ API รูปแบบเดียวกัน
หากไม่ใส่คีย์ ใส่คีย์ไม่ถูกต้อง หรือคีย์ถูกยกเลิก ระบบจะส่งข้อผิดพลาด invalid_api_key กลับมาพร้อมรหัส HTTP 401
เริ่มต้นใช้งานอย่างรวดเร็ว
เริ่มจากการส่งงานสร้างวิดีโอก่อน เมื่อระบบตอบรับงานแล้ว คุณสามารถเลือกวิธีรับผลลัพธ์ได้สองวิธี คือ ส่งคำขอตรวจสอบสถานะงาน (Poll) หรือรอรับผลลัพธ์สุดท้ายผ่านเว็บฮุค (Webhook)
สร้างงานวิดีโอแบบอะซิงโครนัสและรับ Task ID ทันที
curl https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2-5",
"callback_url": "https://your-domain.com/api/seedance/webhook",
"input": {
"prompt": "a cat surfing on a neon wave, cinematic lighting",
"generation_type": "text-to-video",
"duration": 5,
"aspect_ratio": "16:9",
"resolution": "720p",
"generate_audio": true,
"watermark": false,
"web_search": false,
"return_last_frame": false
}
}'ส่งคำขอไปยังเอนด์พอยต์เพื่อตรวจสอบสถานะงาน เหมาะสำหรับระบบที่ต้องการดึงข้อมูลเองโดยตรง
curl https://api.seevio.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
-H "Authorization: Bearer sk_live_xxx"ระบุ callback_url ตอนส่งงาน เพื่อให้ระบบส่งข้อมูลผลลัพธ์เมื่อเสร็จสิ้นหรือล้มเหลวกลับไปยังระบบของคุณโดยอัตโนมัติ
export async function POST(request: Request) {
const callbackData = await request.json();
if (callbackData.status === "completed") {
const videoUrl = callbackData.data.results[0];
// Save the video URL or update your own task record here.
}
if (callbackData.status === "failed") {
const errorMessage = callbackData.data.failed_reason;
// Mark your own task record as failed here.
}
return new Response(null, { status: 200 });
}สร้างงานวิดีโอ
สร้างงานวิดีโอโดยส่งคำขอ POST ไปที่ /v1/videos/generations โดยใน Body ของคำขอจะต้องประกอบด้วยฟิลด์ model ในระดับบนสุด ฟิลด์ callback_url (ไม่บังคับ) และออบเจกต์ input ที่ระบุข้อความคำสั่ง (prompt) พร้อมตั้งค่าการสร้างวิดีโอ
/v1/videos/generationscurl https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2-5",
"callback_url": "https://your-domain.com/api/seedance/webhook",
"input": {
"prompt": "a cat surfing on a neon wave, cinematic lighting",
"generation_type": "text-to-video",
"duration": 5,
"aspect_ratio": "16:9",
"resolution": "720p",
"generate_audio": true,
"watermark": false,
"web_search": false,
"return_last_frame": false
}
}'โหมดการสร้างวิดีโอ
พารามิเตอร์ generation_type จะเป็นตัวกำหนดประเภทของสื่ออินพุตที่รองรับ และกำหนดวิธีการตีความข้อมูลของโมเดล
ตั้งค่า model เป็น seedance-2-5 เพื่อสร้างวิดีโอความละเอียด 480p หรือ 720p ความยาวตั้งแต่ 4 ถึง 30 วินาที
- สร้างวิดีโอจากข้อความ (Text-to-video) โดยรองรับอัตราส่วนภาพแบบปรับตามความเหมาะสม (adaptive), 16:9, 9:16, 1:1, 4:3, 3:4 หรือ 21:9
- สร้างวิดีโอจากรูปภาพ (Image-to-video) โดยระบุภาพเริ่มต้น 1 ภาพ หรือภาพเริ่มต้นและภาพสุดท้ายรวม 2 ภาพ (ต้องใช้อัตราส่วนภาพแบบ adaptive เท่านั้น)
- สร้างวิดีโอแบบอ้างอิงสไตล์ (Reference-to-video) โดยรองรับรูปภาพอ้างอิงสูงสุด 30 ภาพ, วิดีโออ้างอิงสูงสุด 10 ไฟล์ และเสียงอ้างอิงสูงสุด 10 ไฟล์ (รวมสื่ออินพุตทั้งหมดไม่เกิน 50 ไฟล์)
- วิดีโอหรือเสียงอ้างอิงแต่ละไฟล์ต้องมีความยาว 2-30 วินาที โดยความยาวรวมของวิดีโอทั้งหมด และความยาวรวมของเสียงทั้งหมด ต้องไม่เกินประเภทละ 30 วินาที
- รองรับการใช้อินพุตอ้างอิงเฉพาะเสียงอย่างเดียว และรองรับ return_last_frame (ไม่รองรับการกำหนด seed)
| โหมด | สื่อที่จำเป็นต้องมี | สื่อที่ไม่บังคับ | หมายเหตุ |
|---|---|---|---|
text-to-video | prompt | duration, aspect_ratio, resolution, seed | ใช้เพียงข้อความคำสั่งเท่านั้น ไม่ต้องระบุ image_urls, video_urls และ audio_urls |
image-to-video | prompt + อาร์เรย์ image_urls (1-2 URL) | duration, aspect_ratio, resolution, seed | image_urls ต้องส่งเป็นอาร์เรย์ โดยระบุ 1 URL สำหรับเฟรมแรก หรือ 2 URL สำหรับเฟรมแรกและเฟรมสุดท้าย ระบบจะไม่นำไฟล์วิดีโอและเสียงมาคำนวณ |
reference-to-video | prompt + สื่ออ้างอิงอย่างน้อยหนึ่งรายการ (ภาพ, วิดีโอ หรือเสียง) | ภาพ, วิดีโอ และเสียง ภายใต้จำนวนที่ระบบจำกัด | Seedance 2.5 รองรับการใช้ไฟล์เสียงอ้างอิงเพียงอย่างเดียว ส่วน Seedance 2.0 ต้องใส่รูปภาพหรือวิดีโออ้างอิงด้วยอย่างน้อยหนึ่งรายการหากมีการระบุเสียง |
text-to-videoเลือกใช้โหมดข้อความเป็นวิดีโอ (text-to-video) เมื่อต้องการใช้เพียงข้อความคำสั่ง (prompt) ในการสร้างสรรค์ผลงานเท่านั้น
curl https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2-5",
"callback_url": "https://your-domain.com/api/seedance/webhook",
"input": {
"prompt": "a cinematic drone shot over a futuristic coastal city at sunrise",
"generation_type": "text-to-video",
"duration": 5,
"aspect_ratio": "16:9",
"resolution": "720p",
"generate_audio": true,
"watermark": false,
"web_search": false,
"return_last_frame": false
}
}'image-to-videoเลือกใช้โหมดภาพเป็นวิดีโอ (image-to-video) เมื่อต้องการระบุอินพุตใน input.image_urls เป็นอาร์เรย์ของ URL รูปภาพจำนวน 1-2 ภาพ โดย 1 ภาพสำหรับกำหนดเฟรมแรก และ 2 ภาพสำหรับกำหนดเฟรมแรกและเฟรมสุดท้าย (ระบบจะไม่นำวิดีโอและเสียงอ้างอิงมาประมวลผลในโหมดนี้)
curl https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2-5",
"input": {
"prompt": "the subject turns toward camera, soft studio motion",
"generation_type": "image-to-video",
"image_urls": ["https://your.cdn.com/first-frame.jpg"],
"duration": 5,
"resolution": "720p"
}
}'reference-to-videoเลือกใช้โหมดอ้างอิงเพื่อสร้างวิดีโอ (reference-to-video) เพื่อการควบคุมทิศทางของวิดีโอที่ละเอียดยิ่งขึ้นด้วยภาพ วิดีโอ หรือเสียงอ้างอิง โดย Seedance 2.5 สามารถใช้เสียงอ้างอิงเพียงอย่างเดียวได้ แต่สำหรับ Seedance 2.0 จะต้องมีรูปภาพหรือวิดีโออ้างอิงด้วยอย่างน้อยหนึ่งอย่างหากมีการใช้เสียง
ข้อจำกัดของจำนวนไฟล์สื่ออ้างอิง
- Seedance 2.5: อ้างอิงรูปภาพได้สูงสุด 30 ภาพ
- Seedance 2.5: อ้างอิงวิดีโอได้สูงสุด 10 ไฟล์ โดยแต่ละไฟล์ต้องยาว 2-30 วินาที และความยาวรวมกันต้องไม่เกิน 30 วินาที
- Seedance 2.5: อ้างอิงเสียงได้สูงสุด 10 ไฟล์ โดยแต่ละไฟล์ต้องยาว 2-30 วินาที และความยาวรวมกันต้องไม่เกิน 30 วินาที
- Seedance 2.5: จำนวนไฟล์สื่ออ้างอิงทุกประเภทรวมกันต้องไม่เกิน 50 ไฟล์
- Seedance 2.0: ยังคงใช้ข้อจำกัดเดิม คือ รูปภาพ 9 ภาพ, วิดีโอ 3 ไฟล์, เสียง 3 ไฟล์ และความยาวรวมของวิดีโอ/เสียงแต่ละกลุ่มไม่เกิน 15 วินาที
รูปแบบอินพุตที่รองรับ
curl https://api.seevio.ai/v1/videos/generations \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"model": "seedance-2-5",
"input": {
"prompt": "use the product from image 1 and the camera motion from the reference video",
"generation_type": "reference-to-video",
"image_urls": ["https://your.cdn.com/product.jpg"],
"video_urls": ["https://your.cdn.com/camera-motion.mp4"],
"audio_urls": [],
"duration": 8,
"resolution": "720p"
}
}'พารามิเตอร์ของคำขอ
ชื่อพารามิเตอร์, ค่า Enum, เส้นทางของเอนด์พอยต์ (paths) และตัวอย่างโครงสร้างข้อมูลทั้งหมดถือเป็นข้อกำหนดของ API ด้านล่างนี้คือคำอธิบายลักษณะการทำงานของแต่ละฟิลด์
Headers
| ส่วนหัวข้อความ (Header) | จำเป็น | คำอธิบาย | ตัวอย่าง |
|---|---|---|---|
Authorization | ใช่ | Bearer API key ที่ใช้สำหรับการยืนยันสิทธิ์ในการส่งคำขอ | Bearer sk_live_xxx |
Content-Type | ใช่ | คำขอในการเขียนข้อมูลทั้งหมดต้องส่งในรูปแบบ JSON | application/json |
ฟิลด์ระดับบนสุด
| ฟิลด์ | ประเภทข้อมูล | จำเป็น | ค่าเริ่มต้น | ช่วงข้อมูล / Enum | โหมดที่รองรับ | ตัวอย่าง |
|---|---|---|---|---|---|---|
modelรุ่นของโมเดลที่ใช้สร้างวิดีโอ เลือก seedance-2-5 สำหรับ Seedance 2.5, seedance-2-0 สำหรับ Seedance 2.0, seedance-2-0-fast สำหรับ Seedance 2.0 Fast หรือ seedance-2-0-mini สำหรับ Seedance 2.0 Mini | string | ใช่ | - | seedance-2-5 | seedance-2-0 | seedance-2-0-fast | seedance-2-0-mini | ทั้งหมด | seedance-2-5 |
callback_urlเอนด์พอยต์ HTTPS ที่จะรอรับข้อมูลส่งกลับ (Callback) เมื่อการสร้างวิดีโอเสร็จสิ้นหรือล้มเหลว | string | ไม่ | - | HTTPS URL (ไม่รองรับเครือข่ายส่วนตัว) | ทั้งหมด | https://your-domain.com/hook |
inputการตั้งค่าสำหรับการสร้างวิดีโอและสื่ออ้างอิง | object | ใช่ | - | - | ทั้งหมด | - |
input.* ฟิลด์ย่อย
| ฟิลด์ | ประเภทข้อมูล | จำเป็น | ค่าเริ่มต้น | ช่วงข้อมูล / Enum | โหมดที่รองรับ | ตัวอย่าง |
|---|---|---|---|---|---|---|
input.promptข้อความอธิบายลักษณะของวิดีโอที่ต้องการสร้าง | string | ใช่ | - | ข้อความคำสั่ง (ห้ามเว้นว่าง) | ทั้งหมด | a cat surfing |
input.generation_typeโหมดการสร้างวิดีโอ ค่าเริ่มต้นคือ text-to-video | string | ไม่ | text-to-video | text-to-video | image-to-video | reference-to-video | - | image-to-video |
input.image_urlsURL รูปภาพที่สามารถเข้าถึงได้แบบสาธารณะ สำหรับโหมด image-to-video ให้ระบุ 1 ภาพสำหรับเฟรมแรก หรือ 2 ภาพสำหรับเฟรมแรกและเฟรมสุดท้าย ส่วนโหมด reference-to-video โมเดล Seedance 2.5 รองรับสูงสุด 30 ภาพ และ Seedance 2.0 รองรับสูงสุด 9 ภาพ | string[] | ตามเงื่อนไข | [] | Image-to-video: 1 หรือ 2 ภาพ ส่วน Reference-to-video: สูงสุด 30 ภาพสำหรับ Seedance 2.5 และสูงสุด 9 ภาพสำหรับ Seedance 2.0 | image-to-video / reference-to-video | ["https://.../a.jpg"] |
input.video_urlsURL วิดีโออ้างอิงที่เข้าถึงได้แบบสาธารณะ (เฉพาะโหมด reference-to-video เท่านั้น) โดย Seedance 2.5 รองรับสูงสุด 10 ไฟล์ แต่ละไฟล์ยาว 2-30 วินาที ความยาวรวมกันไม่เกิน 30 วินาที ส่วน Seedance 2.0 รองรับสูงสุด 3 ไฟล์ ความยาวรวมกันไม่เกิน 15 วินาที | string[] | ไม่ | [] | Seedance 2.5: สูงสุด 10 วิดีโอ แต่ละไฟล์ยาว 2-30 วินาที ความยาวรวมกัน <= 30 วินาที ส่วน Seedance 2.0: สูงสุด 3 วิดีโอ ความยาวรวมกัน <= 15 วินาที | reference-to-video | [] |
input.audio_urlsURL ไฟล์เสียงอ้างอิงที่เข้าถึงได้แบบสาธารณะ (เฉพาะโหมด reference-to-video เท่านั้น) โดย Seedance 2.5 รองรับสูงสุด 10 ไฟล์ แต่ละไฟล์ยาว 2-30 วินาที ความยาวรวมกันไม่เกิน 30 วินาที และรองรับการใช้อ้างอิงเฉพาะเสียงเท่านั้น ส่วน Seedance 2.0 รองรับสูงสุด 3 ไฟล์ ความยาวรวมกันไม่เกิน 15 วินาที | string[] | ไม่ | [] | Seedance 2.5: สูงสุด 10 เสียง แต่ละไฟล์ยาว 2-30 วินาที ความยาวรวมกัน <= 30 วินาที ส่วน Seedance 2.0: สูงสุด 3 เสียง ความยาวรวมกัน <= 15 วินาที | reference-to-video | [] |
input.durationความยาวของวิดีโอผลลัพธ์ในหน่วยวินาที | int | ไม่ | 5 | Seedance 2.5: 4-30 วินาที ส่วน Seedance 2.0: 4-15 วินาที | ทั้งหมด | 5 |
input.aspect_ratioอัตราส่วนภาพของวิดีโอผลลัพธ์ ค่า adaptive จะปล่อยให้ระบบคำนวณอัตราส่วนที่เหมาะสมที่สุดให้โดยอัตโนมัติ สำหรับโหมด image-to-video ของ Seedance 2.5 จะรองรับเฉพาะค่า adaptive เท่านั้น | string | ไม่ | adaptive | 16:9 | 4:3 | 1:1 | 3:4 | 9:16 | 21:9 | adaptive | ทั้งหมด | 16:9 |
input.resolutionระดับความละเอียดของวิดีโอผลลัพธ์ | string | ไม่ | 720p | Seedance 2.5: 480p | 720p ส่วน Seedance 2.0: 480p | 720p | 1080p | 4k (ขึ้นอยู่กับรุ่นย่อยของโมเดล) | ทั้งหมด | 720p |
input.generate_audioระบุว่าต้องการให้โมเดลสร้างเสียงประกอบด้วยหรือไม่ (ในรุ่นที่รองรับ) | boolean | ไม่ | true | true | false | ทั้งหมด | true |
input.watermarkระบุว่าต้องการให้ใส่ลายน้ำลงในวิดีโอหรือไม่ | boolean | ไม่ | false | true | false | ทั้งหมด | false |
input.web_searchระบุว่าอนุญาตให้ใช้การสืบค้นข้อมูลจากเว็บเพื่อปรับปรุงคุณภาพผลลัพธ์หรือไม่ (ในรุ่นที่รองรับ) | boolean | ไม่ | false | true | false | ทั้งหมด | false |
input.return_last_frameระบุว่าต้องการให้ส่ง URL ของเฟรมสุดท้ายกลับมาด้วยหรือไม่ (เมื่อพร้อมใช้งาน) | boolean | ไม่ | false | true | false | ทั้งหมด | false |
input.seedเลขอ้างอิงสุ่ม (Seed) เพื่อควบคุมผลลัพธ์ให้คงเดิม สำหรับรุ่นย่อยของ Seedance 2.0 ทั้งนี้ Seedance 2.5 ไม่รองรับฟิลด์นี้ (โปรดละเว้นไม่ระบุฟิลด์นี้) | int | ไม่ | -1 | -1 หรือ 0-4294967295 | ทั้งหมด | -1 |
อัตราการใช้เครดิตจะแตกต่างกันไปตามความละเอียด, ความยาว, โมเดลที่เลือกใช้ และการใส่สื่อวิดีโออ้างอิงในโหมด reference-to-video ทั้งนี้ ค่าเครดิตที่ส่งกลับไปในขั้นตอนการตอบรับสร้างงานจะเป็นจำนวนเครดิตที่สำรองไว้จริงสำหรับงานนั้นๆ
ดูอัตราการใช้เครดิตการตอบกลับ
นี่คือข้อมูลตอบกลับเมื่อทำรายการสำเร็จจาก POST /v1/videos/generations ซึ่งหมายความว่าระบบได้รับงานของคุณเรียบร้อยแล้วและได้ทำการสำรองเครดิตไว้แล้ว คุณสามารถใช้ taskId ที่ได้กลับไปเพื่อส่งคำขอตรวจสอบสถานะแบบ GET /v1/tasks/:id หรือใช้เพื่อจับคู่ข้อมูลส่งกลับ (Callback) เมื่อระบบประมวลผลงานเสร็จสิ้นหรือล้มเหลว
ข้อมูลตอบกลับเมื่อส่งคำขอ POST /v1/videos/generations สำเร็จ
{
"taskId": "3f2aK9mR...",
"credits": 100
}ตรวจสอบสถานะงาน
ใช้คำขอ GET /v1/tasks/:id เพื่อตรวจสอบสถานะปัจจุบันของงาน โดยแนะนำให้ส่งคำขอตรวจสอบสถานะได้ไม่เกิน 1 ครั้งในทุกๆ 10 วินาที ทั้งนี้สำหรับระบบที่นำไปใช้บริการจริง แนะนำให้เลือกใช้งานเว็บฮุคแทน
curl https://api.seevio.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
-H "Authorization: Bearer sk_live_xxx"ข้อมูลตอบกลับเมื่อสถานะงานเสร็จสมบูรณ์
{
"id": "3f2aK9mR...",
"status": "completed",
"created_at": 1781234567,
"model": "seedance-2-5",
"billing_status": "charged",
"credits": 100,
"failed_reason": null,
"data": {
"results": ["https://cdn.seevio.ai/.../x.mp4"],
"video_expires_at": "2026-06-13T10:00:00Z",
"last_frame_url": null,
"processing_time": 48
}
}ข้อมูลตอบกลับเมื่อสถานะงานล้มเหลว
{
"id": "3f2aK9mR...",
"status": "failed",
"created_at": 1781234567,
"model": "seedance-2-5",
"billing_status": "refunded",
"credits": 100,
"failed_reason": "provider_failed"
}| ค่าสถานะ | ความหมาย |
|---|---|
status=queued | ได้รับงานเข้าระบบแล้ว และกำลังรอการคิวเพื่อประมวลผล |
status=generating | ผู้ให้บริการกำลังดำเนินการสร้างวิดีโอ |
status=completed | สร้างวิดีโอเสร็จสมบูรณ์แล้ว และข้อมูล URL ผลลัพธ์จะอยู่ใน data.results |
status=failed | การสร้างวิดีโอล้มเหลวหรือหมดเวลาในการประมวลผล |
billing_status=reserved | ระบบทำการสำรองเครดิตไว้ชั่วคราวในระหว่างที่กำลังประมวลผลงาน |
billing_status=charged | งานประมวลผลสำเร็จและดำเนินการตัดเครดิตที่สำรองไว้เรียบร้อยแล้ว |
billing_status=refunded | งานล้มเหลวหรือหมดเวลา และระบบทำการคืนเครดิตกลับเข้าบัญชีแล้ว |
billing_status=refund_failed | การทำรายการคืนเครดิตขัดข้อง และจำเป็นต้องดำเนินงานตรวจสอบด้วยตนเอง |
หลังจากเวลาใน video_expires_at สิ้นสุดลง ข้อมูลใน data.results จะว่างเปล่า โปรดดาวน์โหลดและจัดเก็บไฟล์วิดีโอดังกล่าวก่อนที่จะหมดเวลาตามรอบอายุการเก็บรักษา
เว็บฮุค
เมื่อมีการระบุ callback_url ระบบ Seedance จะส่งคำขอเรียกไปยังเอนด์พอยต์ของคุณทันทีที่งานสร้างวิดีโอเสร็จสิ้นหรือล้มเหลว โดยจะส่งข้อมูล JSON ที่อธิบายผลลัพธ์สุดท้ายไปให้ หากเอนด์พอยต์ของคุณตอบกลับด้วยรหัสที่ไม่ใช่ 2xx หรือไม่ตอบกลับภายใน 15 วินาที ระบบจะพยายามส่งข้อมูลใหม่อีกครั้งสูงสุด 5 ครั้ง การส่งข้อมูลใหม่จะใช้ task id เดิม ดังนั้นโปรดป้องกันการบันทึกข้อมูลซ้ำซ้อนโดยยึด id เป็นหลัก และกรุณาส่งรหัสตอบกลับ 200 ทันทีที่คุณได้บันทึกข้อมูลผลลัพธ์ดังกล่าวเข้าสู่ระบบของคุณเรียบร้อยแล้ว
ข้อมูลเว็บฮุคที่ส่งกลับเมื่อสถานะงานเสร็จสมบูรณ์
{
"id": "3f2aK9mR...",
"status": "completed",
"created_at": 1781234567,
"model": "seedance-2-5",
"data": {
"results": ["https://cdn.seevio.ai/.../x.mp4"],
"video_expires_at": "2026-06-13T10:00:00Z",
"last_frame_url": null,
"processing_time": 48
}
}ข้อมูลเว็บฮุคที่ส่งกลับเมื่อสถานะงานล้มเหลว
{
"id": "3f2aK9mR...",
"status": "failed",
"created_at": 1781234567,
"model": "seedance-2-5",
"data": {
"failed_reason": "provider_failed",
"credits_refunded": 100
}
}export async function POST(request: Request) {
const callbackData = await request.json();
if (callbackData.status === "completed") {
const videoUrl = callbackData.data.results[0];
// Save the video URL or update your own task record here.
}
if (callbackData.status === "failed") {
const errorMessage = callbackData.data.failed_reason;
// Mark your own task record as failed here.
}
return new Response(null, { status: 200 });
}ตรวจสอบรูปแบบข้อมูลของ callback ป้องกันการซ้ำซ้อนด้วย id อัปเดตข้อมูลสถานะงานในระบบของคุณ และส่งการตอบกลับอย่างรวดเร็ว
callback_url ต้องเป็นโปรโตคอล HTTPS และต้องไม่ชี้ไปยังช่วงไอพีเครือข่ายส่วนตัว (Private), Loopback หรือ Link-local
ข้อผิดพลาด
ระบบจะส่งโครงสร้างข้อผิดพลาดนี้กลับมาในคำขอ POST /v1/videos/generations และ GET /v1/tasks/:id เมื่อตัวคำขอ API เกิดความล้มเหลว เช่น พารามิเตอร์ไม่ถูกต้อง, คีย์ API ไม่ถูกต้อง, เครดิตไม่เพียงพอ, เกินโควตาการเรียกใช้งาน หรือไม่พบข้อมูลงาน ทั้งนี้ในบางกรณี ข้อผิดพลาดอาจมีข้อมูลฟิลด์พิเศษเพิ่มเติมอย่าง required, available หรือ retry_after แนบไปด้วย ขึ้นอยู่กับประเภทของปัญหาที่เกิดขึ้น
{
"error": {
"code": "insufficient_credits",
"message": "Not enough credits for this task.",
"required": 100,
"available": 12
}
}| รหัสข้อผิดพลาด | รหัส HTTP | ความหมาย | ลองใหม่? |
|---|---|---|---|
invalid_request | 400 | ข้อมูลพารามิเตอร์ไม่ครบถ้วนหรือไม่ถูกต้อง | ไม่ แนะนำให้ตรวจสอบและแก้ไขข้อมูลคำขอใหม่ |
invalid_api_key | 401 | ไม่พบคีย์ API, คีย์ไม่ถูกต้อง หรือคีย์ถูกยกเลิกการใช้งานแล้ว | ไม่ โปรดใช้คีย์ API ที่สามารถใช้งานได้จริง |
insufficient_credits | 402 | เครดิตคงเหลือไม่เพียงพอ ทำให้ระบบไม่สามารถตอบรับงานหรือสำรองเครดิตได้ | สามารถลองใหม่ได้หลังจากเติมเครดิตแล้ว |
forbidden | 403 | คีย์ API นี้ไม่มีสิทธิ์เข้าถึงหรือทำรายการตามที่ร้องขอ | ไม่ |
not_found | 404 | ไม่พบงานดังกล่าว หรือผู้เป็นเจ้าของคีย์ API ไม่มีสิทธิ์เข้าถึงงานนี้ | ไม่ |
rate_limited | 429 | อัตราการส่งคำขอของคุณสูงเกินกำหนด | ใช่ โปรดส่งคำขออีกครั้งตามเวลาที่ระบุใน Retry-After |
internal_error | 500 | เกิดข้อผิดพลาดขึ้นที่ฝั่งเซิร์ฟเวอร์ | ใช่ โปรดลองใหม่อีกครั้งในภายหลัง |
การจำกัดอัตราการเรียกใช้งาน
ระบบจะตรวจสอบและจำกัดอัตราการส่งคำขอสำหรับแต่ละคีย์ API ด้วยรูปแบบ Sliding Window โดยการส่งคำขอสร้างงานจะมีโควตาเริ่มต้นที่ 100 ครั้งต่อนาที ส่วนการส่งคำขอตรวจสอบสถานะงานจะมีความยืดหยุ่นและอนุญาตให้ส่งคำขอได้มากกว่า ทั้งนี้ ข้อมูลตอบกลับรหัส HTTP 429 จะมีส่วนหัวข้อความ Retry-After ระบุมาด้วย
การสร้างวิดีโอ
100/นาที
การตรวจสอบสถานะงาน
ยืดหยุ่นกว่าปกติ
ส่วนหัวข้อความ 429
Retry-After
การเรียกเก็บเงินและเครดิต
ขั้นตอนการทำรายการเครดิตสำหรับ API จะเริ่มต้นด้วยการ 'สำรองเครดิต' เมื่อส่งคำขอ, 'ตัดยอดเครดิต' เมื่อทำงานสำเร็จ และ 'คืนเครดิต' เมื่อเกิดข้อผิดพลาด คุณสามารถเข้าดูประวัติการใช้เครดิตของ API, บันทึกประวัติการทำงาน และสถิติการใช้งานจำแนกตามช่วงเวลาได้ที่หน้าการใช้งานบนแดชบอร์ด
สำรองเครดิต (Reserved)
ระบบจะตรวจสอบและทำการสำรองเครดิตทันทีเมื่อตอบรับงานเข้าสู่ระบบ
ตัดยอดเครดิต (Charged)
เมื่อประมวลผลงานเสร็จสมบูรณ์ ระบบจะดำเนินการหักยอดจากเครดิตที่สำรองไว้
คืนเครดิต (Refunded)
หากงานเกิดความล้มเหลวหรือหมดเวลา ระบบจะทำการคืนเครดิตที่สำรองไว้กลับคืนให้คุณโดยอัตโนมัติ
ตรวจสอบรายละเอียดการใช้งานบนแดชบอร์ด
ตรวจสอบประวัติข้อมูลการเรียกใช้งาน API, เส้นเวลาการดำเนินงาน, ประวัติเครดิต และแผนภูมิสถิติตามการใช้งานจริง