models

Kling v1.5

Markdown · JSON

Kling v1.5

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

เกี่ยวกับโมเดล

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

Kling v1.5 เป็นรุ่นหนึ่งของโมเดลสร้างวิดีโอ Kling ที่มีความสามารถสร้างวิดีโอจากภาพตามแค็ตตาล็อกโมเดลที่ระบุไว้ในเอกสาร ภาพนิ่งที่ส่งให้เป็นจุดเริ่มต้นทางภาพ ส่วนบรีฟที่เขียนไว้จะอธิบายว่าฉากควรเคลื่อนไหวอย่างไร ใช้พัฒนาท่าทางของตัวละคร วัตถุที่เคลื่อนที่ หรือสภาพแวดล้อมที่เปลี่ยนแปลงจากภาพที่มีองค์ประกอบเหมาะกับช็อตอยู่แล้ว

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

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

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

รายการการสร้างวิดีโอจากภาพในเอกสารระบุตัวเลือกระยะเวลา 5 และ 10 วินาที โหมด std และ pro และกรอบภาพแนวนอน แนวตั้ง และสี่เหลี่ยมจัตุรัส เลือกการตั้งค่าที่มีให้ในขั้นตอนที่เลือกก่อนประเมินผลลัพธ์ เก็บโหมด ระยะเวลา และรูปทรงเฟรมที่ใช้จริงไว้กับภาพต้นฉบับและพรอมป์ต์เมื่อเปรียบเทียบช็อตตัวเลือก

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

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

เก็บคลิปที่สร้างขึ้นทั้งคลิปพร้อมวัสดุต้นทาง ตรวจดูช่วงเปิด การกระทำหลัก และตอนจบเป็นลำดับภาพเดียวกัน แล้วปรับแก้โดยยึดความคลาดเคลื่อนที่เจาะจง บันทึกอย่างเช่น “ตัวละครหันหนีหน้าต่าง” ช่วยให้บรีฟครั้งถัดไปมีข้อแก้ไขที่ชัดเจน พร้อมรักษาส่วนอื่นของฉากไว้

Ailoot Ultra · Video POST /v1/videos kling-v1-5

kling-v1-5

Kling /kling-v1-5

เริ่มต้น

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

อินพุตที่รองรับ
ข้อความ · รูปภาพ
ผลลัพธ์
วิดีโอ

ใช้งานได้ใน Ailoot · อินพุตและเมธอด

