ข้ามไปที่เอกสารประกอบ
ในหน้านี้

Kling 4.0

สร้างวิดีโอด้วย Kling 4.0 โดยใช้ข้อความ เฟรมแรกและเฟรมสุดท้าย หรืออินพุตอ้างอิงแบบมัลติโมดอล หน้านี้จะครอบคลุมขั้นตอนการทำงานตั้งแต่การส่งรีเควสไปจนถึงการรับผลลัพธ์ของโมเดลนี้ทั้งหมด

ID โมเดลของ API: kling-4-0

การสร้างวิดีโอจะทำงานแบบอะซิงโครนัส (Asynchronous) โปรดบันทึก taskId ที่ได้รับจากการสร้างงาน จากนั้นสืบค้นสถานะงานหรือรอรับข้อมูลผ่านเว็บฮุก

ความสามารถ

ฟีเจอร์ค่าที่รองรับ
ความละเอียดวิดีโอผลลัพธ์720p · 1080p
ความยาววิดีโอผลลัพธ์3–30 s
อัตราส่วนภาพauto, 16:9, 9:16, 1:1, 21:9
รูปภาพอ้างอิงรูปภาพสูงสุด 10 รูป
วิดีโออ้างอิงวิดีโอสูงสุด 5 ไฟล์
ไฟล์เสียงอ้างอิงไฟล์เสียงสูงสุด 3 ไฟล์
สื่ออ้างอิงทั้งหมดรวมกันไฟล์อ้างอิงรวมสูงสุด 15 ไฟล์
วิดีโออ้างอิง (Σ)30 วินาที
seedไม่รองรับ

ราคาและเครดิต

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

ตารางด้านล่างแสดงอัตราเครดิตที่หักต่อวินาที ไม่ใช่ค่าใช้จ่ายทั้งหมดของงาน โดยอัตราจะขึ้นอยู่กับโมเดล ความละเอียดของวิดีโอผลลัพธ์ และการใส่วิดีโออ้างอิงในโหมด Reference-to-Video คุณสามารถดูสูตรและตัวอย่างการคำนวณค่าใช้จ่ายทั้งหมดได้ที่ด้านล่างตารางนี้

ความละเอียดวิดีโอผลลัพธ์ไม่มีวิดีโออินพุตมีวิดีโออินพุต
720p13 เครดิต/วินาที8 เครดิต/วินาที
1080p20 เครดิต/วินาที13 เครดิต/วินาที
  • ไม่มีวิดีโออินพุต: ความยาววิดีโอผลลัพธ์ (วินาที) × อัตราค่าบริการแบบไม่มีวิดีโอ
  • เมื่อมีวิดีโออินพุต T คือความยาวรวมของวิดีโออ้างอิงที่เซิร์ฟเวอร์วัดเป็นวินาที ปัดจำนวนเครดิตสุดท้ายขึ้นเป็นจำนวนเต็ม ceil((duration + max(duration, T)) × rate)
  • การใช้อินพุตอ้างอิงเฉพาะรูปภาพหรือเสียงอย่างเดียวจะคิดในอัตราค่าบริการแบบไม่มีวิดีโอ ส่วนอัตราค่าบริการแบบมีวิดีโออ้างอิงจะใช้ในโหมด reference-to-video เมื่อมีการส่งวิดีโออ้างอิงเท่านั้น

ตัวอย่างการคำนวณค่าใช้จ่าย

วิดีโอแบบข้อความเป็นวิดีโอ 720p ความยาว 5 วินาที: 5 × 13 = 65 เครดิต

วิดีโอผลลัพธ์ 720p ความยาว 5 วินาที พร้อมวิดีโออ้างอิงความยาว 5 วินาที: (5 + 5) × 8 = 80 เครดิต

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

การยืนยันตัวตน

สร้างคีย์ API ได้ในแดชบอร์ด โดยระบบจะแสดงคีย์ตัวเต็มเพียงครั้งเดียวเท่านั้น โปรดเก็บรักษาไว้บนเซิร์ฟเวอร์ของคุณและส่งมาในรูปแบบ Bearer token ในทุกรีเควส

