Seedance API

ผสานระบบสร้างวิดีโอเข้ากับผลิตภัณฑ์ของคุณด้วย Seedance 2.5 หรือ Seedance 2.0 พร้อมระบบงานแบบอะซิงโครนัส, เว็บฮุค และระบบเรียกเก็บค่าบริการตามเครดิตที่ใช้จริง

Base URL
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_

ใช้คีย์ที่ขึ้นต้นด้วย sk_live_ สำหรับระบบที่ใช้งานจริง (Production)

sk_test_

ใช้คีย์ที่ขึ้นต้นด้วย sk_test_ สำหรับการทดสอบบน Sandbox ภายใต้เงื่อนไขการทำงานของ API รูปแบบเดียวกัน

401

หากไม่ใส่คีย์ ใส่คีย์ไม่ถูกต้อง หรือคีย์ถูกยกเลิก ระบบจะส่งข้อผิดพลาด invalid_api_key กลับมาพร้อมรหัส HTTP 401

เริ่มต้นใช้งานอย่างรวดเร็ว

เริ่มจากการส่งงานสร้างวิดีโอก่อน เมื่อระบบตอบรับงานแล้ว คุณสามารถเลือกวิธีรับผลลัพธ์ได้สองวิธี คือ ส่งคำขอตรวจสอบสถานะงาน (Poll) หรือรอรับผลลัพธ์สุดท้ายผ่านเว็บฮุค (Webhook)

1. ส่งงานสร้างวิดีโอ

สร้างงานวิดีโอแบบอะซิงโครนัสและรับ 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
    }
  }'
ทางเลือกผลลัพธ์: การตรวจสอบสถานะ (Polling)

ส่งคำขอไปยังเอนด์พอยต์เพื่อตรวจสอบสถานะงาน เหมาะสำหรับระบบที่ต้องการดึงข้อมูลเองโดยตรง

curl https://api.seevio.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
  -H "Authorization: Bearer sk_live_xxx"
ทางเลือกผลลัพธ์: เว็บฮุค (Webhook)

ระบุ 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) พร้อมตั้งค่าการสร้างวิดีโอ

POST
/v1/videos/generations
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
    }
  }'

โหมดการสร้างวิดีโอ

พารามิเตอร์ generation_type จะเป็นตัวกำหนดประเภทของสื่ออินพุตที่รองรับ และกำหนดวิธีการตีความข้อมูลของโมเดล

ความสามารถของ Seedance 2.5
seedance-2-5

ตั้งค่า 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-videopromptduration, aspect_ratio, resolution, seedใช้เพียงข้อความคำสั่งเท่านั้น ไม่ต้องระบุ image_urls, video_urls และ audio_urls
image-to-videoprompt + อาร์เรย์ image_urls (1-2 URL)duration, aspect_ratio, resolution, seedimage_urls ต้องส่งเป็นอาร์เรย์ โดยระบุ 1 URL สำหรับเฟรมแรก หรือ 2 URL สำหรับเฟรมแรกและเฟรมสุดท้าย ระบบจะไม่นำไฟล์วิดีโอและเสียงมาคำนวณ
reference-to-videoprompt + สื่ออ้างอิงอย่างน้อยหนึ่งรายการ (ภาพ, วิดีโอ หรือเสียง)ภาพ, วิดีโอ และเสียง ภายใต้จำนวนที่ระบบจำกัด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 วินาที

รูปแบบอินพุตที่รองรับ

ข้อความ + รูปภาพ
ข้อความ + วิดีโอ
ข้อความ + เสียง (เฉพาะ Seedance 2.5)
ข้อความ + รูปภาพ + วิดีโอ
ข้อความ + รูปภาพ + เสียง
ข้อความ + วิดีโอ + เสียง
ข้อความ + รูปภาพ + วิดีโอ + เสียง
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ใช่คำขอในการเขียนข้อมูลทั้งหมดต้องส่งในรูปแบบ JSONapplication/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-videotext-to-video | image-to-video | reference-to-video-image-to-video
input.image_urls

URL รูปภาพที่สามารถเข้าถึงได้แบบสาธารณะ สำหรับโหมด 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.0image-to-video / reference-to-video["https://.../a.jpg"]
input.video_urls

