lowpoly verrà ritirato il 30 ott 2026. Cambia modello prima di queste date per evitare errori nelle richieste. Vedi tutte le deprecazioni

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.


POST/openapi/v1/relief

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

POST
/openapi/v1/relief
# 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 null o "" equivale a ometterlo. Qualsiasi altro valore restituisce 400.

  • Name
    should_generate_model
    Type
    boolean
    predefinito true
    Description

    Se costruire il modello del rilievo. Impostalo su false per 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 20 a 250 millimetri. Con remove_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 0 a 60 millimetri. Con remove_base impostato su true, 0 lascia 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_threshold definisce cosa conta come sfondo. Meshy controlla removal_threshold in entrambi i casi.

Si applica solo quando 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.01 a 1, dove la mappa di profondità va da 0 a 1. 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.1 a 10 millimetri. Quando remove_base è true, ometti il parametro o invia 0.

  • Name
    bend_mode
    Type
    string
    predefinito off
    Description

    Se piegare il rilievo, e in quale direzione. Quando non è off, bend_axis e bend_angle definiscono 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.
Si applica solo quando 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 0 a 360 gradi. Sotto 1, 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 512 a 2048. Un valore più alto mantiene dettagli più fini e produce file più grandi. Al valore predefinito 1024, il file GLB è di circa 40-50 MB e il file STL di circa 80-105 MB. Una foto quadrata produce le dimensioni maggiori. A 2048, sono circa 150 MB e 300 MB. Una piegatura li rende più grandi: il file STL può raggiungere circa 800 MB a 2048.

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_url non è stato inviato.
    • Parametro non valido: Un parametro ha il tipo sbagliato, è fuori dal suo intervallo, o non è uno dei suoi valori disponibili. Ad esempio, variant non è high o low, oppure mesh_resolution non è un intero da 512 a 2048.
    • Spessore della base: base_thickness_mm non è 0 con remove_base impostato su true, oppure è inferiore a 0.1 senza di esso.
    • URL non raggiungibile: Meshy non riesce a scaricare l'immagine da image_url, ad esempio perché l'URL restituisce 404 o 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.

  • 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.


GET/openapi/v1/relief/:id

Ottieni un task di Rilievo

Restituisce un task di Rilievo in base al suo ID.

Request

GET
/openapi/v1/relief/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20
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

L'oggetto task di Rilievo.


DELETE/openapi/v1/relief/:id

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

DELETE
/openapi/v1/relief/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20
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.


GET/openapi/v1/relief

Elenco dei task Rilievo

Restituisce un elenco dei tuoi task Rilievo.

Request

GET
/openapi/v1/relief
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 tra 101 e 255 come 100, mentre un valore maggiore restituisce 400.

  • 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.


GET/openapi/v1/relief/:id/stream

Esegui lo streaming di un task Rilievo

Esegue lo streaming degli aggiornamenti di un task Rilievo come Server-Sent Events (SSE).

Request

GET
/openapi/v1/relief/0199c3d2-5a7e-7b14-9e2f-3c8d1a6b4f20/stream
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_resolution elenca 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. È 0 finché il task non inizia e 100 quando ha esito positivo.

  • Name
    status
    Type
    string
    Description

    Lo stato del task, uno tra PENDING, IN_PROGRESS, SUCCEEDED o FAILED.

  • 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. È 0 finché il task non inizia.

  • Name
    finished_at
    Type
    timestamp
    Description

    Momento in cui il task è terminato, in millisecondi Unix. È 0 finché il task non termina.

  • Name
    expires_at
    Type
    timestamp
    Description

    Momento in cui il risultato del task scade, in millisecondi Unix. È 0 finché 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, oppure 0 per un task FAILED, che Meshy rimborsa.