Base URL

https://api.seevio.ai
Authorization: Bearer sk_live_your_api_key
Content-Type: application/json

ตั้งค่าตัวแปรสภาพแวดล้อม SEEVIO_API_KEY ก่อนรันตัวอย่างเหล่านี้ ตัวอย่าง JavaScript จะทำงานบนเซิร์ฟเวอร์ด้วย Node.js ส่วนตัวอย่าง Python จะใช้แพ็กเกจ requests

เริ่มต้นด่วน

ส่งรีเควสแบบย่อนี้ บันทึก taskId ที่ได้รับ จากนั้นใช้ตัวอย่างการสืบค้นสถานะงานด้านล่าง โดยค่าเครดิตที่แสดงในการตอบกลับเมื่อสร้างงานจะเป็นจำนวนเครดิตที่ถูกสำรองไว้

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "kling-4-0",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "text-to-video"
  }
}'

ตัวอย่างการตอบกลับเมื่อสร้างงาน

หลังจากยอมรับคำขอข้างต้นแล้ว API จะส่งคืนการตอบกลับแบบ JSON นี้ โดย taskId คือรหัสประจำตัวงานที่ใช้สำหรับการสอบถามสถานะในภายหลัง และ credits คือจำนวนเครดิตที่สำรองไว้สำหรับงานนี้ การตอบกลับนี้เป็นการยืนยันการสร้างงานเท่านั้น ไม่ได้หมายความว่าวิดีโอพร้อมใช้งานแล้ว คุณต้องทำการดึงข้อมูลสถานะงาน (poll) หรือใช้ Webhook เพื่อรับผลลัพธ์วิดีโอ

{
  "taskId": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "credits": 65
}

สร้างงาน

POST https://api.seevio.ai/v1/videos/generations

ส่งออบเจกต์ JSON ที่ระบุ model และ input พร้อมระบุ callback_url (ไม่บังคับ) ทั้งนี้ โปรดระบุ ID ของโมเดลที่แสดงบนหน้านี้เสมอ หากละเว้นระบบจะเลือกเป็น seedance-2-0 โดยอัตโนมัติ

Request body

ฟิลด์ประเภทจำเป็นคำอธิบายและข้อจำกัด
model
stringใช่

รหัสโมเดล หากต้องการใช้ Kling 4.0 ให้ตั้งค่าฟิลด์นี้เป็น kling-4-0

callback_url
stringไม่ใช่

URL ปลายทาง HTTPS สาธารณะสำหรับการส่งคอลแบ็กแบบ POST เมื่อทำรายการสำเร็จหรือล้มเหลว ไม่อนุญาตให้ใช้เครือข่ายส่วนตัวและ localhost

ตัวอย่าง: https://example.com/webhooks/seevio
input
objectใช่

พารามิเตอร์อินพุต

พารามิเตอร์อินพุต

ฟิลด์ประเภทค่าเริ่มต้นคำอธิบายและข้อจำกัด
input.generation_typestringtext-to-videotext-to-video | image-to-video | reference-to-video
input.promptstring—ไม่เกิน 8000 อักขระ ละได้เฉพาะโหมดสร้างจากภาพ อ้างอิงไฟล์ตามประเภทและลำดับในอาร์เรย์ โดยเริ่มที่ @Image1, @Video1 และ @Audio1
input.durationinteger53–30 s
input.resolutionstring720p720p | 1080p
input.aspect_ratiostringขึ้นอยู่กับโหมด
ค่าที่รองรับauto16:99:161:121:9

เมื่อระบุอัตราส่วนคงที่ วิดีโอจะใช้อัตราส่วนนั้น หากละช่องนี้หรือเลือก auto โหมดข้อความจะใช้ 16:9 โหมดภาพจะใช้อัตราส่วนของเฟรมแรก และโหมดอ้างอิงจะกำหนดอัตราส่วนจากภาพหรือวิดีโออ้างอิง

