API Rilievo
Trasforma una foto in un modello 3D a bassorilievo e in una mappa di profondità a 16 bit, per la stampa 3D, l'incisione laser e la fresatura CNC.
Crea un task Rilievo
Crea un task Rilievo. Il task trasforma una foto in un modello a bassorilievo. Quando ha successo, il task produce il modello come file GLB e file STL, una mappa di profondità in scala di grigi a 16 bit e un'immagine di anteprima. Per ottenere solo la mappa di profondità, imposta should_generate_model su false.
Il task viene eseguito in background.
Un task Rilievo non può essere l'input di un altro endpoint, come Remesh, Converti o Auto Split. Tali richieste restituiscono 403.
Request
# Simple request: a low relief, 60 mm on its longer side
curl https://api.meshy.ai/openapi/v1/relief \
-X POST \
-H "Authorization: Bearer ${YOUR_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
"image_url": "<your publicly accessible image url or base64-encoded data URI>"
}'
# Advanced request: a deep 120 mm relief with a thicker base, curved from side to side
curl https://api.meshy.ai/openapi/v1/relief \
-X POST \
-H "Authorization: Bearer ${YOUR_API_KEY}" \
-H 'Content-Type: application/json' \
-d '{
"image_url": "<your publicly accessible image url or base64-encoded data URI>",
"variant": "high",
"size_mm": 120,
"carving_depth_mm": 10,
"base_thickness_mm": 3,
"bend_mode": "convex",
"bend_angle": 90
}'
Response
{
"result": "0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20"
}
Parametri
- Name
- image_url
- Type
- string
- Obbligatorio
- Description
La foto da trasformare in rilievo, come URL pubblico o Data URI (
data:image/png;base64,...).L'immagine deve essere un file JPG, JPEG, PNG o WebP di al massimo 20 MB e almeno 32 × 32 pixel. Il lato più lungo può essere al massimo circa 16 volte il lato più corto. Qualsiasi altra immagine restituisce
400. Meshy riempie le aree trasparenti con il nero prima di costruire il rilievo.
- Name
- variant
- Type
- string
- predefinito low
- Description
Lo stile del rilievo. Definisce la mappa di profondità e imposta il valore predefinito di
carving_depth_mm.Valori disponibili:
high: incisione più profonda, per pezzi stampati in 3D.low: incisione poco profonda, per incisione laser, lavorazione CNC e targhe sottili.
Inviare
nullo""equivale a ometterlo. Qualsiasi altro valore restituisce400.
- Name
- should_generate_model
- Type
- boolean
- predefinito true
- Description
Se costruire il modello del rilievo. Impostalo su
falseper un task che produce solo la mappa di profondità, senza modello e senza immagine di anteprima. Meshy controlla comunque i parametri di dimensione, incisione, base, piegatura e risoluzione, ma non li utilizza. Non modifica il costo in crediti.
- Name
- size_mm
- Type
- number
- predefinito 60
- Description
La lunghezza del lato più lungo della foto sul modello, misurata piatta prima di qualsiasi piegatura, da
20a250millimetri. Conremove_base, il modello può essere più piccolo.
- Name
- carving_mode
- Type
- string
- predefinito emboss
- Description
Se il soggetto risalta dalla lastra o viene inciso al suo interno.
Valori disponibili:
emboss: le parti più vicine della foto risaltano.engrave: la profondità è invertita, quindi le parti più vicine vengono incise all'interno.
La mappa di profondità è la stessa in entrambe le modalità.
- Name
- carving_depth_mm
- Type
- number
- predefinito 6 (high), 3 (low)
- Description
Quanto è profondo il rilievo inciso, da
0a60millimetri. Conremove_baseimpostato sutrue,0lascia un modello vuoto. Il task comunque riesce e costa 20 crediti, e i suoi file GLB e STL non hanno geometria.
- Name
- remove_base
- Type
- boolean
- predefinito false
- Description
Se ritagliare lo sfondo e non costruire alcuna lastra di base. Quando è
true,removal_thresholddefinisce cosa conta come sfondo. Meshy controllaremoval_thresholdin entrambi i casi.
remove_base = true- Name
- removal_threshold
- Type
- number
- predefinito 0.01
- Description
La profondità al di sotto della quale Meshy ritaglia lo sfondo, da
0.01a1, dove la mappa di profondità va da0a1. Un valore alto può ritagliare l'intero rilievo e lasciare un modello vuoto, che comunque riesce e viene addebitato.
- Name
- base_thickness_mm
- Type
- number
- predefinito 1, or 0 with remove_base
- Description
Lo spessore della lastra di base, da
0.1a10millimetri. Quandoremove_baseètrue, ometti il parametro o invia0.
- Name
- bend_mode
- Type
- string
- predefinito off
- Description
Se piegare il rilievo, e in quale direzione. Quando non è
off,bend_axisebend_angledefiniscono la piegatura. Meshy li controlla in entrambi i casi.Valori disponibili:
off: un rilievo piatto.convex: la parte frontale si gonfia verso l'esterno.concave: la parte frontale si curva verso l'interno.
bend_mode = convex or concave- Name
- bend_axis
- Type
- string
- predefinito xz
- Description
Quali bordi la piegatura arrotola.
Valori disponibili:
xz: i bordi sinistro e destro.yz: i bordi superiore e inferiore.
- Name
- bend_angle
- Type
- number
- predefinito 60
- Description
L'arco che la piegatura copre, da
0a360gradi. Sotto1, il rilievo resta piatto.
- Name
- mesh_resolution
- Type
- integer
- predefinito 1024
- Description
Il numero di punti della mesh lungo il lato più lungo della foto, da
512a2048. Un valore più alto mantiene dettagli più fini e produce file più grandi. Al valore predefinito1024, il file GLB è di circa 40-50 MB e il file STL di circa 80-105 MB. Una foto quadrata produce le dimensioni maggiori. A2048, sono circa 150 MB e 300 MB. Una piegatura li rende più grandi: il file STL può raggiungere circa 800 MB a2048.
Valori restituiti
202 Accepted, con l'ID del nuovo task Rilievo in result.
Modalità di fallimento
- Name
400 - Bad Request- Description
La richiesta non può essere eseguita. Il messaggio di errore indica quale problema è stato trovato. Ad esempio:
- Parametro mancante:
image_urlnon è stato inviato. - Parametro non valido: Un parametro ha il tipo sbagliato, è fuori dal suo intervallo, o non è uno dei suoi valori disponibili. Ad esempio,
variantnon èhigholow, oppuremesh_resolutionnon è un intero da512a2048. - Spessore della base:
base_thickness_mmnon è0conremove_baseimpostato sutrue, oppure è inferiore a0.1senza di esso. - URL non raggiungibile: Meshy non riesce a scaricare l'immagine da
image_url, ad esempio perché l'URL restituisce404o va in timeout. - Immagine non valida: L'immagine non è un file JPG, JPEG, PNG o WebP, supera i 20 MB, è più piccola di 32 × 32 pixel, ha troppi pixel, o non può essere letta.
- Proporzioni estreme: Il lato più lungo dell'immagine è più di circa 16 volte il lato più corto.
Correggi la richiesta, quindi inviala di nuovo. Meshy non addebita crediti per questo. Vedi Errori.
- Parametro mancante:
- Name
401 - Unauthorized- Description
La chiave API è mancante o non valida. Controlla l'header
Authorization.
- Name
402 - Payment Required- Description
Ad esempio:
- Crediti insufficienti: L'account non ha crediti sufficienti per questo task, oppure l'account ha raggiunto un limite di crediti. Controlla il tuo saldo crediti, quindi riprova.
- Piano gratuito: Creare un task richiede un piano a pagamento. Aggiorna il tuo piano nelle impostazioni dell'abbonamento, quindi riprova.
- Name
403 - Forbidden- Description
La moderation dei contenuti ha bloccato l'immagine. Meshy non addebita crediti per la richiesta. Invia un'immagine diversa.
- Name
429 - Too Many Requests- Description
È stato raggiunto uno di questi limiti:
- Hai inviato troppe richieste. Attendi, quindi riprova. Vedi Limiti di frequenza.
- Troppi tuoi task sono in coda o in esecuzione. Attendi che alcuni terminino, quindi riprova.
- Su un piano illimitato senza crediti residui, hai raggiunto il numero di task che possono essere eseguiti senza crediti. Attendi che un task finisca, oppure aggiungi crediti.
Se un controllo di sicurezza rifiuta l'immagine mentre il task è in esecuzione, il task fallisce con task_error.type impostato su invalid_input e task_error.code impostato su provider_content_refused. Meshy rimborsa i crediti del task. Invia un'immagine diversa. Vedi Errori.
Ottieni un task di Rilievo
Restituisce un task di Rilievo in base al suo ID.
Request
curl https://api.meshy.ai/openapi/v1/relief/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20 \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response
{
"id": "0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20",
"type": "relief",
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/model.glb?Expires=***",
"stl": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/model.stl?Expires=***"
},
"depth_map_url": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/depth.png?Expires=***",
"thumbnail_url": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/preview.png?Expires=***",
"progress": 100,
"status": "SUCCEEDED",
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000060000,
"expires_at": 1700259260000,
"task_error": null,
"consumed_credits": 20
}
Parametri
- Name
- id
- Type
- path
- Description
L'ID del task dalla risposta di creazione.
Restituisce
Elimina un'attività di Rilievo
Elimina definitivamente un'attività di Rilievo, inclusi il suo modello, la mappa di profondità e i dati. Non puoi annullare un'eliminazione.
Request
curl --request DELETE \
--url https://api.meshy.ai/openapi/v1/relief/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20 \
-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 keeps 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."
}
Parametri del percorso
- Name
- id
- Type
- path
- Description
L'ID dell'attività da eliminare.
Stato dell'attività
Eliminare un'attività PENDING rimborsa i crediti utilizzati al momento della sua creazione.
Un'attività IN_PROGRESS non può essere eliminata. La richiesta restituisce 409 Conflict,
e l'attività continua a essere eseguita. Meshy non rimborsa un'attività già avviata,
quindi eliminarla ti costerebbe sia i crediti che il risultato. Attendi che
raggiunga lo stato SUCCEEDED o FAILED, quindi eliminala.
Eliminare un'attività SUCCEEDED non rimborsa i suoi crediti. Un'attività FAILED è già stata rimborsata quando è fallita.
Restituisce
200 OK quando l'attività viene eliminata, oppure 409 Conflict quando l'attività è
IN_PROGRESS.
Elenco dei task Rilievo
Restituisce un elenco dei tuoi task Rilievo.
Request
curl https://api.meshy.ai/openapi/v1/relief?page_size=10 \
-H "Authorization: Bearer ${YOUR_API_KEY}"
Response
[
{
"id": "0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20",
"type": "relief",
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/model.glb?Expires=***",
"stl": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/model.stl?Expires=***"
},
"depth_map_url": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/depth.png?Expires=***",
"thumbnail_url": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/preview.png?Expires=***",
"progress": 100,
"status": "SUCCEEDED",
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000060000,
"expires_at": 1700259260000,
"task_error": null,
"consumed_credits": 20
}
]
Parametri
- Name
- page_num
- Type
- integer
- Description
Il numero di pagina da restituire. Inizia da e ha come valore predefinito
1.
- Name
- page_size
- Type
- integer
- Description
Il numero di task per pagina, fino a
100. Il valore predefinito è10. Meshy tratta un valore compreso tra101e255come100, mentre un valore maggiore restituisce400.
- Name
- sort_by
- Type
- string
- Description
L'ordine di ordinamento.
Valori disponibili:
+created_at: dal più vecchio-created_at: dal più recente
Restituisce
Un elenco paginato di oggetti task Rilievo.
Esegui lo streaming di un task Rilievo
Esegue lo streaming degli aggiornamenti di un task Rilievo come Server-Sent Events (SSE).
Request
curl -N https://api.meshy.ai/openapi/v1/relief/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/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 (other task fields omitted here for brevity;
// each frame is the full task object).
event: message
data: {
"id": "0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20",
"progress": 0,
"status": "PENDING"
}
event: message
data: {
"id": "0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20",
"type": "relief",
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/model.glb?Expires=***",
"stl": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/model.stl?Expires=***"
},
"depth_map_url": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/depth.png?Expires=***",
"thumbnail_url": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/preview.png?Expires=***",
"progress": 100,
"status": "SUCCEEDED",
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000060000,
"expires_at": 1700259260000,
"task_error": null,
"consumed_credits": 20
}
Parametri
- Name
- id
- Type
- path
- Description
L'ID del task dalla risposta di creazione.
Valori restituiti
Uno stream di oggetti task Rilievo come Server-Sent Events.
Ogni evento message contiene l'oggetto task completo, lo stesso restituito da Recupera un task Rilievo. Mentre il task è PENDING o IN_PROGRESS, i campi che cambiano tra un evento e l'altro sono progress, status, started_at e preceding_tasks (presente solo mentre ci sono task in coda prima di questo). model_urls, depth_map_url e thumbnail_url ottengono i loro valori quando il task raggiunge lo stato SUCCEEDED. Un task che genera solo la mappa di profondità mantiene model_urls a {} e thumbnail_url vuoto.
Un evento error contiene solo status_code e message, quindi controlla il nome dell'evento prima di leggere status.
L'oggetto task Rilievo
Un oggetto task Rilievo descrive un rilievo creato da una foto. model_urls, depth_map_url e thumbnail_url sono sempre presenti e vuoti finché il task non ha esito positivo.
The Relief Task Object
{
"id": "0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20",
"type": "relief",
"model_urls": {
"glb": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/model.glb?Expires=***",
"stl": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/model.stl?Expires=***"
},
"depth_map_url": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/depth.png?Expires=***",
"thumbnail_url": "https://assets.meshy.ai/***/tasks/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/output/preview.png?Expires=***",
"progress": 100,
"status": "SUCCEEDED",
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000060000,
"expires_at": 1700259260000,
"task_error": null,
"consumed_credits": 20
}
Depth map only
{
"id": "0199c3d2-6b8f-7c25-8f3a-4d9e2b7c5a31",
"type": "relief",
"model_urls": {},
"depth_map_url": "https://assets.meshy.ai/***/tasks/0199c3d2-6b8f-7c25-8f3a-4d9e2b7c5a31/output/depth.png?Expires=***",
"thumbnail_url": "",
"progress": 100,
"status": "SUCCEEDED",
"created_at": 1699999999000,
"started_at": 1700000000000,
"finished_at": 1700000030000,
"expires_at": 1700259230000,
"task_error": null,
"consumed_credits": 20
}
- Name
- id
- Type
- string
- Description
L'ID del task. Trattalo come una stringa opaca e non fare affidamento sul suo formato.
- Name
- type
- Type
- string
- Description
Il tipo di task, sempre
relief.
- Name
- model_urls
- Type
- object
- Description
URL di download per il modello del rilievo. I file possono essere di grandi dimensioni;
mesh_resolutionelenca le dimensioni tipiche.- Name
glb- Type
- string
- Description
Il file GLB, senza texture. Le sue unità sono i metri. Assente per un task solo depth-map.
- Name
stl- Type
- string
- Description
Lo stesso modello come file STL binario. Le sue unità sono i millimetri, quindi si apre alla dimensione reale del rilievo, con Z verso l'alto. Assente per un task solo depth-map.
- Name
- depth_map_url
- Type
- string
- Description
URL di download per la depth map in scala di grigi a 16 bit da cui è costruito il rilievo. I pixel più chiari sono più alti. I valori sono altezze relative, non millimetri. I software di incisione laser e CNC possono usarla come height map. Il file è di circa 1-2 MB. Vuoto se non ce n'è nessuna.
- Name
- thumbnail_url
- Type
- string
- Description
URL di download per un'immagine di anteprima del modello del rilievo. Vuoto se non è stata renderizzata alcuna anteprima, anche per un task solo depth-map.
- Name
- progress
- Type
- integer
- Description
Quanto del task è completato, in percentuale. È
0finché il task non inizia e100quando ha esito positivo.
- Name
- status
- Type
- string
- Description
Lo stato del task, uno tra
PENDING,IN_PROGRESS,SUCCEEDEDoFAILED.
- Name
- preceding_tasks
- Type
- integer
- Description
Il numero di task che precedono questo nella coda. Il campo viene omesso quando il valore è
0, quindi appare solo finché ci sono task davanti a questo.
- Name
- created_at
- Type
- timestamp
- Description
Momento in cui il task è stato creato, in millisecondi Unix.
- Name
- started_at
- Type
- timestamp
- Description
Momento in cui il task è iniziato, in millisecondi Unix. È
0finché il task non inizia.
- Name
- finished_at
- Type
- timestamp
- Description
Momento in cui il task è terminato, in millisecondi Unix. È
0finché il task non termina.
- Name
- expires_at
- Type
- timestamp
- Description
Momento in cui il risultato del task scade, in millisecondi Unix. È
0finché il task non termina.
- Name
- task_error
- Type
- object
- Description
I dettagli dell'errore quando il task fallisce. Vedi Errori.
- Name
- consumed_credits
- Type
- integer
- Description
Il numero di crediti utilizzati dal task:
20, oppure0per un taskFAILED, che Meshy rimborsa.