lowpoly wird am 30.10.2026 abgeschaltet. Wechseln Sie vor diesen Terminen das Modell, um Fehler bei Anfragen zu vermeiden.

Schnellstart

Beginne mit der Erstellung deines API-Schlüssels

Jede Anfrage in diesem Leitfaden benötigt einen. Das Erstellen eines Schlüssels dauert nur Sekunden.

API-Schlüssel erstellen

Vier Schritte zu deinem ersten 3D-Modell, mithilfe der Meshy-REST-API.


1Holen Sie sich Ihren API-Schlüssel

Erstellen Sie einen API-Schlüssel auf der Seite API Keys in der Developer Platform — nach diesem Bildschirm können Sie ihn nicht erneut einsehen, bewahren Sie ihn also an einem sicheren Ort auf. Jede Anfrage authentifiziert sich mit einem Bearer-Token im Authorization-Header — siehe Authentifizierung.

Öffnen Sie die Seite API Keys in der Developer Platform und erstellen Sie dann Ihren Schlüssel


2Stelle deine erste Image-to-3D-Anfrage

Exportiere deinen Schlüssel und erstelle dann deine erste Aufgabe mit Bild zu 3D. Arbeitest du stattdessen mit einem Text-prompt oder mehreren Fotos? Dann wirf einen Blick auf Text zu 3D oder Multi-Bild zu 3D.

Export your key

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

In jedem der folgenden Beispiele wird dieses Foto verwendet — ersetze es durch deine eigene image_url, um etwas anderes auszuprobieren.

Sample fantasy character illustration used as the Image to 3D input in this guide
Beispiel-Eingabe

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

3Aufgabenstatus prüfen

Die Aufgabe läuft im Hintergrund und dauert in der Regel einige Minuten. Fragen Sie denselben Endpunkt ab, bis status den Wert SUCCEEDED, FAILED oder CANCELED hat, und ersetzen Sie dabei <task_id> unten durch die in Schritt 2 zurückgegebene ID. Typische Zeiten und Wartedauern finden Sie unter 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": ""
  }
}

4Lade dein Modell herunter

Hole dir das Modell aus model_urls in der obigen Antwort. Jedes Format (GLB, FBX, OBJ, USDZ, STL) ist eine signierte, zeitlich begrenzte URL — oder überspringe die Befehlszeile und füge die URL direkt in die Adressleiste deines Browsers ein, um sie herunterzuladen.

Download

model_urls.glb
curl -L "<model_urls.glb from the response above>" -o model.glb
Das resultierende 3D-Modell, das aus dem Beispielfoto der Fantasy-Figur generiert wurde
Dein Ergebnis

Alles zusammenfügen

Bevorzugen Sie ein einziges Skript, das alles erledigt – erstellen, abfragen, herunterladen?

Vollständiges Skript

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

Häufige Workflows erkunden


Nächste Schritte

  • Bevorzugen Sie eine Benutzeroberfläche? Öffnen Sie die Developer Platform — führen Sie Anfragen im Playground aus, verfolgen Sie die Nutzung und Request-Logs, und verwalten Sie Webhooks.
  • Durchsuchen Sie die vollständige API-Referenz für jeden Endpunkt.
  • Lernen Sie anhand funktionierender Beispiele: Folgen Sie Schritt-für-Schritt-Anleitungen im Cookbook und lesen Sie Tutorials und Build-Storys im Developer Blog.
  • Prüfen Sie Preise, Rate Limits und Fehler, bevor Sie in den produktiven Einsatz gehen.
  • Behalten Sie den Changelog für Updates und Fehlerbehebungen im Blick.
  • Haben Sie Feedback oder stoßen Sie auf Probleme? Treten Sie unserer Discord-Community bei — wir freuen uns, von Ihnen zu hören!