input.image_urlsstring[][]เมื่อสร้างจากภาพ ให้ส่งเฟรมแรกก่อนและเพิ่มเฟรมสุดท้ายได้ โหมดอ้างอิงรองรับภาพสูงสุด 10 ภาพ
input.keyframe_urlsstring[][]เฟรมกลางเรียงตามลำดับการเล่นสำหรับโหมดสร้างจากภาพ สูงสุด 9 ภาพเมื่อไม่มีเฟรมสุดท้าย หรือ 8 ภาพเมื่อมีเฟรมสุดท้าย
input.video_urlsstring[][]ใช้เฉพาะโหมดอ้างอิง ส่ง URL แบบ HTTPS ของวิดีโอเพื่อใช้อ้างอิงท่าทางหรือการเคลื่อนกล้อง ได้สูงสุด 5 คลิป คลิปละ 2–30 วินาที ความยาวรวมไม่เกิน 30 วินาที
input.audio_urlsstring[][]ใช้เฉพาะโหมดอ้างอิง ส่ง URL แบบ HTTPS ของคลิปเสียงเพื่อใช้เป็นตัวอย่างเสียงพูดหรือเสียงประกอบ ได้สูงสุด 3 คลิป คลิปละ 5–30 วินาที
input.keep_original_soundbooleanfalseเมื่อ video_urls มีวิดีโออ้างอิง true จะเก็บเสียงต้นฉบับ ส่วน false (ค่าเริ่มต้น) จะสร้างเสียงใหม่ หากไม่มีวิดีโออ้างอิง ระบบจะไม่ใช้ค่านี้

การตอบกลับเมื่อสร้างงาน

HTTP 200 จะส่งคืน taskId (สตริง) และ credits (ตัวเลข) ซึ่งเป็นการยืนยันว่าระบบได้รับงานแล้ว ไม่ใช่หมายความว่างานเสร็จสิ้น จำนวนเครดิตด้านล่างนี้สอดคล้องกับการใช้งานเริ่มต้นด่วนแบบ 720p ความยาว 5 วินาที

{
  "taskId": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "credits": 65
}

โหมดการสร้างวิดีโอและตัวอย่าง

โปรดเปลี่ยน URL สื่อของ example.com ให้เป็นไฟล์ HTTPS สาธารณะของคุณเอง URL ตัวอย่างเหล่านี้มีไว้เพื่อแสดงโครงสร้างรีเควสเท่านั้น ไม่ใช่ไฟล์ตัวอย่างที่ดาวน์โหลดได้

ข้อความเป็นวิดีโอ (Text to video)

สร้างวิดีโอจากข้อความพรอมต์ โดย URL สื่อจะไม่ถูกส่งต่อในโหมดนี้

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "kling-4-0",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "text-to-video"
  }
}'

เฟรมแรก

ระบุรูปภาพหนึ่งรูปเป็นเฟรมแรก จากนั้นอธิบายการเคลื่อนไหวในพรอมต์ของคุณ

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "kling-4-0",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "image-to-video",
    "image_urls": [
      "https://example.com/first.jpg"
    ]
  }
}'

เฟรมแรกและเฟรมสุดท้าย

เมื่อสร้างจากภาพ ให้ส่งเฟรมแรกก่อนและเพิ่มเฟรมสุดท้ายได้ โหมดอ้างอิงรองรับภาพสูงสุด 10 ภาพ

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "kling-4-0",
  "input": {
    "prompt": "",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "image-to-video",
    "image_urls": [
      "https://example.com/first.jpg",
      "https://example.com/last.jpg"
    ]
  }
}'

ตัวอย่างคีย์เฟรม: กุหลาบผลิบาน

สร้างวิดีโอไทม์แลปส์ 8 วินาทีจากภาพถ่ายมุมเดียวกันสี่ภาพ ใน image_urls ให้ใส่ภาพดอกตูมและดอกที่บานเต็มที่เป็นเฟรมแรกและเฟรมสุดท้าย ใน keyframe_urls ให้ใส่ภาพกลีบที่เริ่มแย้มก่อน แล้วตามด้วยภาพดอกที่บานครึ่งหนึ่ง วิดีโอจะเปลี่ยนจากดอกตูมผ่านสองช่วงนี้จนบานเต็มที่ ลำดับในอาร์เรย์กำหนดลำดับภาพ ส่วนโมเดลจะกำหนดจังหวะเวลา

