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 คุณสามารถดูสูตรและตัวอย่างการคำนวณค่าใช้จ่ายทั้งหมดได้ที่ด้านล่างตารางนี้
| ความละเอียดวิดีโอผลลัพธ์ | ไม่มีวิดีโออินพุต | มีวิดีโออินพุต |
|---|---|---|
720p | 13 เครดิต/วินาที | 8 เครดิต/วินาที |
1080p | 20 เครดิต/วินาที | 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.aiAuthorization: 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_type | string | text-to-video | text-to-video | image-to-video | reference-to-video |
input.prompt | string | — | ไม่เกิน 8000 อักขระ ละได้เฉพาะโหมดสร้างจากภาพ อ้างอิงไฟล์ตามประเภทและลำดับในอาร์เรย์ โดยเริ่มที่ @Image1, @Video1 และ @Audio1 |
input.duration | integer | 5 | 3–30 s |
input.resolution | string | 720p | 720p | 1080p |
input.aspect_ratio | string | ขึ้นอยู่กับโหมด | ค่าที่รองรับ auto16:99:161:121:9เมื่อระบุอัตราส่วนคงที่ วิดีโอจะใช้อัตราส่วนนั้น หากละช่องนี้หรือเลือก auto โหมดข้อความจะใช้ 16:9 โหมดภาพจะใช้อัตราส่วนของเฟรมแรก และโหมดอ้างอิงจะกำหนดอัตราส่วนจากภาพหรือวิดีโออ้างอิง |
input.image_urls | string[] | [] | เมื่อสร้างจากภาพ ให้ส่งเฟรมแรกก่อนและเพิ่มเฟรมสุดท้ายได้ โหมดอ้างอิงรองรับภาพสูงสุด 10 ภาพ |
input.keyframe_urls | string[] | [] | เฟรมกลางเรียงตามลำดับการเล่นสำหรับโหมดสร้างจากภาพ สูงสุด 9 ภาพเมื่อไม่มีเฟรมสุดท้าย หรือ 8 ภาพเมื่อมีเฟรมสุดท้าย |
input.video_urls | string[] | [] | ใช้เฉพาะโหมดอ้างอิง ส่ง URL แบบ HTTPS ของวิดีโอเพื่อใช้อ้างอิงท่าทางหรือการเคลื่อนกล้อง ได้สูงสุด 5 คลิป คลิปละ 2–30 วินาที ความยาวรวมไม่เกิน 30 วินาที |
input.audio_urls | string[] | [] | ใช้เฉพาะโหมดอ้างอิง ส่ง URL แบบ HTTPS ของคลิปเสียงเพื่อใช้เป็นตัวอย่างเสียงพูดหรือเสียงประกอบ ได้สูงสุด 3 คลิป คลิปละ 5–30 วินาที |
input.keep_original_sound | boolean | false | เมื่อ video_urls มีวิดีโออ้างอิง true จะเก็บเสียงต้นฉบับ ส่วน false (ค่าเริ่มต้น) จะสร้างเสียงใหม่ หากไม่มีวิดีโออ้างอิง ระบบจะไม่ใช้ค่านี้ |
การตอบกลับเมื่อสร้างงาน
HTTP 200 จะส่งคืน taskId (สตริง) และ credits (ตัวเลข) ซึ่งเป็นการยืนยันว่าระบบได้รับงานแล้ว ไม่ใช่หมายความว่างานเสร็จสิ้น จำนวนเครดิตด้านล่างนี้สอดคล้องกับการใช้งานเริ่มต้นด่วนแบบ 720p ความยาว 5 วินาที
{
"taskId": "3f2aK9mR7xQp4TnZ8bLc6YwH",
"credits": 65
}โหมดการสร้างวิดีโอและตัวอย่าง
ข้อความเป็นวิดีโอ (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 |
| ฟิลด์ | ประเภท | คำอธิบายและข้อจำกัด |
|---|---|---|
id | string | รหัสระบุงาน ซึ่งก็คือ taskId จากผลการตอบกลับเมื่อสร้างงาน |
created_at | number | เวลาที่สร้างงานในรูปแบบ Unix timestamp (วินาที) |
model | string | ID โมเดลสาธารณะที่ใช้สำหรับงานนี้ |
billing_status | string | reserved (สำรองเครดิตแล้ว), charged (หักเครดิตแล้ว), refunded (คืนเครดิตแล้ว) หรือ refund_failed (คืนเครดิตไม่สำเร็จ) |
credits | number | เครดิตที่สำรองไว้สำหรับงานนี้ ค่านี้จะยังคงอยู่แม้จะมีการคืนเครดิตแล้ว โปรดตรวจสอบที่ billing_status เพื่อดูผลการเรียกเก็บเงินที่แท้จริง |
failed_reason | string | null | สาเหตุความล้มเหลวสำหรับงานที่ล้มเหลว หากงานไม่ล้มเหลวค่าจะเป็น null ผลการสืบค้นของงานที่ล้มเหลวจะไม่มีข้อมูลในฟิลด์ data |
data | object | จะแสดงเมื่อการสืบค้นงานไม่ล้มเหลว โดยประกอบด้วยรายละเอียดผลลัพธ์และขั้นตอนการประมวลผล |
data.results | string[] | อาร์เรย์ URL ของวิดีโอ จะไม่มีข้อมูลจนกว่างานจะเสร็จสิ้นหรือหลังจากวิดีโอหมดอายุ |
data.video_expires_at | string | null | เวลาหมดอายุของวิดีโอในรูปแบบ ISO 8601 หรือเป็น null ก่อนที่วิดีโอจะพร้อมใช้งาน โปรดบันทึกผลลัพธ์ก่อนถึงเวลานี้ |
data.last_frame_url | string | null | URL ของเฟรมสุดท้ายเมื่อมีการร้องขอและพร้อมใช้งาน มิฉะนั้นจะเป็น null |
data.processing_time | number | 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 ไฟล์