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

Quickstart

Magsimula sa paggawa ng iyong API key

Kailangan ng bawat request sa gabay na ito nito. Ilang segundo lang ang gagawin ng paggawa ng key.

Gumawa ng iyong API key

Gumawa ng iyong unang 3D model gamit ang Meshy REST API sa apat na hakbang, mula sa paggawa ng API key hanggang sa pag-download ng model.


1Kunin ang iyong API key

Gumawa ng API key sa API Keys page ng Developer Platform. Hindi mo na makikita ulit ang key pagkatapos mong umalis sa screen na iyon, kaya itago ito sa ligtas na lugar. Ipadala ito sa bawat request bilang Bearer token sa Authorization header. Tingnan ang Authentication.

Kailangan mo ng paid plan para makagawa at makapamahala ng mga API key. Sa Free plan, hindi ka makakagawa ng sarili mong key, at gumagamit ang Playground ng built-in key para sa testing.

Buksan ang API Keys page sa Developer Platform, pagkatapos ay gumawa ng iyong key


2Gumawa ng Image to 3D task

Magpadala ng imahe sa Image to 3D. Para magsimula sa pamamagitan ng text prompt o maraming larawan sa halip, gamitin ang Text to 3D o Multi-Image to 3D.

Una, itago ang iyong key sa isang environment variable:

Export your key

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

Ginagamit ng mga sumusunod na halimbawa ang litrato na ito. Para subukan ang ibang imahe, baguhin ang image_url.

Sample na fantasy character illustration na ginamit bilang input sa Image to 3D sa gabay na ito
Sample na 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. Kunin ang task mula sa parehong endpoint hanggang ang status ay SUCCEEDED, FAILED, o CANCELED. Sa sumusunod na request, palitan ang <task_id> ng ID na ibinalik ng hakbang 2. Sa pagitan ng mga request, hintayin ang bilang ng segundong nakasaad sa Retry-After header.

Para sa karaniwang oras ng pagproseso, at kung gaano katagal bago sumuko, 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": null
}

Kung nabigo ang task, ang status ay FAILED, at sinasabi ng task_error kung bakit. Ayusin ang input o gumawa ng isa pang task. Tingnan ang Errors.


4I-download ang iyong model

Nasa model_urls ng naunang response ang mga file. Bawat format (GLB, FBX, OBJ, USDZ, at STL) ay may signed URL na gumagana sa loob ng limitadong oras. Puwede mo rin i-paste ang URL sa iyong browser para i-download ang file.

Download

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

Pagsama-samahin ang lahat

Gumagawa ang script na ito ng task, naghihintay hanggang matapos ito, at nagdo-download ng model.

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


Mga susunod na hakbang