โปรดเปลี่ยน URL สื่อของ example.com ให้เป็นไฟล์ HTTPS สาธารณะของคุณเอง URL ตัวอย่างเหล่านี้มีไว้เพื่อแสดงโครงสร้างรีเควสเท่านั้น ไม่ใช่ไฟล์ตัวอย่างที่ดาวน์โหลดได้

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "kling-4-0",
  "input": {
    "prompt": "A time-lapse of a rose opening. Keep the camera still and the light soft as the petals unfold.",
    "duration": 8,
    "resolution": "720p",
    "generation_type": "image-to-video",
    "image_urls": [
      "https://example.com/rose-bud.jpg",
      "https://example.com/rose-full-bloom.jpg"
    ],
    "keyframe_urls": [
      "https://example.com/rose-opening.jpg",
      "https://example.com/rose-half-open.jpg"
    ]
  }
}'

อินพุตแบบมัลติโมดอล

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

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "kling-4-0",
  "input": {
    "prompt": "Animate @Image1 with the movement of @Video1 and ambience from @Audio1.",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "reference-to-video",
    "image_urls": [
      "https://example.com/character.jpg"
    ],
    "video_urls": [
      "https://example.com/motion.mp4"
    ],
    "audio_urls": [
      "https://example.com/surf.mp3"
    ],
    "keep_original_sound": false
  }
}'

สืบค้นสถานะงาน

GET https://api.seevio.ai/v1/tasks/{taskId}

แทนที่ ID ตัวอย่างด้วย taskId ที่ได้จากการสร้างงาน การสืบค้นจะแสดงเฉพาะงานที่เป็นของผู้ใช้คีย์ API นั้นๆ เท่านั้น หากเข้าถึงไม่ได้หรือไม่พบ ID จะส่งคืน HTTP 404

ในเบื้องต้นแนะนำให้สืบค้นสถานะทุกๆ 10–20 วินาที หากพบ HTTP 429 ให้เว้นระยะเวลาเพิ่มขึ้น และหยุดสืบค้นเมื่อสถานะเป็น completed หรือ failed แนะนำให้ใช้เว็บฮุกสำหรับสภาพแวดล้อมจริง ตัวอย่างโค้ดด้านล่างนี้แต่ละชุดจะทำการสืบค้นเพียงหนึ่งครั้ง

curl --fail-with-body https://api.seevio.ai/v1/tasks/3f2aK9mR7xQp4TnZ8bLc6YwH \
  -H "Authorization: Bearer $SEEVIO_API_KEY"
สถานะคำอธิบายและข้อจำกัด
queuedรับงานแล้วและกำลังรอคิวประมวลผล
generatingกำลังสร้างวิดีโอ
completedเสร็จสมบูรณ์ โปรดดาวน์โหลดไฟล์จาก data.results ก่อนหมดอายุ
failedล้มเหลว โปรดตรวจสอบรายละเอียดใน failed_reason และ billing_status
ฟิลด์ประเภทคำอธิบายและข้อจำกัด
idstring
รหัสระบุงาน ซึ่งก็คือ taskId จากผลการตอบกลับเมื่อสร้างงาน
created_atnumber
เวลาที่สร้างงานในรูปแบบ Unix timestamp (วินาที)
modelstring
ID โมเดลสาธารณะที่ใช้สำหรับงานนี้
billing_statusstring
reserved (สำรองเครดิตแล้ว), charged (หักเครดิตแล้ว), refunded (คืนเครดิตแล้ว) หรือ refund_failed (คืนเครดิตไม่สำเร็จ)
creditsnumber
เครดิตที่สำรองไว้สำหรับงานนี้ ค่านี้จะยังคงอยู่แม้จะมีการคืนเครดิตแล้ว โปรดตรวจสอบที่ billing_status เพื่อดูผลการเรียกเก็บเงินที่แท้จริง
failed_reasonstring | null
สาเหตุความล้มเหลวสำหรับงานที่ล้มเหลว หากงานไม่ล้มเหลวค่าจะเป็น null ผลการสืบค้นของงานที่ล้มเหลวจะไม่มีข้อมูลในฟิลด์ data
dataobject
จะแสดงเมื่อการสืบค้นงานไม่ล้มเหลว โดยประกอบด้วยรายละเอียดผลลัพธ์และขั้นตอนการประมวลผล
data.resultsstring[]
อาร์เรย์ URL ของวิดีโอ จะไม่มีข้อมูลจนกว่างานจะเสร็จสิ้นหรือหลังจากวิดีโอหมดอายุ
data.video_expires_atstring | null
เวลาหมดอายุของวิดีโอในรูปแบบ ISO 8601 หรือเป็น null ก่อนที่วิดีโอจะพร้อมใช้งาน โปรดบันทึกผลลัพธ์ก่อนถึงเวลานี้
data.last_frame_urlstring | null
URL ของเฟรมสุดท้ายเมื่อมีการร้องขอและพร้อมใช้งาน มิฉะนั้นจะเป็น null
data.processing_timenumber | null
ระยะเวลาในการประมวลผลงาน (วินาที) หากไม่มีข้อมูลจะแสดงเป็น null

