วิเคราะห์ความสามารถในการพิมพ์ API
วิเคราะห์โมเดล 3D สำหรับความสามารถในการพิมพ์ FDM — ความแน่นหนา, ปริมาตร, รู, ขอบ non-manifold, และหน้าเสื่อม.
สร้างงานวิเคราะห์ความสามารถในการพิมพ์
เอนด์พอยต์นี้สร้างงานวิเคราะห์ความสามารถในการพิมพ์ใหม่ งานนี้จะประเมินโมเดล 3D และรายงานเมตริกความสามารถในการพิมพ์ของมัน
หากงานที่ป้อนเข้ามามีความสามารถในการพิมพ์ที่แคชไว้แล้ว งานที่ส่งคืนจะพร้อมใช้งานทันทีและการ GET ครั้งแรกจะคืนผลการวิเคราะห์โดยไม่ต้องผ่านตัวประมวลผล
พารามิเตอร์
ต้องการเพียงหนึ่งใน input_task_id หรือ model_url เท่านั้น หากให้ทั้งสอง input_task_id จะมีลำดับความสำคัญ
- Name
- input_task_id
- Type
- string
- จำเป็น
- Description
ID ของงานที่สำเร็จที่คุณเป็นเจ้าของ ประเภทงานที่รองรับ: รูปภาพเป็น 3D, หลายรูปเป็น 3D, ข้อความเป็น 3D, รีเมช, และ รีเท็กซ์เจอร์ งานต้องใช้ Meshy 6 หรือใหม่กว่า (รวมถึง Meshy 7) และต้องมีสถานะเป็น
SUCCEEDED
- Name
- model_url
- Type
- string
- จำเป็น
- Description
URL ของโมเดล 3D ที่จะวิเคราะห์ รูปแบบที่รองรับ:
.glb,.gltf,.obj,.fbx,.stlขนาดไฟล์สูงสุด: 100 MB ต้องใช้http,https, หรือdata:URL (data URLs ข้ามการตรวจสอบส่วนขยาย)
การส่งคืน
คุณสมบัติ result ของการตอบสนองจะมี id ของงานวิเคราะห์ความสามารถในการพิมพ์ที่สร้างขึ้นใหม่
โหมดความล้มเหลว
- Name
400 - Bad Request- Description
คำขอไม่เป็นที่ยอมรับ สาเหตุทั่วไป:
- พารามิเตอร์ที่ขาดหาย: ไม่ได้ให้ทั้ง
input_task_idหรือmodel_url - UUID ไม่ถูกต้อง:
input_task_idไม่ใช่ UUID ที่ถูกต้อง - URL โมเดลไม่ถูกต้อง:
model_urlไม่ถูกต้อง ใช้สคีมที่ไม่รองรับ หรือมีส่วนขยายไฟล์ที่ไม่รองรับ - ไฟล์โมเดลใหญ่เกินไป: เนื้อหา
model_urlเกิน 100 MB - งานไม่สำเร็จ: งานที่อ้างอิงยังคงรอดำเนินการ อยู่ใน progress หรือล้มเหลว
- พารามิเตอร์ที่ขาดหาย: ไม่ได้ให้ทั้ง
- Name
401 - Unauthorized- Description
การยืนยันตัวตนล้มเหลว กรุณาตรวจสอบ API คีย์ของคุณ
- Name
403 - Forbidden- Description
งานมีอยู่แต่เป็นของผู้ใช้อื่น
- Name
404 - Not Found- Description
สาเหตุทั่วไป:
- งานไม่มีอยู่หรือถูกลบไปแล้ว
- งานใช้โมเดลที่เก่ากว่า Meshy 6 หรือ mode ของมันไม่สร้าง 3D asset
- ไฟล์โมเดลพื้นฐานไม่มีอยู่ในที่เก็บข้อมูลอีกต่อไป
- Name
429 - Too Many Requests- Description
คุณเกินโควต้างานที่รอดำเนินการหรือการจำกัดอัตรา
Request
# Analyze an existing task
curl https://api.meshy.ai/openapi/v1/print/analyze \
-X POST \
-H "Authorization: Bearer ${YOUR_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
"input_task_id": "018a210d-8ba4-705c-b111-1f1776f7f578"
}'
# Or analyze a model URL directly
curl https://api.meshy.ai/openapi/v1/print/analyze \
-X POST \
-H "Authorization: Bearer ${YOUR_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
"model_url": "https://example.com/model.glb"
}'
Response
{
"result": "0193bfc5-ee4f-73f8-8525-44b398884ce9"
}
ดึงงานวิเคราะห์ความสามารถในการพิมพ์
เอนด์พอยต์นี้ใช้ดึงงานวิเคราะห์ความสามารถในการพิมพ์โดยใช้ ID
พารามิเตอร์
- Name
- id
- Type
- path
- Description
ID ของงานวิเคราะห์ความสามารถในการพิมพ์ที่ต้องการดึง
ผลลัพธ์
วัตถุ Analyze Printability Task Object ฟิลด์ ความสามารถในการพิมพ์ จะเป็น null จนกว่างานจะถึงสถานะ SUCCEEDED
Request
curl https://api.meshy.ai/openapi/v1/print/analyze/a43b5c6d-7e8f-901a-234b-567c890d1e2f \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response
{
"id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
"type": "print-analyze",
"status": "SUCCEEDED",
"progress": 100,
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000001000,
"expires_at": 1715725401000,
"task_error": null,
"printability": {
"_version": "v1",
"status": "warning",
"issue_count": 1,
"error_count": 0,
"warning_count": 1,
"metrics": {
"is_watertight": true,
"volume": 1.316167354292668,
"non_manifold_edges": 0,
"degenerate_faces": 43242,
"holes": 0
},
"evaluated_at": 1700000001000
},
"consumed_credits": 0
}
ลบงานวิเคราะห์ความสามารถในการพิมพ์
เอนด์พอยต์นี้จะลบงานวิเคราะห์ความสามารถในการพิมพ์และผลลัพธ์ที่แคชไว้อย่างถาวร การกระทำนี้ไม่สามารถย้อนกลับได้
พารามิเตอร์ของเส้นทาง
- Name
- id
- Type
- path
- Description
ID ของงานวิเคราะห์ความสามารถในการพิมพ์ที่ต้องการลบ
ผลลัพธ์ที่ได้
ส่งคืน 200 OK เมื่อสำเร็จ
Request
curl --request DELETE \
--url https://api.meshy.ai/openapi/v1/print/analyze/a43b5c6d-7e8f-901a-234b-567c890d1e2f \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response
// Returns 200 Ok on success.
รายการงานวิเคราะห์ความสามารถในการพิมพ์
เอนด์พอยต์นี้ช่วยให้คุณสามารถดึงรายการงานวิเคราะห์ความสามารถในการพิมพ์ได้
พารามิเตอร์
คุณสมบัติเสริม
- Name
- page_num
- Type
- integer
- Description
หมายเลขหน้าสำหรับการแบ่งหน้า เริ่มต้นและค่าเริ่มต้นคือ
1
- Name
- page_size
- Type
- integer
- Description
ขีดจำกัดขนาดหน้า ค่าเริ่มต้นคือ
10รายการ อนุญาตสูงสุดคือ50รายการ
- Name
- sort_by
- Type
- string
- Description
ฟิลด์สำหรับการจัดเรียง ค่าใช้ได้:
+created_at: จัดเรียงตามเวลาที่สร้างในลำดับจากน้อยไปมาก-created_at: จัดเรียงตามเวลาที่สร้างในลำดับจากมากไปน้อย
การส่งคืน
ส่งคืนรายการที่แบ่งหน้า วัตถุงานวิเคราะห์ความสามารถในการพิมพ์
Request
curl https://api.meshy.ai/openapi/v1/print/analyze?page_size=10 \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response
[
{
"id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
"type": "print-analyze",
"status": "SUCCEEDED",
"progress": 100,
"preceding_tasks": 0,
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000001000,
"expires_at": 1715725401000,
"task_error": null,
"printability": {
"_version": "v1",
"status": "warning",
"issue_count": 1,
"error_count": 0,
"warning_count": 1,
"metrics": {
"is_watertight": true,
"volume": 1.316167354292668,
"non_manifold_edges": 0,
"degenerate_faces": 43242,
"holes": 0
},
"evaluated_at": 1700000001000
},
"consumed_credits": 0
}
]
สตรีมงานวิเคราะห์ความสามารถในการพิมพ์
เอนด์พอยต์นี้สตรีมการอัปเดตแบบเรียลไทม์สำหรับงานวิเคราะห์ความสามารถในการพิมพ์โดยใช้ Server-Sent Events (SSE)
พารามิเตอร์
- Name
- id
- Type
- path
- Description
ตัวระบุเฉพาะสำหรับงานวิเคราะห์ความสามารถในการพิมพ์ที่จะสตรีม
ผลลัพธ์ที่ได้
ส่งคืนสตรีมของ วัตถุงานวิเคราะห์ความสามารถในการพิมพ์ เป็น Server-Sent Events
สำหรับงาน PENDING หรือ IN_PROGRESS สตรีมการตอบสนองจะรวมเฉพาะฟิลด์ progress และ status ที่จำเป็นเท่านั้น บล็อก ความสามารถในการพิมพ์ จะถูกส่งเมื่อถึงสถานะ SUCCEEDED เท่านั้น
Request
curl -N https://api.meshy.ai/openapi/v1/print/analyze/a43b5c6d-7e8f-901a-234b-567c890d1e2f/stream \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response Stream
// Error event example
event: error
data: {
"status_code": 404,
"message": "Task not found"
}
// Message event examples illustrate task progress.
// For PENDING or IN_PROGRESS tasks, the response stream will not include all fields.
event: message
data: {
"id": "a43b5c6d-7e8f-901a-234b-567c890d1e2f",
"progress": 0,
"status": "PENDING"
}
event: message
data: {
"id": "a43b5c6d-7e8f-901a-234b-567c890d1e2f",
"type": "print-analyze",
"status": "SUCCEEDED",
"progress": 100,
"preceding_tasks": 0,
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000001000,
"expires_at": 1715725401000,
"task_error": null,
"printability": {
"_version": "v1",
"status": "warning",
"issue_count": 1,
"error_count": 0,
"warning_count": 1,
"metrics": {
"is_watertight": true,
"volume": 1.316167354292668,
"non_manifold_edges": 0,
"degenerate_faces": 43242,
"holes": 0
},
"evaluated_at": 1700000001000
},
"consumed_credits": 0
}
วัตถุงานวิเคราะห์ความสามารถในการพิมพ์
- Name
- id
- Type
- string
- Description
ตัวระบุเฉพาะสำหรับงานนี้ แม้ว่าเราจะใช้ UUID ที่สามารถจัดเรียงตาม k-sortable สำหรับ id ของงานเป็นรายละเอียดการใช้งาน คุณไม่ควรตั้งสมมติฐานใดๆ เกี่ยวกับรูปแบบของ id
- Name
- type
- Type
- string
- Description
ประเภทของงานวิเคราะห์ความสามารถในการพิมพ์ ค่านี้คือ
print-analyze
- Name
- status
- Type
- string
- Description
สถานะของงาน ค่าที่เป็นไปได้คือหนึ่งใน
PENDING,IN_PROGRESS,SUCCEEDED,FAILED,CANCELED
- Name
- progress
- Type
- integer
- Description
ความก้าวหน้าของงาน หากงานยังไม่เริ่มต้น คุณสมบัตินี้จะเป็น
0เมื่อใดที่งานสำเร็จแล้ว ค่านี้จะกลายเป็น100
- Name
- preceding_tasks
- Type
- integer
- Description
จำนวนของงานที่มาก่อน
ค่าของฟิลด์นี้จะมีความหมายเฉพาะเมื่อสถานะของงานคือ
PENDING
- Name
- created_at
- Type
- timestamp
- Description
ไทม์สแตมป์ของเวลาที่สร้างงานในหน่วยมิลลิวินาที
- Name
- started_at
- Type
- timestamp
- Description
ไทม์สแตมป์ของเวลาที่เริ่มงานในหน่วยมิลลิวินาที หากงานยังไม่เริ่มต้น คุณสมบัตินี้จะเป็น
0
- Name
- finished_at
- Type
- timestamp
- Description
ไทม์สแตมป์ของเวลาที่งานเสร็จสิ้นในหน่วยมิลลิวินาที หากงานยังไม่เสร็จสิ้น คุณสมบัตินี้จะเป็น
0
- Name
- expires_at
- Type
- timestamp
- Description
ไทม์สแตมป์ของเวลาที่ผลลัพธ์ของงานจะหมดอายุจากระบบในหน่วยมิลลิวินาที
0หากงานยังไม่เสร็จสิ้น
- Name
- task_error
- Type
- object
- Description
ข้อมูลข้อผิดพลาดหากงานล้มเหลว คุณสมบัตินี้จะเป็น
nullหากงานไม่ล้มเหลว ดู ข้อผิดพลาด สำหรับรายละเอียดเพิ่มเติม- Name
message- Type
- string
- Description
ข้อความข้อผิดพลาดที่อธิบายว่าเกิดอะไรขึ้น
- Name
- printability
- Type
- object
- Description
ผลการประเมินความสามารถในการพิมพ์
nullจนกว่างานจะถึงSUCCEEDED- Name
_version- Type
- string
- Description
เวอร์ชันของสคีมาผลลัพธ์ความสามารถในการพิมพ์ ปัจจุบันคือ
v1
- Name
status- Type
- string
- Description
สถานะโดยรวม หนึ่งใน:
healthy: ไม่มีข้อผิดพลาดและไม่มีคำเตือนwarning: มีคำเตือนอย่างน้อยหนึ่งคำเตือน ไม่มีข้อผิดพลาดerror: มีข้อผิดพลาดอย่างน้อยหนึ่งข้อผิดพลาดunknown: ไม่สามารถวิเคราะห์โมเดลได้
- Name
issue_count- Type
- integer
- Description
จำนวนรวมของปัญหา เท่ากับ
error_count + warning_count
- Name
error_count- Type
- integer
- Description
จำนวนปัญหาระดับข้อผิดพลาด ข้อผิดพลาดจะเกิดขึ้นเมื่อโมเดล ไม่ปิดสนิท มี ปริมาตรไม่เป็นบวก หรือมี ขอบ non-manifold
- Name
warning_count- Type
- integer
- Description
จำนวนปัญหาระดับคำเตือน คำเตือนจะเกิดขึ้นเมื่อโมเดลมี หน้าเสื่อม หรือ รู
- Name
metrics- Type
- object
- Description
เมตริกจีออเมทรีดิบที่ส่งคืนโดยผู้ประเมิน
- Name
is_watertight- Type
- boolean
- Description
trueเมื่อเมชไม่มีขอบเขต (เช่น ปิดสนิท)
- Name
volume- Type
- number
- Description
ปริมาตรของโมเดลในหน่วยลูกบาศก์เมตร
- Name
non_manifold_edges- Type
- integer
- Description
จำนวนของขอบ non-manifold
- Name
degenerate_faces- Type
- integer
- Description
จำนวนของหน้าเสื่อม (หน้าที่มีพื้นที่เป็นศูนย์หรือไม่ถูกต้อง)
- Name
holes- Type
- integer
- Description
จำนวนของรู (วงรอบขอบเขต) ในเมช
- Name
evaluated_at- Type
- timestamp
- Description
ไทม์สแตมป์ของเวลาที่การวิเคราะห์ถูกคำนวณในหน่วยมิลลิวินาทีตั้งแต่ยุค
- Name
- consumed_credits
- Type
- integer
- Description
เสมอ
0เอนด์พอยต์นี้ฟรี
The Analyze Printability Task Object
{
"id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
"type": "print-analyze",
"status": "SUCCEEDED",
"progress": 100,
"preceding_tasks": 0,
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000001000,
"expires_at": 1715725401000,
"task_error": null,
"printability": {
"_version": "v1",
"status": "warning",
"issue_count": 1,
"error_count": 0,
"warning_count": 1,
"metrics": {
"is_watertight": true,
"volume": 1.316167354292668,
"non_manifold_edges": 0,
"degenerate_faces": 43242,
"holes": 0
},
"evaluated_at": 1700000001000
},
"consumed_credits": 0
}