Neuvernetzung-API
Die Neuvernetzung-API ermöglicht es Ihnen, bestehende 3D-Modelle, die von anderen Meshy-APIs (wie Bild zu 3D oder Text zu 3D) erzeugt wurden, einer Neuvernetzung zu unterziehen und in verschiedene Formate zu exportieren. Dieser Abschnitt enthält Details zur Verwendung der Neuvernetzung-API.
Eine Neuvernetzungsaufgabe erstellen
Dieser Endpunkt erstellt eine neue Neuvernetzungsaufgabe.
Für Formatkonvertierung und Größenänderung verwenden Sie die dedizierte Convert API und Resize API. Die unten aufgeführten veralteten Parameter funktionieren weiterhin, aber wir empfehlen für neue Integrationen die neuen Endpunkte.
Parameter
Nur einer von input_task_id oder model_url ist erforderlich. Wenn beide angegeben werden, hat input_task_id Priorität.
- Name
- input_task_id
- Type
- string
- Erforderlich
- Description
Die ID der abgeschlossenen Bild-zu-3D- oder Text-zu-3D-Aufgabe, die Sie neu vernetzen möchten. Diese Aufgabe muss eine der folgenden sein: Text zu 3D Preview, Text zu 3D Refine, Bild zu 3D oder Neutexturierung. Zudem muss sie den Status
SUCCEEDEDhaben.
- Name
- model_url
- Type
- string
- Erforderlich
- Description
Bitte stellen Sie Meshy ein 3D-Modell zur Neuvernetzung über eine öffentlich zugängliche URL oder einen Data URI bereit. Unterstützte Formate:
.glb,.gltf,.obj,.fbx,.stl.Für Data URIs verwenden Sie den MIME-Typ:
application/octet-stream.
- Name
- target_formats
- Type
- string[]
- Standard ["glb"]
- Description
Eine Liste von Zielformaten für das neu vernetzte Modell. Wenn nicht angegeben, wird nur GLB generiert.
Verfügbare Werte:
glb,fbx,obj,usdz,blend,stl,3mf.
- Name
- topology
- Type
- string
- Standard triangle
- Description
Geben Sie die topology des generierten Modells an.
Verfügbare Werte:
quad: Erzeugt ein überwiegend aus Quads bestehendes Netz.triangle: Erzeugt ein dezimiertes Dreiecksnetz.
- Name
- target_polycount
- Type
- integer
- Standard 30,000
- Description
Geben Sie die Zielanzahl der Polygone im generierten Modell an. Die tatsächliche Anzahl der Polygone kann je nach Komplexität der Geometrie vom Zielwert abweichen.
Der gültige Wertebereich variiert je nach Nutzerstufe:
- 100 bis 300.000 (einschließlich)
- Name
- decimation_mode
- Type
- integer
- Description
Aktivieren Sie die adaptive Dezimierung durch Festlegen einer Polygonanzahl-Stufe. Wenn gesetzt, wird
target_polycountignoriert.Verfügbare Werte:
1: Adaptiv — ultra-hohe Polygonanzahl.2: Adaptiv — hohe Polygonanzahl.3: Adaptiv — mittlere Polygonanzahl.4: Adaptiv — niedrige Polygonanzahl.
- Name
- resize_height
- Type
- number
- ⚠ veraltet
- Standard 0
- Description
Ändert die Größe des Modells auf eine bestimmte Höhe in Metern. Wir empfehlen, stattdessen die dedizierte Resize API zu verwenden.
auto_size,resize_heightundresize_longest_sideschließen sich gegenseitig aus.
- Name
- resize_longest_side
- Type
- number
- ⚠ veraltet
- Standard 0
- Description
Ändert die Größe des Modells so, dass die längste Bounding-Box-Dimension dem angegebenen Wert in Metern entspricht. Wir empfehlen, stattdessen die dedizierte Resize API zu verwenden.
auto_size,resize_heightundresize_longest_sideschließen sich gegenseitig aus.
- Name
- auto_size
- Type
- boolean
- ⚠ veraltet
- Standard false
- Description
Wenn auf
truegesetzt, verwendet der Dienst KI-basierte Bildanalyse, um automatisch die reale Höhe des Objekts zu schätzen und die Größe des Modells entsprechend anzupassen. Wir empfehlen, stattdessen die dedizierte Resize API zu verwenden.auto_size,resize_heightundresize_longest_sideschließen sich gegenseitig aus.
auto_size = true- Name
- origin_at
- Type
- string
- ⚠ veraltet
- Standard bottom
- Description
Position des Ursprungs. Wir empfehlen, stattdessen die dedizierte Resize API zu verwenden.
Verfügbare Werte:
bottom,center.
- Name
- convert_format_only
- Type
- boolean
- ⚠ veraltet
- Description
Wenn
true, ändert der Dienst nur das Format der Eingabemodell-Datei und ignoriert andere Eingaben wietopology,resize_heightundtarget_polycount. Wir empfehlen, stattdessen die dedizierte Convert API zu verwenden.target_formatsmuss angegeben werden, wennconvert_format_onlyauftruegesetzt ist.
- Name
- alpha_thumbnail
- Type
- boolean
- Standard false
- Description
Wenn auf
truegesetzt, rendert die Aufgabe zusätzlich eine Version der Vorschau mit transparentem Hintergrund (RGBA) und gibt sie in der GET-Antwort alsalpha_thumbnail_urlzurück. Das bestehende Feldthumbnail_urlbleibt unverändert.
Rückgabewerte
Die Eigenschaft result der Antwort enthält die id der neu erstellten Neuvernetzungsaufgabe.
Fehlermodi
- Name
400 - Bad Request- Description
Die Anfrage war nicht akzeptabel. Häufige Ursachen:
- Fehlender Parameter: Es muss entweder
model_urloderinput_task_idangegeben werden. - Ungültige Eingabeaufgabe:
input_task_idmuss sich auf eine erfolgreiche Aufgabe eines unterstützten Modells beziehen. - Ungültiges Modellformat:
model_urlverweist auf eine Datei mit nicht unterstützter Erweiterung. - Nicht erreichbare URL:
model_urlkonnte nicht herunterladen werden. - Ungültige topology: Der Parameter
topologyist ungültig. - Sich gegenseitig ausschließende Parameter:
auto_sizeundresize_heightkönnen nicht beide gesetzt werden.
- Fehlender Parameter: Es muss entweder
- Name
401 - Unauthorized- Description
Die Authentifizierung ist fehlgeschlagen. Bitte überprüfen Sie Ihren API-Schlüssel.
- Name
402 - Payment Required- Description
Unzureichende Credits, um diese Aufgabe auszuführen.
- Name
429 - Too Many Requests- Description
Sie haben Ihre Ratenbegrenzung überschritten.
Request
# Basic remesh with custom formats and resize
curl https://api.meshy.ai/openapi/v1/remesh \
-X POST \
-H "Authorization: Bearer ${YOUR_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
"input_task_id": "018a210d-8ba4-705c-b111-1f1776f7f578",
"target_formats": ["glb", "fbx"],
"topology": "quad",
"target_polycount": 50000,
"resize_height": 1.0,
"origin_at": "bottom"
}'
# Quad remesh with auto-size
curl https://api.meshy.ai/openapi/v1/remesh \
-X POST \
-H "Authorization: Bearer ${YOUR_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
"input_task_id": "018a210d-8ba4-705c-b111-1f1776f7f578",
"target_formats": ["glb", "fbx"],
"topology": "quad",
"target_polycount": 50000,
"auto_size": true
}'
Response
{
"result": "0193bfc5-ee4f-73f8-8525-44b398884ce9"
}
Einen Neuvernetzungs-Task abrufen
Dieser Endpunkt ruft einen Neuvernetzungs-Task anhand seiner ID ab.
Parameter
- Name
- id
- Type
- path
- Description
Die ID des abzurufenden Neuvernetzungs-Tasks.
Rückgabe
Das Remesh-Task-Objekt.
Request
curl https://api.meshy.ai/openapi/v1/remesh/a43b5c6d-7e8f-901a-234b-567c890d1e2f \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response
{
"id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
"type": "remesh",
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***",
"fbx": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.fbx?Expires=***",
"obj": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.obj?Expires=***",
"usdz": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.usdz?Expires=***",
"blend": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.blend?Expires=***",
"stl": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.stl?Expires=***"
},
"progress": 100,
"status": "SUCCEEDED",
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000001000,
"task_error": null,
}
Eine Neuvernetzungsaufgabe löschen
Dieser Endpunkt löscht eine Neuvernetzungsaufgabe dauerhaft, einschließlich aller zugehörigen Modelle und Daten. Diese Aktion ist unumkehrbar.
Pfadparameter
- Name
- id
- Type
- path
- Description
Die ID der zu löschenden Neuvernetzungsaufgabe.
Aufgabenstatus
Eine Aufgabe, die sich noch im Status PENDING befindet, wird gelöscht,
und die bei der Erstellung verbrauchten Credits werden erstattet.
Eine Aufgabe, die sich bereits IN_PROGRESS befindet, kann nicht gelöscht
werden: Die Anfrage wird mit 409 Conflict abgelehnt, und die Aufgabe
läuft weiter. Credits für eine Aufgabe, die der Worker bereits gestartet
hat, sind nicht erstattungsfähig, sodass ein Löschen mitten im Ablauf Sie
sowohl die Credits als auch das Ergebnis kosten würde. Warten Sie, bis sie
den Status SUCCEEDED, FAILED oder CANCELED erreicht, und löschen Sie
sie dann.
Eine Aufgabe in einem Endzustand (SUCCEEDED, FAILED oder CANCELED)
wird ohne Erstattung gelöscht.
Rückgabewerte
Gibt bei Erfolg 200 OK zurück, oder 409 Conflict, wenn sich die
Aufgabe im Status IN_PROGRESS befindet.
Request
curl --request DELETE \
--url https://api.meshy.ai/openapi/v1/remesh/a43b5c6d-7e8f-901a-234b-567c890d1e2f \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response
// 200 OK on success, with an empty body.
//
// 409 Conflict when the task is IN_PROGRESS — the task is left running:
{
"message": "Task is IN_PROGRESS and cannot be deleted. Credits for a task the worker has already started are not refundable; wait for it to reach SUCCEEDED, FAILED or CANCELED, then delete it."
}
Liste der Neuvernetzungs-Aufgaben abrufen
Dieser Endpunkt ermöglicht es Ihnen, eine Liste von Neuvernetzungs-Aufgaben abzurufen.
Parameter
- Name
- page_num
- Type
- integer
- Standard 1
- Description
Seitennummer für die Paginierung.
- Name
- page_size
- Type
- integer
- Standard 10
- Description
Begrenzung der Seitengröße. Maximal erlaubt sind
100Elemente.
- Name
- sort_by
- Type
- string
- Description
Feld, nach dem sortiert werden soll.
Verfügbare Werte:
+created_at: Sortierung nach Erstellungszeitpunkt in aufsteigender Reihenfolge.-created_at: Sortierung nach Erstellungszeitpunkt in absteigender Reihenfolge.
Rückgabewerte
Gibt eine paginierte Liste von Neuvernetzungs-Aufgabenobjekten zurück.
Request
curl https://api.meshy.ai/openapi/v1/remesh?page_size=10 \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response
[
{
"id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
"type": "remesh",
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***",
"fbx": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.fbx?Expires=***",
"obj": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.obj?Expires=***",
"usdz": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.usdz?Expires=***",
"blend": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.blend?Expires=***",
"stl": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.stl?Expires=***"
},
"progress": 100,
"status": "SUCCEEDED",
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000001000,
"task_error": null
}
]
Streamen einer Neuvernetzungs-Aufgabe
Dieser Endpunkt streamt Echtzeit-Updates für eine Neuvernetzungs-Aufgabe mithilfe von Server-Sent Events (SSE).
Parameter
- Name
- id
- Type
- path
- Description
Eindeutige Kennung der zu streamenden Neuvernetzungs-Aufgabe.
Rückgabewerte
Gibt einen Stream von Neuvernetzungs-Aufgabenobjekten als Server-Sent Events zurück.
Bei Aufgaben mit dem Status PENDING oder IN_PROGRESS enthält der Antwort-Stream nur die notwendigen Felder progress und status.
Request
curl -N https://api.meshy.ai/openapi/v1/remesh/a43b5c6d-7e8f-901a-234b-567c890d1e2f/stream \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response Stream
// Error event example
event: error
data: {
"status_code": 404,
"message": "Task not found"
}
// Message event examples illustrate task progress.
// For PENDING or IN_PROGRESS tasks, the response stream will not include all fields.
event: message
data: {
"id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
"progress": 0,
"status": "PENDING"
}
event: message
data: {
"id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
"type": "remesh",
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***",
"fbx": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.fbx?Expires=***",
"obj": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.obj?Expires=***",
"usdz": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.usdz?Expires=***",
"blend": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.blend?Expires=***",
"stl": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.stl?Expires=***"
},
"progress": 100,
"status": "SUCCEEDED",
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000001000,
"task_error": null,
}
Das Remesh-Task-Objekt
Das Remesh-Task-Objekt repräsentiert eine Arbeitseinheit, die Meshy verwendet, um ein bestehendes 3D-Modell neu zu vernetzen und in verschiedene Formate zu exportieren. Das Objekt verfügt über die folgenden Eigenschaften:
Eigenschaften
- Name
- id
- Type
- string
- Description
Eindeutige Kennung für den Task. Obwohl wir als Implementierungsdetail eine k-sortierbare UUID für Task-IDs verwenden, sollten Sie keine Annahmen über das Format der ID treffen.
- Name
- type
- Type
- string
- Description
Typ des Remesh-Tasks. Der Wert ist
remesh.
- Name
- model_urls
- Type
- object
- Description
Herunterladbare URL zur texturierten 3D-Modelldatei, die von Meshy generiert wurde. Die Eigenschaft für ein Format wird ausgelassen, wenn das Format nicht generiert wurde, anstatt einen leeren String zurückzugeben.
- Name
glb- Type
- string
- Description
Herunterladbare URL zur GLB-Datei.
- Name
fbx- Type
- string
- Description
Herunterladbare URL zur FBX-Datei.
- Name
obj- Type
- string
- Description
Herunterladbare URL zur OBJ-Datei.
- Name
usdz- Type
- string
- Description
Herunterladbare URL zur USDZ-Datei.
- Name
blend- Type
- string
- Description
Herunterladbare URL zur Blender-Datei.
- Name
stl- Type
- string
- Description
Herunterladbare URL zur STL-Datei.
- Name
3mf- Type
- string
- Description
Herunterladbare URL zur 3MF-Datei. Nur vorhanden, wenn
3mfübertarget_formatsangefordert wurde.
- Name
- thumbnail_url
- Type
- string
- Description
Herunterladbare URL zu einem Vorschaubild, das aus dem neu vernetzten Modell gerendert wurde.
- Name
- alpha_thumbnail_url
- Type
- string
- Description
Herunterladbare URL zu einer Version von
thumbnail_urlmit transparentem Hintergrund (RGBA). Nur vorhanden, wenn der Task mitalpha_thumbnail: trueerstellt wurde und die transparente Vorschau erfolgreich gerendert wurde; andernfalls wird dieses Feld ausgelassen.
- Name
- progress
- Type
- integer
- Description
Fortschritt des Tasks. Wenn der Task noch nicht gestartet wurde, ist diese Eigenschaft
0. Sobald der Task erfolgreich abgeschlossen wurde, wird dieser Wert100.
- Name
- status
- Type
- string
- Description
Status des Tasks. Mögliche Werte sind
PENDING,IN_PROGRESS,SUCCEEDED,FAILED.
- Name
- preceding_tasks
- Type
- integer
- Description
Die Anzahl der vorangehenden Tasks.
Der Wert dieses Feldes ist nur dann aussagekräftig, wenn der Task-Status
PENDINGist.
- Name
- created_at
- Type
- timestamp
- Description
Zeitstempel, wann der Task erstellt wurde, in Millisekunden.
- Name
- started_at
- Type
- timestamp
- Description
Zeitstempel, wann der Task gestartet wurde, in Millisekunden. Wenn der Task noch nicht gestartet wurde, ist diese Eigenschaft
0.
- Name
- finished_at
- Type
- timestamp
- Description
Zeitstempel, wann der Task abgeschlossen wurde, in Millisekunden. Wenn der Task noch nicht abgeschlossen ist, ist diese Eigenschaft
0.
- Name
- task_error
- Type
- object
- Description
Fehlerdetails für fehlgeschlagene Tasks. Siehe Fehler für die vollständige Referenz des
task_error-Objekts.
- Name
- consumed_credits
- Type
- integer
- Description
Die Anzahl der von diesem Task verbrauchten Credits. Vorhanden, wenn der Task-Status
PENDING,IN_PROGRESSoderSUCCEEDEDist. Gibt0fürFAILED-Tasks zurück (Credits werden bei einem Fehlschlag zurückerstattet).
Example Remesh Task Object
{
"id": "0193bfc5-ee4f-73f8-8525-44b398884ce9",
"type": "remesh",
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.glb?Expires=***",
"fbx": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.fbx?Expires=***",
"obj": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.obj?Expires=***",
"usdz": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.usdz?Expires=***",
"blend": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.blend?Expires=***",
"stl": "https://assets.meshy.ai/***/tasks/0193bfc5-ee4f-73f8-8525-44b398884ce9/output/model.stl?Expires=***"
},
"progress": 100,
"status": "SUCCEEDED",
"preceding_tasks": 0,
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000001000,
"task_error": {
"message": ""
},
"consumed_credits": 5
}