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

Hızlı başlangıç

Önce API anahtarınızı oluşturun

Bu kılavuzdaki her istek bir API anahtarına ihtiyaç duyar. Anahtar oluşturmak saniyeler sürer.

API anahtarınızı oluşturun

Meshy REST API ile, API anahtarı oluşturmaktan modeli indirmeye kadar dört adımda ilk 3D modelinizi oluşturun.


1API anahtarınızı alın

Developer Platform'ın API Keys sayfasında bir API anahtarı oluşturun. O ekrandan ayrıldıktan sonra anahtarı tekrar görüntüleyemezsiniz, bu yüzden güvenli bir yerde saklayın. Her istekte bunu Authorization başlığında bir Bearer token'ı olarak gönderin. Bkz. Kimlik doğrulama.

API anahtarları oluşturup yönetmek için ücretli bir plana ihtiyacınız vardır. Ücretsiz planda kendi anahtarlarınızı oluşturamazsınız ve Playground, test için yerleşik bir anahtar kullanır.

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


2Bir Görselden 3D'ye görevi oluşturun

Görselden 3D'ye için bir görsel gönderin. Bunun yerine bir metin prompt'undan veya birkaç fotoğraftan başlamak için Metinden 3D'ye veya Çoklu görselden 3D'ye sayfasını kullanın.

Önce, anahtarınızı bir ortam değişkeninde saklayın:

Export your key

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

Aşağıdaki örneklerin hepsi bu fotoğrafı kullanır. Başka bir görsel denemek için image_url değerini değiştirin.

Bu kılavuzda Görselden 3D'ye girişi olarak kullanılan örnek fantastik karakter illüstrasyonu
Örnek girdi

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. status değeri SUCCEEDED, FAILED veya CANCELED olana kadar görevi aynı uç noktadan alın. Aşağıdaki istekte, <task_id> kısmını 2. adımın döndürdüğü kimlikle değiştirin. İstekler arasında, Retry-After başlığındaki saniye sayısı kadar bekleyin.

Tipik işlem süreleri ve ne kadar süre sonra vazgeçmeniz gerektiği için bkz. Görev yaşam döngüsü.

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": null
}

Görev başarısız olursa, status değeri FAILED olur ve task_error nedenini belirtir. Girdiyi düzeltin veya başka bir görev oluşturun. Bkz. Hatalar.


4Modelinizi indirin

Dosyalar, önceki yanıtın model_urls alanındadır. Her format (GLB, FBX, OBJ, USDZ ve STL) sınırlı bir süre için geçerli olan imzalı bir URL'ye sahiptir. Dosyayı indirmek için URL'yi tarayıcınıza da yapıştırabilirsiniz.

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 model sonucu
Sonucunuz

Hepsini bir araya getirin

Bu betik görevi oluşturur, bitmesini bekler ve modeli indirir.

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