เริ่มต้นอย่างรวดเร็ว

นี่คือเอกสารอ้างอิง API สำหรับการโต้ตอบกับ Meshy แบบโปรแกรมได้


Meshy API มีอินเทอร์เฟซที่เรียบง่ายสำหรับสร้างโมเดล 3D และเท็กซ์เจอร์จาก prompt ข้อความและรูปภาพ ทำตามคู่มือนี้เพื่อเริ่มต้นได้อย่างรวดเร็ว

สร้าง API คีย์

สร้าง API คีย์ในหน้าการตั้งค่า API ที่นี่ ซึ่งคุณจะใช้เพื่อ ยืนยันตัวตนคำขอของคุณ อย่างปลอดภัย รูปแบบของ API คีย์คือ msy-<random-string>

สร้าง API คีย์

เมื่อคุณสร้าง API คีย์แล้ว ให้เก็บไว้ในตำแหน่งที่ปลอดภัย

API คีย์โหมดทดสอบ

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

msy_dummy_api_key_for_test_mode_12345678

API คีย์พิเศษนี้มีคุณลักษณะดังต่อไปนี้:

  • สามารถใช้ส่งคำขอไปยังเอนด์พอยต์ Meshy 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 ของเรา - เรายินดีรับฟังจากคุณ!