เริ่มต้นอย่างรวดเร็ว
นี่คือเอกสารอ้างอิง API สำหรับการโต้ตอบกับ Meshy แบบโปรแกรมได้
ใช้ผู้ช่วยเขียนโค้ด AI อยู่หรือไม่? ดูหน้า การเชื่อมต่อ AI ของเรา — ติดตั้ง Meshy MCP server เพื่อเข้าถึงการเรียกใช้เครื่องมือจาก Claude Code, Cursor, Windsurf และเครื่องมืออื่นๆ ที่รองรับ MCP หรือชี้เอเจนต์แชทธรรมดาไปที่ llms.txt
Meshy API มีอินเทอร์เฟซที่เรียบง่ายสำหรับสร้างโมเดล 3D และเท็กซ์เจอร์จาก prompt ข้อความและรูปภาพ ทำตามคู่มือนี้เพื่อเริ่มต้นได้อย่างรวดเร็ว
สร้าง API คีย์
สร้าง API คีย์ในหน้าการตั้งค่า API ที่นี่ ซึ่งคุณจะใช้เพื่อ ยืนยันตัวตนคำขอของคุณ อย่างปลอดภัย รูปแบบของ API คีย์คือ msy-<random-string>

เมื่อคุณสร้าง API คีย์แล้ว ให้เก็บไว้ในตำแหน่งที่ปลอดภัย
API คีย์โหมดทดสอบ
ระหว่างการพัฒนาและการทดสอบ คุณสามารถใช้ API คีย์โหมดทดสอบของเราเพื่อสำรวจ API โดยไม่ใช้เครดิตของคุณ:
msy_dummy_api_key_for_test_mode_12345678
API คีย์พิเศษนี้มีคุณลักษณะดังต่อไปนี้:
- สามารถใช้ส่งคำขอไปยังเอนด์พอยต์ Meshy API ทั้งหมดได้
- จะไม่มีการใช้เครดิตเมื่อใช้คีย์นี้
- คำขอที่ถูกต้องทั้งหมดจะส่งคืนผลลัพธ์งานตัวอย่างเดียวกัน ไม่ว่าพารามิเตอร์อินพุตจะเป็นอะไร
- โครงสร้างข้อมูลการตอบกลับจะตรงกับ API เวอร์ชันใช้งานจริงทุกประการ
- เหมาะอย่างยิ่งสำหรับการทดสอบการเชื่อมต่อ API ของคุณก่อนเปลี่ยนไปใช้ API คีย์จริงของคุณ
API คีย์โหมดทดสอบมีไว้สำหรับการพัฒนาเท่านั้น สำหรับการใช้งานจริง โปรดใช้ API คีย์ของคุณเอง
ส่งคำขอ API "ข้อความเป็น 3D" แรกของคุณ
ในตัวอย่างนี้ เราจะสร้างโมเดล 3D จาก prompt ข้อความโดยใช้ text-to-3d เอนด์พอยต์ กระบวนการนี้มีสองขั้นตอน: ขั้นพรีวิวและขั้นปรับละเอียด ในขั้นพรีวิว ระบบจะสร้างเมชพื้นฐานโดยไม่ใส่เท็กซ์เจอร์ ทำให้คุณสามารถประเมินจีออเมทรีได้ ในขั้นปรับละเอียด เมชพรีวิวจะถูกใส่เท็กซ์เจอร์ตาม prompt ข้อความ
เราจะแสดงวิธีส่งคำขอเหล่านี้ในสคริปต์ Python
พรีวิว
Meshy มีชุด REST API เอนด์พอยต์ คุณสามารถใช้ร่วมกับ HTTP client ใดก็ได้ตามที่คุณเลือก ไม่ว่าคุณจะเรียก API ใด API คีย์จะถูกส่งเป็น header ที่ชื่อว่า Authorization เสมอ โปรดอย่าลืม export API คีย์ของคุณเป็น environment variable ที่ชื่อ MESHY_API_KEY ก่อนใช้สคริปต์นี้
พารามิเตอร์หลักสำหรับคำขอพรีวิวคือ mode ซึ่งจะเป็น "preview" เสมอ และ prompt ซึ่งเป็นคำอธิบายของโมเดลที่คุณต้องการ ในตัวอย่างนี้ เรายังระบุ should_remesh ด้วย แต่เป็นตัวเลือกที่ไม่บังคับ
api_request.py
import requests
import os
import time
headers = {
"Authorization": f"Bearer {os.environ['MESHY_API_KEY']}"
}
# 1. Generate a preview model and get the task ID
generate_preview_request = {
"mode": "preview",
"prompt": "a monster mask",
"should_remesh": True,
}
generate_preview_response = requests.post(
"https://api.meshy.ai/openapi/v2/text-to-3d",
headers=headers,
json=generate_preview_request,
)
generate_preview_response.raise_for_status()
preview_task_id = generate_preview_response.json()["result"]
print("Preview task created. Task ID:", preview_task_id)
นี่เป็นการเรียก API พรีวิวเสร็จสมบูรณ์
โปรดทราบว่า Meshy API ใช้โมเดลการทำงานแบบอะซิงโครนัส ซึ่งหมายความว่าเมื่อคุณสร้างงาน API เอนด์พอยต์จะส่งคืนเพียง ID ของงานเท่านั้น จากนั้นคุณต้อง poll เอนด์พอยต์สถานะงานด้วย ID นี้เพื่อตรวจสอบว่างานเสร็จสิ้นแล้วหรือไม่
api_request.py
# 2. Poll the preview task status until it's finished
preview_task = None
while True:
preview_task_response = requests.get(
f"https://api.meshy.ai/openapi/v2/text-to-3d/{preview_task_id}",
headers=headers,
)
preview_task_response.raise_for_status()
preview_task = preview_task_response.json()
if preview_task["status"] == "SUCCEEDED":
print("Preview task finished.")
break
print("Preview task status:", preview_task["status"], "| Progress:", preview_task["progress"], "| Retrying in 5 seconds...")
time.sleep(5)
เมื่องานเสร็จสิ้นแล้ว คุณจะสามารถเข้าถึง URL ของโมเดลจากการตอบกลับได้ มาดาวน์โหลดโมเดลจากฟิลด์ model_urls ในการตอบกลับกัน
api_request.py
# 3. Download the preview model in glb format
preview_model_url = preview_task["model_urls"]["glb"]
preview_model_response = requests.get(preview_model_url)
preview_model_response.raise_for_status()
with open("preview_model.glb", "wb") as f:
f.write(preview_model_response.content)
print("Preview model downloaded.")
หากทุกอย่างทำงานได้ตามที่คาดไว้จนถึงตอนนี้ preview_model.glb ของคุณควรมีลักษณะคล้ายกับนี้ แต่จะไม่ตรงกันทุกประการ เนื่องจากความสุ่มภายในของ pipeline AI