งานเสร็จสิ้น: ผลลัพธ์การสอบถามพร้อมข้อมูลวิดีโอ

เมื่อสถานะที่ส่งกลับมาเป็น status=completed แสดงว่าการสร้างวิดีโอเสร็จสมบูรณ์แล้ว คุณสามารถดึง URL ของวิดีโอได้จาก data.results และต้องดาวน์โหลดวิดีโอก่อนถึงเวลาที่ระบุใน data.video_expires_at ส่วน billing_status=charged ระบุว่าระบบได้หักเครดิตที่สำรองไว้เรียบร้อยแล้ว

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652800,
  "model": "kling-4-0",
  "is_draft": false,
  "draft_task_id": null,
  "status": "completed",
  "billing_status": "charged",
  "credits": 65,
  "failed_reason": null,
  "data": {
    "results": [
      "https://cdn.seevio.ai/api/videos/example.mp4"
    ],
    "video_expires_at": "2026-09-07T00:00:00Z",
    "last_frame_url": null,
    "processing_time": 48
  }
}

งานล้มเหลว: ผลลัพธ์การสอบถามพร้อมสาเหตุและการคืนเครดิต

เมื่อสถานะที่ส่งกลับมาเป็น status=failed แสดงว่าการสร้างวิดีโอไม่สำเร็จ ให้ดูสาเหตุที่ล้มเหลวได้ใน failed_reason และตรวจสอบผลการคืนเครดิตได้จาก billing_status สำหรับตัวอย่างนี้ refunded หมายถึงระบบได้คืนเครดิตให้แล้ว ส่วน credits จะยังคงแสดงจำนวนเดิมที่เคยสำรองไว้ และจะไม่มีการส่งกลับข้อมูลใน data

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652800,
  "model": "kling-4-0",
  "is_draft": false,
  "draft_task_id": null,
  "status": "failed",
  "billing_status": "refunded",
  "credits": 65,
  "failed_reason": "provider_failed"
}

เว็บฮุก

ตั้งค่า callback_url ในรีเควสการสร้างงานเพื่อรับ JSON POST เมื่อสร้างงานสำเร็จหรือล้มเหลว ระบบปลายทางของคุณต้องส่งการตอบกลับ 2xx กลับมาภายใน 15 วินาที หากส่งไม่สำเร็จระบบจะพยายามส่งซ้ำ โปรดออกแบบระบบรับข้อมูลให้รองรับการทำงานแบบ Idempotent โดยตรวจสอบจาก ID ของงาน

ปลายทางคอลแบ็ก (Callback endpoint) ของคุณต้องรองรับคำขอแบบ POST ที่ส่งข้อมูลมาในรูปแบบ JSON (Content-Type: application/json)

สร้างงานพร้อมกำหนดคอลแบ็ก

