lowpoly akan dihentikan pada 30 Okt 2026. Tukar model sebelum tarikh-tarikh ini untuk mengelakkan ralat permintaan. Lihat semua penamatan

Mula pantas

Mulakan dengan mencipta kunci API anda

Setiap permintaan dalam panduan ini memerlukannya. Mencipta kunci hanya mengambil masa beberapa saat.

Cipta kunci API anda

Hasilkan model 3D pertama anda dengan Meshy REST API dalam empat langkah, bermula daripada mencipta kunci API sehingga memuat turun model.


1Dapatkan kunci API anda

Cipta kunci API pada halaman API Keys di Developer Platform. Anda tidak boleh melihat kunci tersebut semula setelah meninggalkan skrin itu, jadi simpannya di tempat yang selamat. Hantarkannya dalam setiap permintaan sebagai token Bearer dalam header Authorization. Lihat Pengesahan.

Anda memerlukan pelan berbayar untuk mencipta dan menguruskan kunci API. Pada pelan Free, anda tidak boleh mencipta kunci anda sendiri, dan Playground menggunakan kunci terbina dalam untuk pengujian.

Buka halaman API Keys di Developer Platform, kemudian cipta kunci anda


2Cipta tugas Imej ke 3D

Hantar imej ke Imej ke 3D. Untuk bermula daripada prompt teks atau beberapa foto sebaliknya, gunakan Teks ke 3D atau Berbilang Imej ke 3D.

Mula-mula, simpan kunci anda dalam pemboleh ubah persekitaran:

Export your key

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

Contoh-contoh berikut semuanya menggunakan foto ini. Untuk mencuba imej lain, ubah image_url.

Ilustrasi watak fantasi sampel yang digunakan sebagai input Imej ke 3D dalam panduan ini
Input sampel

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"
  }'

3Semak status tugas

Tugas berjalan di latar belakang dan biasanya mengambil masa beberapa minit. Dapatkan tugas daripada endpoint yang sama sehingga status bernilai SUCCEEDED, FAILED, atau CANCELED. Dalam permintaan berikut, gantikan <task_id> dengan ID yang dikembalikan oleh langkah 2. Antara permintaan, tunggu selama bilangan saat yang dinyatakan dalam header Retry-After.

Untuk masa pemprosesan biasa, dan berapa lama anda perlu menunggu sebelum berhenti mencuba, lihat Kitaran hayat tugas.

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
}

Jika tugas gagal, status akan menjadi FAILED, dan task_error akan menyatakan sebabnya. Betulkan input atau cipta tugas lain. Lihat Ralat.


4Muat turun model anda

Fail-fail tersebut berada dalam model_urls pada respons sebelumnya. Setiap format (GLB, FBX, OBJ, USDZ, dan STL) mempunyai URL bertandatangan yang berfungsi untuk tempoh masa yang terhad. Anda juga boleh tampal URL tersebut ke dalam penyemak imbas anda untuk memuat turun fail itu.

Download

model_urls.glb
curl -L "<model_urls.glb from the response above>" -o model.glb
Model 3D yang terhasil daripada foto watak fantasi sampel
Hasil anda

Gabungkan semuanya

Skrip ini mencipta tugas, menunggu sehingga ia selesai, dan memuat turun model tersebut.

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');

Terokai aliran kerja biasa


Langkah seterusnya