Ailoot Ultra · Video POST /v1/videos
ขาเข้า
text, image
ขาออก
video
ฟิลด์ประเภทข้อกำหนดค่าและข้อจำกัดค่าเริ่มต้น
ฟิลด์modelประเภทstringข้อกำหนดจำเป็นค่าและข้อจำกัด
kling-v1-5
เงื่อนไข: ใช้ตัวเลือกระบุเส้นทางของ Ailoot นี้ตามที่ระบุไว้ทุกตัวอักษร
ค่าเริ่มต้น—
ฟิลด์modeประเภทstringข้อกำหนดไม่บังคับค่าและข้อจำกัด
std, pro
เงื่อนไข: ใช้ฟิลด์และตัวเลือกที่ระบุไว้ในเอกสารของโมเดลที่เลือก หากไม่ได้กำหนดค่าสำหรับฟิลด์ที่ไม่บังคับ ให้ละฟิลด์นั้นไว้
ค่าเริ่มต้นstd
ฟิลด์aspect_ratioประเภทstringข้อกำหนดไม่บังคับค่าและข้อจำกัด
16:9, 9:16, 1:1
เงื่อนไข: ใช้ฟิลด์และตัวเลือกที่ระบุไว้ในเอกสารของโมเดลที่เลือก หากไม่ได้กำหนดค่าสำหรับฟิลด์ที่ไม่บังคับ ให้ละฟิลด์นั้นไว้
ค่าเริ่มต้น—
ฟิลด์durationประเภทintegerข้อกำหนดไม่บังคับค่าและข้อจำกัด
5, 10
เงื่อนไข: ใช้ฟิลด์และตัวเลือกที่ระบุไว้ในเอกสารของโมเดลที่เลือก หากไม่ได้กำหนดค่าสำหรับฟิลด์ที่ไม่บังคับ ให้ละฟิลด์นั้นไว้
ค่าเริ่มต้น—
ฟิลด์end_imageประเภทstringข้อกำหนดไม่บังคับค่าและข้อจำกัด
เงื่อนไข: ใช้ฟิลด์และตัวเลือกที่ระบุไว้ในเอกสารของโมเดลที่เลือก หากไม่ได้กำหนดค่าสำหรับฟิลด์ที่ไม่บังคับ ให้ละฟิลด์นั้นไว้
ค่าเริ่มต้น—
ฟิลด์imageประเภทstring or array<string>ข้อกำหนดจำเป็นค่าและข้อจำกัด
เงื่อนไข: ระบุ URL รูปภาพของคุณที่เข้าถึงได้จริง ระบบยอมรับรายการเฉพาะเมื่อสคีมาพารามิเตอร์ระบุว่าเป็นอาร์เรย์
ค่าเริ่มต้น—
ฟิลด์negative_promptประเภทstringข้อกำหนดไม่บังคับค่าและข้อจำกัด
เงื่อนไข: ใช้ฟิลด์และตัวเลือกที่ระบุไว้ในเอกสารของโมเดลที่เลือก หากไม่ได้กำหนดค่าสำหรับฟิลด์ที่ไม่บังคับ ให้ละฟิลด์นั้นไว้
ค่าเริ่มต้น—
ฟิลด์promptประเภทstringข้อกำหนดจำเป็นค่าและข้อจำกัด
เงื่อนไข: ใช้ฟิลด์และตัวเลือกที่ระบุไว้ในเอกสารของโมเดลที่เลือก หากไม่ได้กำหนดค่าสำหรับฟิลด์ที่ไม่บังคับ ให้ละฟิลด์นั้นไว้
ค่าเริ่มต้น—
พารามิเตอร์และวงจรการทำงานของเมธอด
พารามิเตอร์ข้อกำหนด
พารามิเตอร์content_typeข้อกำหนดapplication/json
พารามิเตอร์requiredข้อกำหนดmodel, prompt, image
พารามิเตอร์optionalข้อกำหนดmode, aspect_ratio, duration, end_image, negative_prompt
พารามิเตอร์material_typesข้อกำหนดtext, image
พารามิเตอร์conditionsข้อกำหนดใช้ตัวเลือกระบุเส้นทางของ Ailoot นี้ตามที่ระบุไว้ทุกตัวอักษร, ใช้ฟิลด์และตัวเลือกที่ระบุไว้ในเอกสารของโมเดลที่เลือก หากไม่ได้กำหนดค่าสำหรับฟิลด์ที่ไม่บังคับ ให้ละฟิลด์นั้นไว้, ใช้ฟิลด์และตัวเลือกที่ระบุไว้ในเอกสารของโมเดลที่เลือก หากไม่ได้กำหนดค่าสำหรับฟิลด์ที่ไม่บังคับ ให้ละฟิลด์นั้นไว้, ใช้ฟิลด์และตัวเลือกที่ระบุไว้ในเอกสารของโมเดลที่เลือก หากไม่ได้กำหนดค่าสำหรับฟิลด์ที่ไม่บังคับ ให้ละฟิลด์นั้นไว้, ใช้ฟิลด์และตัวเลือกที่ระบุไว้ในเอกสารของโมเดลที่เลือก หากไม่ได้กำหนดค่าสำหรับฟิลด์ที่ไม่บังคับ ให้ละฟิลด์นั้นไว้, ระบุ URL รูปภาพของคุณที่เข้าถึงได้จริง ระบบยอมรับรายการเฉพาะเมื่อสคีมาพารามิเตอร์ระบุว่าเป็นอาร์เรย์, ใช้ฟิลด์และตัวเลือกที่ระบุไว้ในเอกสารของโมเดลที่เลือก หากไม่ได้กำหนดค่าสำหรับฟิลด์ที่ไม่บังคับ ให้ละฟิลด์นั้นไว้, ใช้ฟิลด์และตัวเลือกที่ระบุไว้ในเอกสารของโมเดลที่เลือก หากไม่ได้กำหนดค่าสำหรับฟิลด์ที่ไม่บังคับ ให้ละฟิลด์นั้นไว้

