Mulai cepat
Mulai dengan membuat kunci API Anda
Setiap permintaan dalam panduan ini membutuhkan satu kunci API. Membuat kunci hanya perlu beberapa detik.
Buat kunci API AndaEmpat langkah menuju model 3D pertama Anda, menggunakan Meshy REST API.
Menggunakan asisten pengkodean AI? Lihat halaman Integrasi AI kami — instal Meshy MCP server untuk akses pemanggilan alat (tool-calling) dari Claude Code, Cursor, Windsurf, dan alat lain yang kompatibel dengan MCP, atau arahkan agen chat biasa ke llms.txt.
1Dapatkan kunci API Anda
Buat kunci API dari halaman API Keys di Developer Platform — Anda tidak akan dapat melihatnya lagi setelah layar ini, jadi simpan di tempat yang aman. Setiap permintaan melakukan autentikasi dengan token Bearer di header Authorization — lihat Authentication.
Membuat dan mengelola kunci API memerlukan paket berbayar. Akun Gratis mendapatkan kunci bawaan khusus untuk pengujian di Playground, tetapi tidak dapat membuat atau mengelola kunci milik mereka sendiri.

Tips keamanan: hindari menempelkan kunci Anda langsung ke dalam skrip — simpan sebagai variabel lingkungan: export MESHY_API_KEY="msy_...".
2Buat permintaan Image-to-3D pertama Anda
Ekspor kunci Anda, lalu buat tugas pertama Anda dengan Image to 3D. Bekerja dari prompt teks atau beberapa foto sebagai gantinya? Lihat Text to 3D atau Multi-Image to 3D.
Export your key
export MESHY_API_KEY="<your-api-key>"
Jalankan ini di terminal Anda (Terminal di macOS, Command Prompt atau PowerShell di Windows) — bukan di browser.
Setiap contoh di bawah ini menggunakan foto ini — ganti dengan image_url Anda sendiri untuk mencoba hal lain.

Request
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"
}'
3Periksa status tugas
Tugas berjalan di latar belakang dan biasanya memakan waktu beberapa menit. Lakukan polling pada endpoint yang sama hingga status bernilai SUCCEEDED, FAILED atau CANCELED, dengan mengganti <task_id> di bawah ini dengan ID yang dikembalikan pada langkah 2. Untuk waktu yang biasanya diperlukan dan berapa lama harus menunggu, lihat Task Lifecycle.
Request
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": ""
}
}
Polling bukan gaya Anda? Gunakan SSE streaming atau webhook untuk mendapatkan notifikasi tepat saat sebuah tugas selesai.
4Unduh model Anda
Ambil model dari model_urls pada respons di atas. Setiap format (GLB, FBX, OBJ, USDZ, STL) adalah URL bertanda tangan yang memiliki batas waktu — atau lewati baris perintah dan tempelkan URL tersebut langsung ke bilah alamat browser Anda untuk mengunduhnya.
Download
curl -L "<model_urls.glb from the response above>" -o model.glb

File disimpan selama 3 hari pada paket non-Enterprise — lihat Asset Retention.
Satukan semuanya
Lebih suka satu skrip yang melakukan semuanya — membuat, polling, mengunduh?
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');
Jelajahi alur kerja umum
Karakter siap pakai untuk game
Rig sebuah mesh humanoid dengan kerangka agar siap dianimasikan di Unity atau Unreal.
Learn more →Asset lowpoly
Atur model_type ke smart-topology pada Gambar ke 3D untuk mendapatkan mesh yang bersih dan siap pakai untuk game.
Model cetak 3D
Konversi model yang sudah selesai menjadi file 3MF multi-warna, siap untuk di-slice dan dicetak.
Learn more →Langkah berikutnya
- Lebih suka menggunakan UI? Buka Developer Platform — jalankan permintaan di Playground, lacak penggunaan dan log permintaan, serta kelola webhook.
- Jelajahi referensi API lengkap untuk setiap endpoint.
- Pelajari dari contoh nyata: ikuti resep langkah demi langkah di Cookbook dan baca tutorial serta kisah pengembangan di Developer Blog.
- Periksa Harga, Rate Limits, dan Kesalahan sebelum masuk ke tahap produksi.
- Pantau catatan perubahan untuk pembaruan dan perbaikan bug.
- Punya masukan atau mengalami masalah? Bergabunglah dengan komunitas Discord kami — kami senang mendengar dari Anda!