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

เอกสารประกอบ

พัฒนาด้วย Seevio API

เพิ่มฟีเจอร์สร้างวิดีโอลงในผลิตภัณฑ์ของคุณ เพียงเลือกโมเดล ส่งรีเควส และรับผลลัพธ์ผ่านการดึงข้อมูลตามรอบ (Polling) หรือเว็บฮุก

เลือกโมเดล

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

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

สร้างคีย์ 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

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

ตัวอย่างนี้เป็นการสร้างวิดีโอ 720p ความยาว 5 วินาทีด้วย Seedance 2.5 คุณสามารถดูโหมดการสร้างวิดีโอและข้อจำกัดของพารามิเตอร์ทั้งหมดได้ที่หน้าคู่มืออ้างอิงของแต่ละโมเดล

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

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

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

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

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

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": "seedance-2-5",
  "status": "completed",
  "billing_status": "charged",
  "credits": 100,
  "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": "seedance-2-5",
  "status": "failed",
  "billing_status": "refunded",
  "credits": 100,
  "failed_reason": "provider_failed"
}

เว็บฮุก

สำหรับการผสานระบบในสภาพแวดล้อมจริง (Production) ให้ระบุ callback_url เมื่อสร้างงาน คู่มืออ้างอิงของทุกโมเดลจะมีข้อมูล Payload ของคอลแบ็กและตัวอย่างระบบรับข้อมูลให้พร้อมสรรพ

ตั้งค่า 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": "seedance-2-5",
  "input": {
    "prompt": "A cat surfing at sunset, cinematic lighting",
    "duration": 5,
    "resolution": "720p",
    "generation_type": "text-to-video",
    "aspect_ratio": "16:9",
    "generate_audio": true
  },
  "callback_url": "https://example.com/webhooks/seevio"
}'

ข้อมูล Payload ของเว็บฮุกจะแตกต่างจากผลลัพธ์การสืบค้นสถานะงาน: เว็บฮุกจะไม่มีฟิลด์ billing_status และ credits รายละเอียดความล้มเหลวจะอยู่ใน data.failed_reason และ data.credits_refunded ส่วนฟิลด์ created_at ของเว็บฮุกจะเป็นเวลาที่เกิดเหตุการณ์ในรูปแบบ Unix timestamp (วินาที)

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

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

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652800,
  "model": "seedance-2-5",
  "status": "completed",
  "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 เพื่อระบุงาน ใช้ data.failed_reason เพื่อดูสาเหตุความล้มเหลว และใช้ data.credits_refunded เพื่อดูจำนวนเครดิตที่คืนให้

{
  "id": "3f2aK9mR7xQp4TnZ8bLc6YwH",
  "created_at": 1788652800,
  "model": "seedance-2-5",
  "status": "failed",
  "data": {
    "failed_reason": "provider_failed",
    "credits_refunded": 100
  }
}

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

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.data;
    // 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

ข้อผิดพลาด

ข้อผิดพลาด HTTP จะมีออบเจ็กต์ error ซึ่งประกอบด้วย code และ message ทั้งนี้งานที่ระบบรับไปเรียบร้อยแล้วก็ยังอาจล้มเหลวในภายหลังได้ โปรดสืบค้นสถานะงานหรือจัดการผ่านคอลแบ็กความล้มเหลว

{
  "error": {
    "code": "invalid_request",
    "message": "input.prompt is required."
  }
}
HTTPฟิลด์วิธีแก้ไข
400invalid_request
แก้ไขรูปแบบ JSON, พรอมต์ที่ขาดหายไป, ช่วงค่าพารามิเตอร์ หรือ URL ของสื่อให้ถูกต้องก่อนลองใหม่อีกครั้ง
401invalid_api_key
ตรวจสอบ Bearer token และสถานะการใช้งานของคีย์ API
402insufficient_credits
เติมเครดิตหรือลดค่าใช้จ่ายของงานลง ผลการตอบกลับอาจระบุจำนวนเครดิตที่ต้องการและจำนวนเครดิตที่มีอยู่จริง
403forbidden
โปรดตรวจสอบข้อจำกัดระดับบัญชีที่ระบุไว้ในข้อความแจ้งข้อผิดพลาด
404not_found
ตรวจสอบ ID ของงาน และตรวจสอบว่าคีย์ดังกล่าวเป็นของผู้ใช้ที่เป็นเจ้าของงานนั้นๆ หรือไม่
429rate_limited
รอจนกว่าจะครบกำหนดเวลาใน Retry-After ก่อนส่งรีเควสใหม่อีกครั้ง
500internal_error
ตรวจสอบข้อความแสดงข้อผิดพลาดและบันทึกการใช้งาน API ควรระมัดระวังในการส่งคำขอซ้ำ เนื่องจากการส่งรีเควสสร้างงานใหม่อาจเป็นการสร้างงานที่มีค่าใช้จ่ายเพิ่มขึ้น