Ireretiro ang lowpoly sa Oct 30, 2026. Lumipat ng modelo bago ang mga petsang ito para maiwasan ang mga error sa request.

Quickstart

Start by creating your API key

Kailangan ito ng bawat kahilingan sa gabay na ito. Ilang segundo lang ang paggawa ng key.

Lumikha ng iyong API key

Apat na hakbang patungo sa iyong unang 3D model, gamit ang Meshy REST API.


1Kunin ang iyong API key

Gumawa ng API key mula sa API Keys na pahina sa Developer Platform — hindi mo na ito makikita muli matapos ang screen na ito, kaya itago ito sa ligtas na lugar. Bawat request ay nag-a-authenticate gamit ang isang Bearer token sa Authorization header — tingnan ang Authentication.

Buksan ang pahina ng API Keys sa Developer Platform, pagkatapos ay gawin ang iyong key


2Gawin ang iyong unang Image-to-3D request

I-export ang iyong key, pagkatapos ay gawin ang iyong unang task gamit ang Image to 3D. Gumagawa ka ba mula sa isang text prompt o maraming litrato sa halip? Tingnan ang Text to 3D o Multi-Image to 3D.

Export your key

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

Ang bawat halimbawa sa ibaba ay gumagamit ng litratong ito — palitan ng sarili mong image_url kung gusto mong subukan ang iba.

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

3Suriin ang status ng task

Tumatakbo ang task sa background at karaniwang tumatagal ng ilang minuto. I-poll ang parehong endpoint hanggang ang status ay maging SUCCEEDED, FAILED o CANCELED, palitan ang <task_id> sa ibaba ng ID na ibinalik sa step 2. Para sa karaniwang tagal at kung gaano katagal maghihintay, tingnan ang Task Lifecycle.

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

4I-download ang iyong modelo

Kunin ang modelo mula sa model_urls sa tugon sa itaas. Ang bawat format (GLB, FBX, OBJ, USDZ, STL) ay isang naka-sign, may limitasyon sa oras na URL — o laktawan ang command line at i-paste nalang ang URL nang direkta sa address bar ng iyong browser para i-download ito.

Download

model_urls.glb
curl -L "<model_urls.glb from the response above>" -o model.glb
Ang resultang 3D na modelo na nabuo mula sa sample na larawan ng fantasy character
Ang iyong resulta

Pagsamahin ang lahat

Mas gusto mo bang isang script na gagawa ng buong proseso — gumawa, mag-poll, mag-download?

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

Galugarin ang mga karaniwang workflow


Susunod na hakbang

  • Mas gusto mo ba ang UI? Buksan ang Developer Platform — magpatakbo ng mga request sa Playground, subaybayan ang paggamit at request logs, at pamahalaan ang mga webhook.
  • I-browse ang kumpletong API reference para sa bawat endpoint.
  • Matuto mula sa mga gumaganang halimbawa: sundan ang mga step-by-step recipe sa Cookbook at basahin ang mga tutorial at build story sa Developer Blog.
  • Suriin ang Pricing, Rate Limits, at Errors bago magtungo sa production.
  • Bantayan ang Changelog para sa mga update at pag-aayos ng bug.
  • May feedback o may kinakaharap na isyu? Sumali sa aming Discord na komunidad — gusto naming marinig mula sa iyo!