lowpoly wordt op 30 okt 2026 uitgefaseerd. Stap vóór deze datums over op een ander model om fouten bij verzoeken te voorkomen. Alle afschaffingen bekijken

Snelstart

Begin met het aanmaken van je API-sleutel

Elk verzoek in deze gids heeft er een nodig. Het aanmaken van een sleutel duurt slechts een paar seconden.

Maak je API-sleutel aan

Maak je eerste 3D-model met de Meshy REST API in vier stappen, van het aanmaken van een API-sleutel tot het downloaden van het model.


1Verkrijg je API-sleutel

Maak een API-sleutel aan op de pagina API Keys van het Developer Platform. Je kunt de sleutel niet opnieuw bekijken nadat je dat scherm hebt verlaten, dus bewaar hem op een veilige plek. Stuur hem bij elk verzoek mee als een Bearer-token in de Authorization-header. Zie Authenticatie.

Je hebt een betaald abonnement nodig om API-sleutels aan te maken en te beheren. Met het gratis abonnement kun je geen eigen sleutels aanmaken, en gebruikt de Playground een ingebouwde sleutel om te testen.

Open de pagina API Keys in het Developer Platform en maak vervolgens je sleutel aan


2Maak een Afbeelding naar 3D-taak aan

Stuur een afbeelding naar Afbeelding naar 3D. Om in plaats daarvan te starten vanaf een tekstprompt of meerdere foto's, gebruik je Tekst naar 3D of Multi-afbeelding naar 3D.

Bewaar eerst je sleutel in een omgevingsvariabele:

Export your key

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

De volgende voorbeelden gebruiken allemaal deze foto. Om een andere afbeelding te proberen, wijzig je image_url.

Voorbeeldillustratie van een fantasiekarakter, gebruikt als Afbeelding naar 3D-invoer in deze gids
Voorbeeldinvoer

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

3Controleer de taakstatus

De taak draait op de achtergrond en duurt meestal een paar minuten. Haal de taak op bij hetzelfde endpoint totdat status gelijk is aan SUCCEEDED, FAILED of CANCELED. Vervang in het volgende verzoek <task_id> door de ID die stap 2 heeft teruggegeven. Wacht tussen verzoeken het aantal seconden dat in de Retry-After-header staat.

Zie Taaklevenscyclus voor typische verwerkingstijden en hoe lang je moet wachten voordat je het opgeeft.

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
}

Als de taak mislukt, is status gelijk aan FAILED en geeft task_error aan waarom. Corrigeer de invoer of maak een andere taak aan. Zie Fouten.


4Download je model

De bestanden staan in model_urls van het voorgaande antwoord. Elk formaat (GLB, FBX, OBJ, USDZ en STL) heeft een ondertekende URL die een beperkte tijd geldig is. Je kunt de URL ook in je browser plakken om het bestand te downloaden.

Download

model_urls.glb
curl -L "<model_urls.glb from the response above>" -o model.glb
Het resulterende 3D-model, gegenereerd op basis van de voorbeeldfoto van het fantasiekarakter
Jouw resultaat

Alles samenvoegen

Dit script maakt de taak aan, wacht tot deze klaar is en downloadt het 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');

Ontdek veelvoorkomende workflows


Volgende stappen