API di Remesh
L'API di Remesh ti consente di remesh e esportare modelli 3D esistenti generati da altre API di Meshy (come Immagine in 3D o Testo in 3D) in vari formati. Questa sezione fornisce dettagli su come utilizzare l'API di Remesh.
Crea un Task di Remesh
Questo endpoint crea un nuovo task di remesh.
Per la conversione di formato e il ridimensionamento, utilizza le API dedicate Convert API e Resize API. I parametri deprecati di seguito continueranno a funzionare, ma raccomandiamo i nuovi endpoint per nuove integrazioni.
Parametri
Solo uno tra input_task_id o model_url è richiesto. Se entrambi sono forniti, input_task_id ha la priorità.
- Name
- input_task_id
- Type
- string
- Obbligatorio
- Description
L'ID del task completato Immagine in 3D o Testo in 3D che desideri remeshare. Questo task deve essere uno dei seguenti: Testo in 3D Anteprima, Testo in 3D Raffina, Immagine in 3D o Retexture. Inoltre, deve avere uno stato di
SUCCEEDED.
- Name
- model_url
- Type
- string
- Obbligatorio
- Description
Fornisci un modello 3D per Meshy da remeshare tramite un URL pubblicamente accessibile o un Data URI. Formati supportati:
.glb,.gltf,.obj,.fbx,.stl.Per i Data URI, utilizza il MIME type:
application/octet-stream.
- Name
- target_formats
- Type
- string[]
- predefinito ["glb"]
- Description
Una lista di formati target per il modello remeshato. Quando omesso, viene generato solo GLB.
Valori disponibili:
glb,fbx,obj,usdz,blend,stl,3mf.
- Name
- topology
- Type
- string
- predefinito triangle
- Description
Specifica la topology del modello generato.
Valori disponibili:
quad: Genera una mesh dominante quad.triangle: Genera una mesh triangolare decimata.
- Name
- target_polycount
- Type
- integer
- predefinito 30,000
- Description
Specifica il numero target di poligoni nel modello generato. Il numero effettivo di poligoni può deviare dal target a seconda della complessità della geometria.
L'intervallo di valori validi varia a seconda del livello utente:
- 100 a 300,000 (inclusivo)
- Name
- decimation_mode
- Type
- integer
- Description
Abilita la decimazione adattiva impostando un livello di conteggio poligoni. Quando impostato,
target_polycountviene ignorato.Valori disponibili:
1: Adattivo — ultra conteggio poligoni.2: Adattivo — alto conteggio poligoni.3: Adattivo — medio conteggio poligoni.4: Adattivo — basso conteggio poligoni.
- Name
- resize_height
- Type
- number
- ⚠ deprecato
- predefinito 0
- Description
Ridimensiona il modello a una certa altezza misurata in metri. Raccomandiamo di utilizzare la Resize API dedicata.
auto_size,resize_height, eresize_longest_sidesono mutuamente esclusivi.
- Name
- resize_longest_side
- Type
- number
- ⚠ deprecato
- predefinito 0
- Description
Ridimensiona il modello in modo che la dimensione più lunga della bounding-box sia uguale al valore specificato in metri. Raccomandiamo di utilizzare la Resize API dedicata.
auto_size,resize_height, eresize_longest_sidesono mutuamente esclusivi.
- Name
- auto_size
- Type
- boolean
- ⚠ deprecato
- predefinito false
- Description
Quando impostato su
true, il servizio utilizza la visione AI per stimare automaticamente l'altezza reale dell'oggetto e ridimensionare il modello di conseguenza. Raccomandiamo di utilizzare la Resize API dedicata.auto_size,resize_height, eresize_longest_sidesono mutuamente esclusivi.
auto_size = true- Name
- origin_at
- Type
- string
- ⚠ deprecato
- predefinito bottom
- Description
Posizione dell'origine. Raccomandiamo di utilizzare la Resize API dedicata.
Valori disponibili:
bottom,center.
- Name
- convert_format_only
- Type
- boolean
- ⚠ deprecato
- Description
Se
true, il servizio cambierà solo il formato del file modello di input, ignorando altri input cometopology,resize_height, etarget_polycount. Raccomandiamo di utilizzare la Convert API dedicata.target_formatsdeve essere fornito seconvert_format_onlyè impostato sutrue.
- Name
- alpha_thumbnail
- Type
- boolean
- predefinito false
- Description
Quando impostato su
true, il task renderizza inoltre una versione con sfondo trasparente (RGBA) dell'anteprima e la restituisce comealpha_thumbnail_urlnella risposta GET. Il campothumbnail_urlesistente rimane invariato.
Ritorni
La proprietà result della risposta contiene l'id del nuovo task di remesh creato.
Modalità di Fallimento
- Name
400 - Bad Request- Description
La richiesta non era accettabile. Cause comuni:
- Parametro mancante: Devono essere forniti
model_urloinput_task_id. - Task di input non valido: L'
input_task_iddeve riferirsi a un task riuscito da un modello supportato. - Formato modello non valido: Il
model_urlpunta a un file con un'estensione non supportata. - URL irraggiungibile: Il
model_urlnon può essere scaricato. - Topology non valida: Il parametro
topologynon è valido. - Parametri mutuamente esclusivi:
auto_sizeeresize_heightnon possono essere entrambi impostati.
- Parametro mancante: Devono essere forniti
- Name
401 - Unauthorized- Description
Autenticazione fallita. Controlla la tua chiave API.
- Name
402 - Payment Required- Description
Crediti insufficienti per eseguire questo task.
- Name
429 - Too Many Requests- Description
Hai superato il tuo limite di frequenza.
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"
}
Recupera un Task di Remesh
Questo endpoint recupera un task di remesh tramite il suo ID.
Parametri
- Name
- id
- Type
- path
- Description
L'ID del task di remesh da recuperare.
Restituisce
L'oggetto Task di Remesh.
Richiesta
curl https://api.meshy.ai/openapi/v1/remesh/a43b5c6d-7e8f-901a-234b-567c890d1e2f \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Risposta
{
"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,
}
Elimina un'attività di Remesh
Questo endpoint elimina permanentemente un'attività di remesh, inclusi tutti i modelli e i dati associati. Questa azione è irreversibile.
Parametri del percorso
- Name
- id
- Type
- path
- Description
L'ID dell'attività di remesh da eliminare.
Restituzioni
Restituisce 200 OK in caso di successo.
Request
curl --request DELETE \
--url https://api.meshy.ai/openapi/v1/remesh/a43b5c6d-7e8f-901a-234b-567c890d1e2f \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response
// Returns 200 Ok on success.
Elenco delle attività di Remesh
Questo endpoint ti permette di recuperare un elenco di attività di Remesh.
Parametri
- Name
- page_num
- Type
- integer
- predefinito 1
- Description
Numero di pagina per la paginazione.
- Name
- page_size
- Type
- integer
- predefinito 10
- Description
Limite della dimensione della pagina. Il massimo consentito è di
50elementi.
- Name
- sort_by
- Type
- string
- Description
Campo per ordinare.
Valori disponibili:
+created_at: Ordina per tempo di creazione in ordine crescente.-created_at: Ordina per tempo di creazione in ordine decrescente.
Restituisce
Restituisce un elenco paginato di Gli Oggetti Attività di Remesh.
Richiesta
curl https://api.meshy.ai/openapi/v1/remesh?page_size=10 \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Risposta
[
{
"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
}
]
Stream di un Task di Remesh
Questo endpoint trasmette aggiornamenti in tempo reale per un task di Remesh utilizzando Server-Sent Events (SSE).
Parametri
- Name
- id
- Type
- path
- Description
Identificatore univoco per il task di Remesh da trasmettere.
Restituisce
Restituisce un flusso di Oggetti del Task di Remesh come Server-Sent Events.
Per i task PENDING o IN_PROGRESS, il flusso di risposta includerà solo i campi necessari progress e status.
Richiesta
curl -N https://api.meshy.ai/openapi/v1/remesh/a43b5c6d-7e8f-901a-234b-567c890d1e2f/stream \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Flusso di Risposta
// 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,
}
L'oggetto Remesh Task
L'oggetto Remesh Task rappresenta un'unità di lavoro che Meshy utilizza per rimodellare e esportare un modello 3D esistente in vari formati. L'oggetto ha le seguenti proprietà:
Proprietà
- Name
- id
- Type
- string
- Description
Identificatore univoco per il compito. Anche se utilizziamo un UUID ordinabile per id dei compiti come dettaglio di implementazione, non dovresti fare alcuna ipotesi sul formato dell'id.
- Name
- type
- Type
- string
- Description
Tipo del compito Remesh. Il valore è
remesh.
- Name
- model_urls
- Type
- object
- Description
URL scaricabile del file del modello 3D texturizzato generato da Meshy. La proprietà per un formato sarà omessa se il formato non è generato invece di restituire una stringa vuota.
- Name
glb- Type
- string
- Description
URL scaricabile del file GLB.
- Name
fbx- Type
- string
- Description
URL scaricabile del file FBX.
- Name
obj- Type
- string
- Description
URL scaricabile del file OBJ.
- Name
usdz- Type
- string
- Description
URL scaricabile del file USDZ.
- Name
blend- Type
- string
- Description
URL scaricabile del file Blender.
- Name
stl- Type
- string
- Description
URL scaricabile del file STL.
- Name
3mf- Type
- string
- Description
URL scaricabile del file 3MF. Presente solo quando
3mfè stato richiesto tramitetarget_formats.
- Name
- thumbnail_url
- Type
- string
- Description
URL scaricabile di un'immagine di anteprima renderizzata dal modello rimodellato.
- Name
- alpha_thumbnail_url
- Type
- string
- Description
URL scaricabile di una versione con sfondo trasparente (RGBA) di
thumbnail_url. Presente solo quando il compito è stato creato conalpha_thumbnail: truee l'anteprima trasparente è stata renderizzata con successo; altrimenti questo campo è omesso.
- Name
- progress
- Type
- integer
- Description
Avanzamento del compito. Se il compito non è ancora iniziato, questa proprietà sarà
0. Una volta che il compito è riuscito, diventerà100.
- Name
- status
- Type
- string
- Description
Stato del compito. I valori possibili sono uno di
PENDING,IN_PROGRESS,SUCCEEDED,FAILED.
- Name
- preceding_tasks
- Type
- integer
- Description
Il conteggio dei compiti precedenti.
Il valore di questo campo è significativo solo se lo stato del compito è
PENDING.
- Name
- created_at
- Type
- timestamp
- Description
Timestamp di quando il compito è stato creato, in millisecondi.
- Name
- started_at
- Type
- timestamp
- Description
Timestamp di quando il compito è iniziato, in millisecondi. Se il compito non è ancora iniziato, questa proprietà sarà
0.
- Name
- finished_at
- Type
- timestamp
- Description
Timestamp di quando il compito è terminato, in millisecondi. Se il compito non è ancora terminato, questa proprietà sarà
0.
- Name
- task_error
- Type
- object
- Description
Dettagli dell'errore per i compiti falliti. Vedi Errori per il riferimento completo all'oggetto
task_error.
- Name
- consumed_credits
- Type
- integer
- Description
Il numero di crediti consumati da questo compito. Presente quando lo stato del compito è
PENDING,IN_PROGRESS, oSUCCEEDED. Restituisce0per i compitiFAILED(i crediti sono rimborsati in caso di fallimento).
Esempio di oggetto Remesh Task
{
"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
}