ชื่ออื่นของเมธอด: /v1/videos/generations

วงจรการทำงาน: submit_once_poll_original

GET /v1/videos/{request_id}

GET /v1/videos/generations/{request_id}

GET /v1/videos/{request_id}/content

GET /v1/media/assets

GET /v1/media/assets/{asset_id}

ราคา

วิธีคำนวณค่าบริการสุดท้าย

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

ข้อมูลอัตราราคาไม่ได้เพิ่มตัวเลือกคำขอ พารามิเตอร์ที่รองรับระบุไว้สำหรับเมธอดที่เลือก

โหมดรวดเร็ว
ไม่ได้ระบุ เมื่อเลือกโหมดรวดเร็ว
โหมดยืดหยุ่น
ไม่ได้ระบุ เมื่อเลือกโหมด flex
ระดับการใช้เหตุผลสูงสุด
ไม่ได้ระบุ เมื่อใช้การปรับตามค่าเริ่มต้น (default) สำหรับระดับการใช้เหตุผลสูงสุด

อัตราประมาณการเพื่อเปรียบเทียบ

ราคาตามการตั้งค่า

เทียบค่าบริการแต่ละรายการกับเงื่อนไขที่แสดง เลือกใช้อัตราเดียวสำหรับแต่ละชุดการตั้งค่าที่เป็นตัวเลือกทดแทนกัน

การตั้งค่าตารางอัตราค่าบริการปริมาณคาดการณ์ค่าบริการ
การตั้งค่าอัตราค่าบริการโทเคนพื้นฐานตารางอัตราค่าบริการอัตราพื้นฐานปริมาณคาดการณ์—ค่าบริการ
ขาเข้า · โทเค็นอินพุต · ประมาณการเพื่อเปรียบเทียบเท่านั้น — / 1K โทเค็น
ขาออก · โทเค็นเอาต์พุต · ประมาณการเพื่อเปรียบเทียบเท่านั้น — / 1K โทเค็น
ขาเข้า · การอ่านแคช · ประมาณการเพื่อเปรียบเทียบเท่านั้น — / 1K โทเค็น
ขาเข้า · การเขียนแคช · ประมาณการเพื่อเปรียบเทียบเท่านั้น — / 1K โทเค็น
ขาเข้า · การเขียนแคช, 1 ชั่วโมง · ประมาณการเพื่อเปรียบเทียบเท่านั้น — / 1K โทเค็น
การตั้งค่าต้นทุนการสร้างโดยประมาณตารางอัตราค่าบริการ—ปริมาณคาดการณ์ค่าประมาณสำหรับการสร้างหนึ่งครั้งค่าบริการ
ขาออก · ค่าใช้จ่ายในการสร้างโดยประมาณ · ประมาณการเพื่อเปรียบเทียบเท่านั้น $6 ประมาณการก่อนสร้าง

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

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

ตัวอย่างคำขอ

Ailoot Ultra · Video

curl · สร้างครั้งเดียวและเก็บผลลัพธ์ไว้ให้ครบถ้วนอ่านข้อมูลงานต้นฉบับบันทึกชิ้นงานที่เสร็จสมบูรณ์และเป็นของคุณทุกรายการ
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
: "${AILOOT_IMAGE_URL:?Set an actual customer material or documented value}"
export AILOOT_IMAGE_URL
python3 - <<'PY_REQUEST'
import json,os
from pathlib import Path
p=json.loads('{"model": "kling-v1-5", "prompt": "A cat is walking on grass.", "image": "YOUR_ACCESSIBLE_IMAGE_URL"}')
p['image']=os.environ['AILOOT_IMAGE_URL']
Path("request.json").write_text(json.dumps(p,ensure_ascii=False))
PY_REQUEST
curl --fail-with-body --silent --show-error https://api.ailoot.ai/v1/videos \
  -H "Authorization: Bearer $AILOOT_API_KEY" -H 'Content-Type: application/json' \
  --data-binary @request.json -D response-headers.txt -o result.json
