क्विकस्टार्ट

यह Meshy के साथ प्रोग्रामेटिक रूप से इंटरैक्ट करने के लिए API संदर्भ है।


Meshy API टेक्स्ट prompt और इमेज से 3D मॉडल और टेक्सचर जनरेट करने के लिए एक सरल इंटरफ़ेस प्रदान करता है। जल्दी शुरू करने के लिए इस गाइड का पालन करें।

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 इंटीग्रेशन को टेस्ट करने के लिए परफेक्ट

अपना पहला "टेक्स्ट से 3D" API अनुरोध करें

इस उदाहरण में, हम text-to-3d एंडपॉइंट का उपयोग करके टेक्स्ट prompt से 3D मॉडल जनरेट करेंगे। प्रक्रिया में दो चरण शामिल हैं: प्रीव्यू चरण और रिफाइन चरण। प्रीव्यू चरण में, बिना टेक्सचर लागू किए एक बेस मेश जनरेट किया जाता है, जिससे आप ज्यामिति का मूल्यांकन कर सकते हैं। रिफाइन चरण में, प्रीव्यू मेश को टेक्स्ट prompt के आधार पर टेक्सचर किया जाता है।

हम आपको दिखाएंगे कि Python स्क्रिप्ट में ये अनुरोध कैसे करें।

प्रीव्यू

Meshy REST API एंडपॉइंट का एक सेट प्रदान करता है। आप उन्हें अपनी पसंद के किसी भी HTTP क्लाइंट के साथ उपयोग कर सकते हैं। आप चाहे कोई भी API कॉल करें, API की हमेशा Authorization नामक हेडर के रूप में पास की जाती है। कृपया इस स्क्रिप्ट का उपयोग करने से पहले अपनी API की को MESHY_API_KEY नामक environment variable के रूप में export करना याद रखें।

प्रीव्यू अनुरोध के मुख्य पैरामीटर 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 लौटाता है। इसके बाद आपको इस 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)

एक बार टास्क पूरा हो जाने पर, आप इसकी प्रतिक्रिया से मॉडल URLs तक पहुंच सकेंगे। आइए प्रतिक्रिया में 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 इससे मिलता-जुलता दिखना चाहिए। AI पाइपलाइन में अंतर्निहित randomness के कारण यह बिल्कुल समान नहीं होगा।

प्रीव्यू मॉडल

रिफाइन

आइए रिफाइन चरण पर आगे बढ़ें। रिफाइन अनुरोध शुरू करने के लिए, प्रीव्यू टास्क 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 अब पूरी तरह टेक्सचर किया गया है ✨।

रिफाइंड मॉडल

इसे एक साथ रखें

टेक्स्ट से 3D API का उपयोग करने के लिए पूरा कोड यहां है।

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

आपको अपने टर्मिनल में निम्न जैसा आउटपुट दिखना चाहिए:

स्क्रिप्ट रन करें

अगले चरण

  • पहले कोड लिखे बिना एंडपॉइंट आज़माना पसंद करेंगे? अनुरोध को कॉन्फ़िगर और रन करने के लिए API Playground का उपयोग करें, फिर जनरेट किया गया स्निपेट कॉपी करें।
  • आप पूरा API संदर्भ "API एंडपॉइंट" सेक्शन में पा सकते हैं, जो प्रत्येक API के बारे में विस्तृत जानकारी प्रदान करता है।
  • मूल्य निर्धारण, Rate Limits, और सामान्य एरर का समस्या निवारण कैसे करें, इसके बारे में विवरण एक्सप्लोर करें।
  • अपडेट और बग फिक्स के लिए हमारे चेंजलॉग को नियमित रूप से देखना न भूलें।
  • फीडबैक है या समस्याओं का सामना कर रहे हैं? हमारे Discord समुदाय से जुड़ें - हमें आपसे सुनना अच्छा लगेगा!