Hızlı başlangıç
Bu, Meshy ile programatik olarak etkileşim kurmak için API referansıdır.
Bir AI kodlama asistanı mı kullanıyorsunuz? AI entegrasyonu sayfamıza bakın — Claude Code, Cursor, Windsurf ve diğer MCP uyumlu araçlardan tool-calling erişimi için Meshy MCP server'ı kurun veya düz bir sohbet aracısını llms.txt dosyasına yönlendirin.
Meshy API, metin prompt'larından ve görsellerden 3D modeller ve dokular üretmek için basit bir arayüz sağlar. Hızlıca başlamak için bu kılavuzu izleyin.
Bir API Anahtarı Oluşturun
API ayarları sayfasında buradan bir API anahtarı oluşturun; bunu isteklerinizin kimliğini güvenli bir şekilde doğrulamak için kullanacaksınız. API anahtarının biçimi msy-<random-string> şeklindedir.

Bir API anahtarı oluşturduktan sonra, onu güvenli bir konumda bir yerde saklayın.
Test Modu API Anahtarı
Geliştirme ve test sırasında, kredilerinizi tüketmeden API'yi keşfetmek için test modu API anahtarımızı kullanabilirsiniz:
msy_dummy_api_key_for_test_mode_12345678
Bu özel API anahtarı aşağıdaki özelliklere sahiptir:
- Tüm Meshy API uç noktalarına istek yapmak için kullanılabilir
- Bu anahtar kullanılırken kredi tüketilmez
- Tüm geçerli istekler, giriş parametrelerinden bağımsız olarak aynı örnek görev sonuçlarını döndürür
- Yanıt veri yapısı, üretim API'siyle tam olarak eşleşir
- Gerçek API anahtarınıza geçmeden önce API entegrasyonunuzu test etmek için idealdir
Test modu API anahtarı yalnızca geliştirme amaçlıdır. Üretim kullanımı için lütfen kendi API anahtarınızı kullanın.
İlk "Metinden 3D'ye" API İsteğinizi Yapın
Bu örnekte, text-to-3d uç noktasını kullanarak bir metin prompt'undan 3D model üreteceğiz. Süreç iki aşamadan oluşur: önizleme aşaması ve iyileştirme aşaması. Önizleme aşamasında, doku uygulanmamış bir temel ağ üretilir; bu da geometriyi değerlendirmenize olanak tanır. İyileştirme aşamasında, önizleme ağı metin prompt'una göre dokulandırılır.
Bu istekleri bir Python betiğinde nasıl yapacağınızı göstereceğiz.
Önizleme
Meshy, bir dizi REST API uç noktası sağlar. Bunları istediğiniz herhangi bir HTTP istemcisiyle kullanabilirsiniz. Hangi API'yi çağırırsanız çağırın, API anahtarı her zaman Authorization adlı bir header olarak iletilir. Bu betiği kullanmadan önce lütfen API anahtarınızı MESHY_API_KEY adlı bir ortam değişkeni olarak export etmeyi unutmayın.
Önizleme isteğinin temel parametreleri, her zaman "preview" olan mode ve ihtiyacınız olan modelin açıklaması olan prompt'tur. Bu örnekte ayrıca should_remesh belirttik, ancak bu isteğe bağlıdır.
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)
Bu, önizleme API çağrısını tamamlar.
Lütfen Meshy API'nin asenkron yürütme modeli benimsediğini unutmayın; bu, bir görev oluşturduğunuzda API uç noktasının yalnızca bir görev ID'si döndürdüğü anlamına gelir. Daha sonra görevin tamamlanıp tamamlanmadığını kontrol etmek için bu ID ile görev durumu uç noktasını yoklamanız gerekir.
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)
Görev tamamlandığında, yanıtındaki model URL'lerine erişebileceksiniz. Yanıttaki model_urls alanından modeli indirelim.
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.")
Şimdiye kadar her şey yolunda giderse, preview_model.glb dosyanız buna benzer görünmelidir. AI pipeline'ındaki doğal rastgelelik nedeniyle tam olarak eşleşmeyecektir.

İyileştirme
İyileştirme aşamasına geçelim. İyileştirme isteğini başlatmak için önizleme görev ID'sini bir giriş parametresi olarak sağlayın.
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 model refined_model.glb artık tamamen dokulandırılmış durumda ✨.

Hepsini Bir Araya Getirme
Metinden 3D'ye API'sini kullanmak için tam kod burada.
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.")
Kodu bir Python betiğine kopyalayıp yapıştırın ve çalıştırın.
Run the script
python api_request.py
Terminalinizde aşağıdakine benzer bir çıktı görmelisiniz:

Sonraki Adımlar
- Önce kod yazmadan uç noktaları denemeyi mi tercih edersiniz? Bir isteği yapılandırıp çalıştırmak ve ardından oluşturulan kod parçasını kopyalamak için API Playground kullanın.
- Eksiksiz API referansını, her API hakkında ayrıntılı bilgi sağlayan "API Uç Noktaları" bölümünde bulabilirsiniz.
- Fiyatlandırma, Hız Sınırları ve yaygın hataları giderme hakkında ayrıntıları keşfedin.
- Güncellemeler ve hata düzeltmeleri için değişiklik günlüğü sayfamızı düzenli olarak kontrol etmeyi unutmayın.
- Geri bildiriminiz mi var veya sorunlarla mı karşılaşıyorsunuz? Discord topluluğumuza katılın - sizden haber almak isteriz!