ปรับละเอียด
ไปต่อที่ขั้นปรับละเอียดกัน ในการเริ่มคำขอปรับละเอียด ให้ระบุ ID งานพรีวิวเป็นพารามิเตอร์อินพุต
api_request.py
# 4. Generate a refined model and get the task ID
generate_refined_request = {
"mode": "refine",
"preview_task_id": preview_task_id,
}
generate_refined_response = requests.post(
"https://api.meshy.ai/openapi/v2/text-to-3d",
headers=headers,
json=generate_refined_request,
)
generate_refined_response.raise_for_status()
refined_task_id = generate_refined_response.json()["result"]
print("Refined task created. Task ID:", refined_task_id)
# 5. Poll the refined task status until it's finished
refined_task = None
while True:
refined_task_response = requests.get(
f"https://api.meshy.ai/openapi/v2/text-to-3d/{refined_task_id}",
headers=headers,
)
refined_task_response.raise_for_status()
refined_task = refined_task_response.json()
if refined_task["status"] == "SUCCEEDED":
print("Refined task finished.")
break
print("Refined task status:", refined_task["status"], "| Progress:", refined_task["progress"], "| Retrying in 5 seconds...")
time.sleep(5)
# 6. Download the refined model in glb format
refined_model_url = refined_task["model_urls"]["glb"]
refined_model_response = requests.get(refined_model_url)
refined_model_response.raise_for_status()
with open("refined_model.glb", "wb") as f:
f.write(refined_model_response.content)
print("Refined model downloaded.")
ตอนนี้โมเดล 3D refined_model.glb ถูกใส่เท็กซ์เจอร์อย่างสมบูรณ์แล้ว ✨

