Remesh API
La Remesh API consente di eseguire il Remesh ed esportare modelli 3D esistenti generati da altre Meshy API (come Immagine in 3D o Testo in 3D) in vari formati. Questa sezione fornisce dettagli su come utilizzare la Remesh API.
Crea un'attività Remesh
Questo endpoint crea una nuova attività Remesh.
Per la conversione del formato e il ridimensionamento, usa le API Converti e API Ridimensiona dedicate. I parametri deprecati di seguito continueranno a funzionare, ma consigliamo i nuovi endpoint per le nuove integrazioni.
Parametri
Solo uno tra input_task_id o model_url è obbligatorio. Se vengono forniti entrambi, input_task_id ha la priorità.
- Name
- input_task_id
- Type
- string
- Obbligatorio
- Description
L'ID dell'attività Immagine in 3D o Testo in 3D completata che desideri sottoporre a Remesh. Questa attività deve essere una delle seguenti: anteprima Testo in 3D, perfezionamento Testo in 3D, Immagine in 3D o Retexture. Inoltre, deve avere uno stato
SUCCEEDED.
- Name
- model_url
- Type
- string
- Obbligatorio
- Description
Fornisci un modello 3D da sottoporre a Remesh con Meshy tramite un URL accessibile pubblicamente o una Data URI. Formati supportati:
.glb,.gltf,.obj,.fbx,.stl.Per le Data URI, usa il MIME type:
application/octet-stream.
- Name
- target_formats
- Type
- string[]
- predefinito ["glb"]
- Description
Un elenco di formati di destinazione per il modello sottoposto a Remesh. Se 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 a predominanza di quadrangoli.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ò discostarsi dal target a seconda della complessità della geometria.
L'intervallo di valori valido varia a seconda del livello utente:
- Da 100 a 300.000 (inclusi)
- 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 — conteggio poligoni ultra.2: adattivo — conteggio poligoni alto.3: adattivo — conteggio poligoni medio.4: adattivo — conteggio poligoni basso.
- Name
- resize_height
- Type
- number
- ⚠ deprecato
- predefinito 0
- Description
Ridimensiona il modello a una determinata altezza misurata in metri. Consigliamo invece di usare l'API Ridimensiona dedicata.
auto_size,resize_heighteresize_longest_sidesi escludono a vicenda.
- Name
- resize_longest_side
- Type
- number
- ⚠ deprecato
- predefinito 0
- Description
Ridimensiona il modello in modo che la dimensione più lunga del bounding box sia uguale al valore specificato in metri. Consigliamo invece di usare l'API Ridimensiona dedicata.
auto_size,resize_heighteresize_longest_sidesi escludono a vicenda.
- Name
- auto_size
- Type
- boolean
- ⚠ deprecato
- predefinito false
- Description
Quando impostato su
true, il servizio usa la visione AI per stimare automaticamente l'altezza reale dell'oggetto e ridimensionare il modello di conseguenza. Consigliamo invece di usare l'API Ridimensiona dedicata.auto_size,resize_heighteresize_longest_sidesi escludono a vicenda.
auto_size = true- Name
- origin_at
- Type
- string
- ⚠ deprecato
- predefinito bottom
- Description
Posizione dell'origine. Consigliamo invece di usare l'API Ridimensiona dedicata.
Valori disponibili:
bottom,center.
- Name
- convert_format_only
- Type
- boolean
- ⚠ deprecato
- Description
Se
true, il servizio cambierà solo il formato del file del modello di input, ignorando altri input cometopology,resize_heightetarget_polycount. Consigliamo invece di usare l'API Converti dedicata.target_formatsdeve essere fornito seconvert_format_onlyè impostato sutrue.
- Name
- alpha_thumbnail
- Type
- boolean
- predefinito false
- Description
Quando impostato su
true, l'attività esegue inoltre il rendering di una versione con sfondo trasparente (RGBA) dell'anteprima e la restituisce comealpha_thumbnail_urlnella risposta GET. Il campothumbnail_urlesistente resta invariato.
Restituisce
La proprietà result della risposta contiene l'id dell'attività Remesh appena creata.
Modalità di errore
- Name
400 - Bad Request- Description
La richiesta non era accettabile. Cause comuni:
- Parametro mancante: è necessario fornire
model_urloinput_task_id. - Attività di input non valida:
input_task_iddeve fare riferimento a un'attività riuscita da un modello supportato. - Formato del modello non valido:
model_urlpunta a un file con un'estensione non supportata. - URL non raggiungibile: non è stato possibile scaricare
model_url. - Topology non valida: il parametro
topologynon è valido. - Parametri mutuamente esclusivi:
auto_sizeeresize_heightnon possono essere impostati entrambi.
- Parametro mancante: è necessario fornire
- Name
401 - Unauthorized- Description
Autenticazione non riuscita. Controlla la tua chiave API.
- Name
402 - Payment Required- Description
Crediti insufficienti per eseguire questa attività.
- 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'attività di Remesh
Questo endpoint recupera un'attività di remesh tramite il suo ID.
Parametri
- Name
- id
- Type
- path
- Description
L'ID dell'attività di remesh da recuperare.
Restituisce
L'oggetto attività di Remesh.
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,
}
Elimina un task Remesh
Questo endpoint elimina definitivamente un task di remesh, inclusi tutti i modelli e i dati associati. Questa azione è irreversibile.
Parametri di percorso
- Name
- id
- Type
- path
- Description
L'ID del task di remesh da eliminare.
Restituisce
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.
Elenca attività Remesh
Questo endpoint consente di recuperare un elenco di attività 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 in base al quale ordinare.
Valori disponibili:
+created_at: Ordina per ora di creazione in ordine crescente.-created_at: Ordina per ora di creazione in ordine decrescente.
Restituisce
Restituisce un elenco paginato degli oggetti attività Remesh.
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
}
]
Esegui lo streaming di un'attività Remesh
Questo endpoint trasmette aggiornamenti in tempo reale per un'attività Remesh utilizzando Server-Sent Events (SSE).
Parametri
- Name
- id
- Type
- path
- Description
Identificatore univoco dell'attività Remesh di cui eseguire lo streaming.
Restituisce
Restituisce uno stream di Oggetti attività Remesh come Server-Sent Events.
Per le attività PENDING o IN_PROGRESS, lo stream di risposta includerà solo i campi progress e status necessari.
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,
}
L'oggetto Task di Remesh
L'oggetto Task di Remesh rappresenta un'unità di lavoro che Meshy utilizza per eseguire il remesh ed esportare un modello 3D esistente in vari formati. L'oggetto ha le seguenti proprietà:
Proprietà
- Name
- id
- Type
- string
- Description
Identificatore univoco per l'attività. Anche se utilizziamo un UUID k-sortable per gli id delle attività come dettaglio di implementazione, non dovresti fare alcuna supposizione sul formato dell'id.
- Name
- type
- Type
- string
- Description
Tipo dell'attività Remesh. Il valore è
remesh.
- Name
- model_urls
- Type
- object
- Description
URL scaricabile del file del modello 3D con texture generato da Meshy. La proprietà relativa a un formato verrà omessa se il formato non viene 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 sottoposto a remesh.
- Name
- alpha_thumbnail_url
- Type
- string
- Description
URL scaricabile di una versione con sfondo trasparente (RGBA) di
thumbnail_url. Presente solo quando l'attività è stata creata conalpha_thumbnail: truee l'anteprima trasparente è stata renderizzata correttamente; in caso contrario, questo campo viene omesso.
- Name
- progress
- Type
- integer
- Description
progress dell'attività. Se l'attività non è ancora stata avviata, questa proprietà sarà
0. Una volta che l'attività è riuscita, diventerà100.
- Name
- status
- Type
- string
- Description
Stato dell'attività. I valori possibili sono uno tra
PENDING,IN_PROGRESS,SUCCEEDED,FAILED.
- Name
- preceding_tasks
- Type
- integer
- Description
Il conteggio delle attività precedenti.
Il valore di questo campo è significativo solo se lo stato dell'attività è
PENDING.
- Name
- created_at
- Type
- timestamp
- Description
timestamp di quando l'attività è stata creata, in millisecondi.
- Name
- started_at
- Type
- timestamp
- Description
timestamp di quando l'attività è stata avviata, in millisecondi. Se l'attività non è ancora stata avviata, questa proprietà sarà
0.
- Name
- finished_at
- Type
- timestamp
- Description
timestamp di quando l'attività è stata completata, in millisecondi. Se l'attività non è ancora completata, questa proprietà sarà
0.
- Name
- task_error
- Type
- object
- Description
Dettagli dell'errore per le attività non riuscite. Consulta Errori per il riferimento completo all'oggetto
task_error.
- Name
- consumed_credits
- Type
- integer
- Description
Il numero di crediti consumati da questa attività. Presente quando lo stato dell'attività è
PENDING,IN_PROGRESSoSUCCEEDED. Restituisce0per le attivitàFAILED(i crediti vengono rimborsati in caso di errore).
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
}