URL วิดีโออ้างอิงที่เข้าถึงได้แบบสาธารณะ (เฉพาะโหมด 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_urls

URL ไฟล์เสียงอ้างอิงที่เข้าถึงได้แบบสาธารณะ (เฉพาะโหมด 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ไม่5Seedance 2.5: 4-30 วินาที ส่วน Seedance 2.0: 4-15 วินาทีทั้งหมด5
input.aspect_ratio

อัตราส่วนภาพของวิดีโอผลลัพธ์ ค่า adaptive จะปล่อยให้ระบบคำนวณอัตราส่วนที่เหมาะสมที่สุดให้โดยอัตโนมัติ สำหรับโหมด image-to-video ของ Seedance 2.5 จะรองรับเฉพาะค่า adaptive เท่านั้น

stringไม่adaptive16:9 | 4:3 | 1:1 | 3:4 | 9:16 | 21:9 | adaptiveทั้งหมด16:9
input.resolution

ระดับความละเอียดของวิดีโอผลลัพธ์

stringไม่720pSeedance 2.5: 480p | 720p ส่วน Seedance 2.0: 480p | 720p | 1080p | 4k (ขึ้นอยู่กับรุ่นย่อยของโมเดล)ทั้งหมด720p
input.generate_audio

ระบุว่าต้องการให้โมเดลสร้างเสียงประกอบด้วยหรือไม่ (ในรุ่นที่รองรับ)

booleanไม่truetrue | falseทั้งหมดtrue
input.watermark

ระบุว่าต้องการให้ใส่ลายน้ำลงในวิดีโอหรือไม่

booleanไม่falsetrue | falseทั้งหมดfalse
input.web_search

ระบุว่าอนุญาตให้ใช้การสืบค้นข้อมูลจากเว็บเพื่อปรับปรุงคุณภาพผลลัพธ์หรือไม่ (ในรุ่นที่รองรับ)

booleanไม่falsetrue | falseทั้งหมดfalse
input.return_last_frame

ระบุว่าต้องการให้ส่ง URL ของเฟรมสุดท้ายกลับมาด้วยหรือไม่ (เมื่อพร้อมใช้งาน)

booleanไม่falsetrue | 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_request400ข้อมูลพารามิเตอร์ไม่ครบถ้วนหรือไม่ถูกต้องไม่ แนะนำให้ตรวจสอบและแก้ไขข้อมูลคำขอใหม่
invalid_api_key401ไม่พบคีย์ API, คีย์ไม่ถูกต้อง หรือคีย์ถูกยกเลิกการใช้งานแล้วไม่ โปรดใช้คีย์ API ที่สามารถใช้งานได้จริง
insufficient_credits402เครดิตคงเหลือไม่เพียงพอ ทำให้ระบบไม่สามารถตอบรับงานหรือสำรองเครดิตได้สามารถลองใหม่ได้หลังจากเติมเครดิตแล้ว
forbidden403คีย์ API นี้ไม่มีสิทธิ์เข้าถึงหรือทำรายการตามที่ร้องขอไม่
not_found404ไม่พบงานดังกล่าว หรือผู้เป็นเจ้าของคีย์ API ไม่มีสิทธิ์เข้าถึงงานนี้ไม่
rate_limited429อัตราการส่งคำขอของคุณสูงเกินกำหนดใช่ โปรดส่งคำขออีกครั้งตามเวลาที่ระบุใน Retry-After
internal_error500เกิดข้อผิดพลาดขึ้นที่ฝั่งเซิร์ฟเวอร์ใช่ โปรดลองใหม่อีกครั้งในภายหลัง

การจำกัดอัตราการเรียกใช้งาน

ระบบจะตรวจสอบและจำกัดอัตราการส่งคำขอสำหรับแต่ละคีย์ API ด้วยรูปแบบ Sliding Window โดยการส่งคำขอสร้างงานจะมีโควตาเริ่มต้นที่ 100 ครั้งต่อนาที ส่วนการส่งคำขอตรวจสอบสถานะงานจะมีความยืดหยุ่นและอนุญาตให้ส่งคำขอได้มากกว่า ทั้งนี้ ข้อมูลตอบกลับรหัส HTTP 429 จะมีส่วนหัวข้อความ Retry-After ระบุมาด้วย

การสร้างวิดีโอ

100/นาที

การตรวจสอบสถานะงาน

ยืดหยุ่นกว่าปกติ

ส่วนหัวข้อความ 429

Retry-After

การเรียกเก็บเงินและเครดิต

ขั้นตอนการทำรายการเครดิตสำหรับ API จะเริ่มต้นด้วยการ 'สำรองเครดิต' เมื่อส่งคำขอ, 'ตัดยอดเครดิต' เมื่อทำงานสำเร็จ และ 'คืนเครดิต' เมื่อเกิดข้อผิดพลาด คุณสามารถเข้าดูประวัติการใช้เครดิตของ API, บันทึกประวัติการทำงาน และสถิติการใช้งานจำแนกตามช่วงเวลาได้ที่หน้าการใช้งานบนแดชบอร์ด

สำรองเครดิต (Reserved)

ระบบจะตรวจสอบและทำการสำรองเครดิตทันทีเมื่อตอบรับงานเข้าสู่ระบบ

ตัดยอดเครดิต (Charged)

เมื่อประมวลผลงานเสร็จสมบูรณ์ ระบบจะดำเนินการหักยอดจากเครดิตที่สำรองไว้

คืนเครดิต (Refunded)

หากงานเกิดความล้มเหลวหรือหมดเวลา ระบบจะทำการคืนเครดิตที่สำรองไว้กลับคืนให้คุณโดยอัตโนมัติ

ตรวจสอบรายละเอียดการใช้งานบนแดชบอร์ด

ตรวจสอบประวัติข้อมูลการเรียกใช้งาน API, เส้นเวลาการดำเนินงาน, ประวัติเครดิต และแผนภูมิสถิติตามการใช้งานจริง

ประวัติการใช้งาน API