รวมทั้งหมดเข้าด้วยกัน
นี่คือโค้ดฉบับสมบูรณ์สำหรับการใช้ API ข้อความเป็น 3D
api_request.py
import requests
import os
import time
headers = {
"Authorization": f"Bearer {os.environ['MESHY_API_KEY']}"
}
# 1. Generate a preview model and get the task ID
generate_preview_request = {
"mode": "preview",
"prompt": "a monster mask",
"should_remesh": True,
}
generate_preview_response = requests.post(
"https://api.meshy.ai/openapi/v2/text-to-3d",
headers=headers,
json=generate_preview_request,
)
generate_preview_response.raise_for_status()
preview_task_id = generate_preview_response.json()["result"]
print("Preview task created. Task ID:", preview_task_id)
# 2. Poll the preview task status until it's finished
preview_task = None
while True:
preview_task_response = requests.get(
f"https://api.meshy.ai/openapi/v2/text-to-3d/{preview_task_id}",
headers=headers,
)
preview_task_response.raise_for_status()
preview_task = preview_task_response.json()
if preview_task["status"] == "SUCCEEDED":
print("Preview task finished.")
break
print("Preview task status:", preview_task["status"], "| Progress:", preview_task["progress"], "| Retrying in 5 seconds...")
time.sleep(5)
# 3. Download the preview model in glb format
preview_model_url = preview_task["model_urls"]["glb"]
preview_model_response = requests.get(preview_model_url)
preview_model_response.raise_for_status()
with open("preview_model.glb", "wb") as f:
f.write(preview_model_response.content)
print("Preview model downloaded.")
# 4. Generate a refined model and get the task ID
generate_refined_request = {
"mode": "refine",
"preview_task_id": preview_task_id,
}
generate_refined_response = requests.post(
"https://api.meshy.ai/openapi/v2/text-to-3d",
headers=headers,
json=generate_refined_request,
)
generate_refined_response.raise_for_status()
refined_task_id = generate_refined_response.json()["result"]
print("Refined task created. Task ID:", refined_task_id)
# 5. Poll the refined task status until it's finished
refined_task = None
while True:
refined_task_response = requests.get(
f"https://api.meshy.ai/openapi/v2/text-to-3d/{refined_task_id}",
headers=headers,
)
refined_task_response.raise_for_status()
refined_task = refined_task_response.json()
if refined_task["status"] == "SUCCEEDED":
print("Refined task finished.")
break
print("Refined task status:", refined_task["status"], "| Progress:", refined_task["progress"], "| Retrying in 5 seconds...")
time.sleep(5)
# 6. Download the refined model in glb format
refined_model_url = refined_task["model_urls"]["glb"]
refined_model_response = requests.get(refined_model_url)
refined_model_response.raise_for_status()
with open("refined_model.glb", "wb") as f:
f.write(refined_model_response.content)
print("Refined model downloaded.")
คัดลอกและวางโค้ดลงในสคริปต์ Python แล้วรัน
Run the script
python api_request.py
คุณควรเห็นเอาต์พุตใน terminal ของคุณดังต่อไปนี้:

ขั้นตอนถัดไป
- อยากลองใช้เอนด์พอยต์โดยไม่ต้องเขียนโค้ดก่อนหรือไม่? ใช้ API Playground เพื่อกำหนดค่าและรันคำขอ จากนั้นคัดลอก snippet ที่สร้างขึ้น
- คุณสามารถดูเอกสารอ้างอิง API ฉบับสมบูรณ์ได้ในส่วน "API เอนด์พอยต์" ซึ่งให้ข้อมูลโดยละเอียดเกี่ยวกับ API แต่ละรายการ
- สำรวจรายละเอียดเกี่ยวกับ ราคา, Rate Limits และวิธีแก้ไขปัญหา ข้อผิดพลาดทั่วไป
- อย่าลืมตรวจสอบ บันทึกการเปลี่ยนแปลง ของเราเป็นประจำเพื่อดูอัปเดตและการแก้ไขบั๊ก
- มี feedback หรือกำลังเจอปัญหาอยู่หรือไม่? เข้าร่วมคอมมูนิตี้ Discord ของเรา - เรายินดีรับฟังจากคุณ!