Hızlı başlangıç

Bu, Meshy ile programatik olarak etkileşim kurmak için API referansıdır.


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.

API Anahtarı Oluştur

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

İ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.

Önizleme modeli

İ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 ✨.

İyileştirilmiş model

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:

Betiği çalıştır

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!