# Submit once. Retain the complete result, original identifiers and every response header.
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
python3 - <<'PY_STATUS'
import json,os,subprocess
from pathlib import Path
from urllib.parse import urljoin,urlsplit
r=json.loads(Path("result.json").read_text())
u=urljoin("https://api.ailoot.ai",r["polling_url"])
p=urlsplit(u)
if p.scheme!="https" or p.netloc!="api.ailoot.ai" or p.username or p.password:
    raise SystemExit("Unexpected returned polling URL; preserve the response")
subprocess.run(["curl","--fail-with-body","--silent","--show-error",u,"-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"],"-D","status-headers.txt","-o","status.json"],check=True)
# Read this same original polling_url again while pending.
# Preserve unknown/result_pending_check; do not repeat creation.
PY_STATUS
set -eu
: "${AILOOT_API_KEY:?Set your Ailoot API key}"
export AILOOT_API_KEY
python3 - <<'PY_ASSETS'
import json,os,subprocess
from pathlib import Path
from urllib.parse import urljoin,urlsplit
r=json.loads(Path("status.json").read_text())
roles={}
def visit(v,path=""):
    if isinstance(v,dict):
        for k,x in v.items(): visit(x,path+"/"+k)
    elif isinstance(v,list):
        for i,x in enumerate(v): visit(x,path+"/"+str(i))
    elif isinstance(v,str):
        u=urljoin("https://api.ailoot.ai",v); p=urlsplit(u)
        if p.scheme=="https" and p.netloc=="api.ailoot.ai" and not p.username and not p.password and p.path.startswith("/v1/media/assets/") and p.path.endswith("/content"):
            roles.setdefault(u,[]).append(path)
visit(r)
if not roles: raise SystemExit("No completed owned assets; retain the original status")
manifest=[]
for i,(u,paths) in enumerate(roles.items()):
    target=Path(f"asset-{i}.bin")
    subprocess.run(["curl","--fail-with-body","--silent","--show-error",u,"-H","Authorization: Bearer "+os.environ["AILOOT_API_KEY"],"-o",str(target)],check=True)
    raw=target.read_bytes()
    if not raw: raise SystemExit("Empty asset; retain original status and metadata")
    ext="glb" if raw[:4]==b"glTF" else "png" if raw[:8]==b"\x89PNG\r\n\x1a\n" else "jpg" if raw[:3]==b"\xff\xd8\xff" else "webp" if raw[:4]==b"RIFF" and raw[8:12]==b"WEBP" else "mp4" if raw[4:8]==b"ftyp" else "bin"
    name=f"asset-{i}.{ext}"
    if target.name!=name: target.rename(name)
    manifest.append({"file":name,"response_paths":paths,"bytes":len(raw)})
Path("asset-manifest.json").write_text(json.dumps(manifest,indent=2))
print("Saved",len(manifest),"unique owned assets; every response role retained")
PY_ASSETS

รับและบันทึกผลลัพธ์

Ailoot Ultra · Video

  • GET /v1/videos/{request_id}
  • GET /v1/videos/generations/{request_id}
  • GET /v1/videos/{request_id}/content
  • GET /v1/media/assets
  • GET /v1/media/assets/{asset_id}
เก็บผลลัพธ์ที่เสร็จสมบูรณ์ทั้งหมด

บันทึกวิดีโอที่สร้างเสร็จหรือไฟล์ที่ส่งกลับมาทุกไฟล์ และดึงไฟล์สื่อจากทุก URL ที่ส่งกลับมาจริง

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

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

เก็บ id งานหรือการดำเนินการสาธารณะที่ส่งกลับและส่วนหัวทั้งหมด อ่านเฉพาะงานเดิม สถานะ unknown หรือ result_pending_check ไม่อนุญาตให้สร้างอีกครั้ง