curl --fail-with-body https://api.seevio.ai/v1/videos/generations \
  -H "Authorization: Bearer $SEEVIO_API_KEY" \
  -H "Content-Type: application/json" \
  --data '{
  "model": "kling-4-0",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "text-to-video"
  },
  "callback_url": "https://example.com/webhooks/seevio"
}'

งานเสร็จสิ้น: ข้อมูล Callback เมื่อทำรายการสำเร็จ

เมื่อสร้างวิดีโอสำเร็จ Callback จะส่งค่า status=completed ให้ใช้ id เพื่อระบุงาน และใช้ data.results เพื่อดึง URL ของวิดีโอ โปรดดาวน์โหลดและบันทึกไฟล์วิดีโอก่อนถึงเวลาที่ระบุใน data.video_expires_at

created_at คือเวลาสร้างเหตุการณ์ ส่วน task_created_at คือเวลาสร้างงาน ทั้งคู่เป็นวินาที Unix ตัวอย่างแสดงฟิลด์ที่แนะนำ โดยข้อมูลตอบกลับอาจมีฟิลด์เพิ่มเติม

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652848,
  "model": "kling-4-0",
  "status": "completed",
  "task_created_at": 1788652800,
  "billing_status": "charged",
  "credits": 65,
  "failed_reason": null,
  "data": {
    "results": [
      "https://cdn.seevio.ai/api/videos/example.mp4"
    ],
    "video_expires_at": "2026-09-07T00:00:00Z",
    "last_frame_url": null,
    "processing_time": 48
  }
}

งานล้มเหลว: ข้อมูล Callback เมื่อทำรายการไม่สำเร็จ

หากการสร้างวิดีโอล้มเหลว Callback จะส่งค่า status=failed ให้ใช้ id เพื่อระบุงาน ใช้ failed_reason เพื่อดูสาเหตุความล้มเหลว และใช้ credits_refunded เพื่อดูจำนวนเครดิตที่คืนให้

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652848,
  "model": "kling-4-0",
  "status": "failed",
  "task_created_at": 1788652800,
  "billing_status": "refunded",
  "credits": 65,
  "failed_reason": "provider_failed",
  "credits_refunded": 65
}

ตัวอย่างระบบรับข้อมูล

export async function POST(request: Request) {
  const callbackData = await request.json();

  if (callbackData.status === "completed") {
    const videoUrls = callbackData.data.results;
    // Save the video URLs and mark this task as completed in your application.
    console.log(callbackData.id, videoUrls);
  }

  if (callbackData.status === "failed") {
    const { failed_reason, credits_refunded } = callbackData;
    // Record the failure reason and refunded credits for this task.
    console.error(callbackData.id, failed_reason, credits_refunded);
  }

  return new Response(null, { status: 200 });
}

ตัวอย่างการใช้งาน Next.js นี้จะอ่านข้อมูล JSON จาก Callback และจัดการกับสถานะงานที่เสร็จสิ้นหรือล้มเหลวโดยตรง ทั้งนี้ ควรเพิ่มระบบจัดเก็บข้อมูล (Persistence) และระบบป้องกันงานซ้ำ (Task-ID deduplication) สำหรับแอปพลิเคชันของคุณ รวมถึงจัดคิวงานที่ใช้เวลาประมวลผลนานก่อนที่จะตอบรับ (Acknowledge) Callback

ข้อกำหนดและข้อจำกัดของสื่อ

  • URL ของสื่อและคอลแบ็กทั้งหมดต้องเป็น URL HTTPS สาธารณะ หลีกเลี่ยงการใช้ localhost, IP ส่วนตัว และไฟล์ที่ต้องใช้คุกกี้หรือการเข้าสู่ระบบ URL ของวิดีโอ/เสียงอ้างอิงต้องเป็นลิงก์ที่เข้าถึงและอ่านไฟล์สื่อได้โดยตรง
  • วิดีโอแต่ละไฟล์ต้องมีขนาดไม่เกิน 100 MB
  • ไฟล์เสียงแต่ละไฟล์ต้องมีขนาดไม่เกิน 15 MB
  • ไฟล์อ้างอิงรวมสูงสุด 15 ไฟล์