lowpoly 30 Eki 2026 tarihinde kaldırılıyor. İstek hatalarını önlemek için bu tarihlerden önce model değiştirin.

Hızlı başlangıç

Start by creating your API key

Bu kılavuzdaki her istek için bir API anahtarına ihtiyacınız var. Bir anahtar oluşturmak sadece birkaç saniye sürer.

API anahtarınızı oluşturun

Meshy REST API'sini kullanarak ilk 3D modelinize ulaşmak için dört adım.


1API anahtarınızı alın

Developer Platform içindeki API Keys sayfasından bir API anahtarı oluşturun — bu ekrandan sonra anahtarı tekrar görüntüleyemezsiniz, bu yüzden güvenli bir yerde saklayın. Her istek, Authorization başlığında bir Bearer token'ı ile kimlik doğrulaması yapar — bkz. Authentication.

Developer Platform'da API Keys sayfasını açın, ardından anahtarınızı oluşturun


2İlk Görselden 3D'ye isteğinizi yapın

Anahtarınızı dışa aktarın, ardından Görselden 3D'ye ile ilk görevinizi oluşturun. Bunun yerine bir metin promptu veya birden fazla fotoğrafla mı çalışmak istiyorsunuz? Metinden 3D'ye veya Çoklu görselden 3D'ye sayfasına bakın.

Export your key

export MESHY_API_KEY="<your-api-key>"

Aşağıdaki her örnek bu fotoğrafı kullanır — başka bir şey denemek için kendi image_url değerinizi kullanın.

Sample fantasy character illustration used as the Image to 3D input in this guide
Sample input

Request

POST
/openapi/v1/image-to-3d
curl https://api.meshy.ai/openapi/v1/image-to-3d \
  -X POST \
  -H "Authorization: Bearer ${MESHY_API_KEY}" \
  -H "Content-Type: application/json" \
  -d '{
    "image_url": "https://docs.meshy.ai/images/api/quick-start/source-photo.webp"
  }'

3Görev durumunu kontrol edin

Görev arka planda çalışır ve genellikle birkaç dakika sürer. Aşağıdaki <task_id> kısmını 2. adımda döndürülen ID ile değiştirerek status değeri SUCCEEDED, FAILED veya CANCELED olana kadar aynı uç noktayı yoklayın. Tipik süreler ve ne kadar beklenmesi gerektiği hakkında bilgi için Görev Yaşam Döngüsü sayfasına bakın.

Request

GET
/openapi/v1/image-to-3d/:id
curl https://api.meshy.ai/openapi/v1/image-to-3d/<task_id> \
  -H "Authorization: Bearer ${MESHY_API_KEY}"

Response — SUCCEEDED

{
  "id": "018a210d-8ba4-705c-b111-1f1776f7f578",
  "status": "SUCCEEDED",
  "progress": 100,
  "model_urls": {
    "glb": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/model.glb?Expires=***",
    "fbx": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/model.fbx?Expires=***"
  },
  "thumbnail_url": "https://assets.meshy.ai/***/tasks/018a210d-8ba4-705c-b111-1f1776f7f578/output/preview.png?Expires=***",
  "task_error": {
    "message": ""
  }
}

4Modelinizi indirin

Yukarıdaki yanıtta yer alan model_urls içinden modeli alın. Her format (GLB, FBX, OBJ, USDZ, STL) imzalı, süreli bir URL'dir — isterseniz komut satırını atlayıp URL'yi doğrudan tarayıcınızın adres çubuğuna yapıştırarak indirebilirsiniz.

Download

model_urls.glb
curl -L "<model_urls.glb from the response above>" -o model.glb
Örnek fantastik karakter fotoğrafından oluşturulan 3D modelin sonucu
Your result

Hepsini bir araya getirelim

Oluşturma, yoklama ve indirme işlemlerinin tamamını yapan tek bir betik mi tercih edersiniz?

Full script

import axios from 'axios';
import fs from 'fs';

const headers = { Authorization: `Bearer ${process.env.MESHY_API_KEY}` };
const imageUrl = 'https://docs.meshy.ai/images/api/quick-start/source-photo.webp';

// 1. Create the task
const { data: created } = await axios.post(
  'https://api.meshy.ai/openapi/v1/image-to-3d',
  { image_url: imageUrl },
  { headers, timeout: 60_000 },
);
const taskId = created.result;

// 2. Poll until it finishes, for up to 60 minutes
const deadline = Date.now() + 60 * 60 * 1000;
let task;
while (true) {
  const { data, headers: resHeaders } = await axios.get(
    `https://api.meshy.ai/openapi/v1/image-to-3d/${taskId}`,
    { headers, timeout: 30_000 },
  );
  task = data;
  if (['SUCCEEDED', 'FAILED', 'CANCELED'].includes(task.status)) break;
  if (Date.now() > deadline) {
    // The task is still running. Check it again later with the same task ID instead of creating a new one.
    throw new Error(`Task ${taskId} is still ${task.status}; check it again later`);
  }
  const waitSeconds = Number(resHeaders['retry-after']) || 5;
  await new Promise((resolve) => setTimeout(resolve, waitSeconds * 1000));
}

// 3. Download the result (only if the task succeeded)
if (task.status !== 'SUCCEEDED') {
  throw new Error(`Task ${task.status}: ${task.task_error?.message || 'unknown error'}`);
}
const { data: model } = await axios.get(task.model_urls.glb, { responseType: 'arraybuffer' });
fs.writeFileSync('model.glb', model);
console.log('Saved model.glb');

Yaygın iş akışlarını keşfedin


Sonraki adımlar

  • Arayüz mü tercih ediyorsunuz? Developer Platform'u açın — Playground'da istekler çalıştırın, kullanımı ve istek günlüklerini takip edin ve webhookları yönetin.
  • Her uç nokta için tam API referansına göz atın.
  • Çalışan örneklerden öğrenin: Cookbook bölümündeki adım adım tarifleri izleyin ve Developer Blog üzerindeki eğitimleri ve geliştirme hikayelerini okuyun.
  • Üretime geçmeden önce Fiyatlandırma, Rate Limits ve Hatalar sayfalarını kontrol edin.
  • Güncellemeler ve hata düzeltmeleri için Changelog sayfasını (değişiklik günlüğü) takip edin.
  • Geri bildiriminiz mi var ya da bir sorunla mı karşılaştınız? Discord topluluğumuza katılın — sizden haber almak isteriz!