ฟิลด์การตอบกลับ
ฟิลด์ประเภท
ฟิลด์idประเภทstring
ฟิลด์polling_urlประเภทstring
ฟิลด์provider_task_idประเภทstring
ฟิลด์task_idประเภทstring
ฟิลด์statusประเภทstring
ฟิลด์video_urlประเภทstring
ข้อผิดพลาดและขั้นตอนถัดไป
การตอบกลับเงื่อนไขขั้นตอนถัดไป
การตอบกลับ400 · invalid_request_errorเงื่อนไขฟิลด์ที่จำเป็น ตัวเลือกโมเดล ชนิดข้อมูล หรือรูปแบบการแทนข้อมูลขาเข้าไม่ถูกต้องขั้นตอนถัดไปตรวจสอบรายละเอียดการตรวจสอบความถูกต้องที่ส่งกลับมาก่อนเตรียมคำขอแยกต่างหาก
การตอบกลับเงื่อนไขไม่ทราบคำขอหรือผลลัพธ์ต้นฉบับ หรือจำเป็นต้องตรวจสอบขั้นตอนถัดไปเก็บตัวระบุและส่วนหัวเดิมไว้ อ่านเฉพาะข้อมูลสถานะหรือรายการในคลังที่รองรับ ห้ามส่งคำขอสร้างซ้ำ

ชื่ออื่น

ชื่ออื่นของโมเดล

Ailoot Ultra kling-v1-5

ชื่อพาธเมธอดอื่น

/v1/videos/generations

ID ที่เกี่ยวข้องสำหรับเรียกใช้โมเดล

kling-v1-5

FAQ · Kling v1.5
มีอินพุตและผลลัพธ์ใดบ้าง?

POST /v1/videos · kling-v1-5: text, image → video

คำขอใช้ฟิลด์ใดบ้าง?

POST /v1/videos · kling-v1-5: model, mode, aspect_ratio, duration, end_image, image, negative_prompt, prompt

รายละเอียดเพิ่มเติม

เชื่อม Ailoot กับ Claude Code, OpenCode, Hermes หรือแอปของคุณ

บริษัทและพอร์ตโฟลิโอโครงการของบริษัท

บริษัทและพอร์ตโฟลิโอโครงการของบริษัท: ลูกค้าหลายล้านราย; ยอดขายระดับหลายพันล้านต่อเดือน.

ซื้อโทเคนพร้อมส่วนลด

ส่วนลดสมาชิกสำหรับงานประจำ โค้ดโปรโมชั่นลดซื้อโทเคนสูงสุด 50%

สมาชิก
เลือกแพ็กเกจมีส่วนลดสำหรับคำขอประจำ
โค้ดลดสูงสุด 50%
ใส่โค้ดขณะซื้อ ราคาคำนวณใหม่ตามโปรโมชั่นที่ใช้
รายจ่ายในประวัติ
เก็บโมเดล โทเคน และยอดสำหรับทุกคำขอ

เลือกสมาชิก · ดูราคาโมเดล

เชื่อม API กับผลิตภัณฑ์ ที่คุณขาย

SaaS แอป และบอต ตามข้อเสนอและสัญญาอนุญาต Ailoot หากขายต่อให้ขอใบอนุญาตรีเซลเลอร์

แอปเชิงพาณิชย์
ใส่การสร้างข้อความ ภาพ วิดีโอ และเสียงในฟีเจอร์เสียเงินของบริการคุณ
ใบอนุญาตรีเซลเลอร์
ส่งคำอธิบายโครงการและรูปแบบการเข้าถึง ขอเงื่อนไขใช้และขายต่อเป็นลายลักษณ์อักษร
เอกสารบนเว็บไซต์
อ่านข้อเสนอ สัญญาอนุญาต และนโยบายประมวลผลข้อมูลก่อนเชื่อมได้

ขอใบอนุญาตขายต่อ · ข้อเสนอและสัญญาอนุญาต