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

Remesh API

Ricostruisci la mesh di un modello 3D con una nuova topology e un nuovo numero di facce, ed esportala nei formati che preferisci. Il modello può provenire da un altro task di Meshy, come Immagine in 3D o Testo in 3D, oppure da un file di modello.


POST/openapi/v1/remesh

Crea un task di Remesh

Crea un task di Remesh. Il task viene eseguito in background. Per sapere quanto tempo richiede di solito un task, vedi Tempi di elaborazione.

Request

POST
/openapi/v1/remesh
# 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"
}

Parametri

  • Name
    input_task_id
    Type
    string
    Obbligatorio
    Description

    Obbligatorio a meno che tu non invii model_url. L'ID del task il cui modello vuoi sottoporre a remesh, ad esempio un task di Testo in 3D, Immagine in 3D, Retexture o Remesh. Il task deve essere uno creato da te con l'API e avere lo stato SUCCEEDED.

  • Name
    model_url
    Type
    string
    Obbligatorio
    Description

    Obbligatorio a meno che tu non invii input_task_id. Il modello da sottoporre a remesh, come URL pubblico o data URI. Se invii entrambi, Meshy usa input_task_id.

    Il modello deve essere un file GLB, glTF, OBJ, FBX o STL di al massimo 400 MB da un URL http o https, oppure 100 MB come data URI. Per un data URI, usa il MIME type application/octet-stream.

    Un file oltre i 100 MB deve inoltre rispettare queste regole:

    • Un file GLB, glTF, FBX o OBJ può avere al massimo 10.000.000 di facce. Meshy conta le facce come triangoli, quindi un quad conta come 2, e una mesh disegnata più volte conta una volta per copia.
    • Un file FBX deve essere binario FBX 7.1 o più recente.
    • Un file GLB o glTF non deve usare la compressione Draco.
  • Name
    target_formats
    Type
    string[]
    predefinito ["glb"]
    Description

    I formati di file da generare.

    Valori disponibili:

    • glb
    • fbx
    • obj
    • usdz
    • blend
    • stl
    • 3mf
  • Name
    topology
    Type
    string
    predefinito triangle
    Description

    Il tipo di faccia del modello sottoposto a remesh.

    Valori disponibili:

    • quad: una mesh a predominanza di quad
    • triangle: una mesh triangolare decimata
  • Name
    target_polycount
    Type
    integer
    predefinito 30000
    Description

    Il numero di facce da ottenere come obiettivo, da 100 a 300000. Il risultato può differire dall'obiettivo, a seconda della geometria del modello. Un valore fuori dall'intervallo restituisce 400.

  • Name
    decimation_mode
    Type
    integer
    Description

    Conteggio adattivo delle facce, per livello. Quando lo imposti, Meshy ignora target_polycount.

    Valori disponibili:

    • 1: ultra
    • 2: alto
    • 3: medio
    • 4: basso
  • Name
    resize_height
    Type
    number
    ⚠ deprecato
    predefinito 0
    Description

    Usa invece la Resize API. L'altezza a cui ridimensionare il modello, in metri. Invia al massimo uno tra resize_height, resize_longest_side e auto_size.

  • Name
    resize_longest_side
    Type
    number
    ⚠ deprecato
    predefinito 0
    Description

    Usa invece la Resize API. La lunghezza a cui ridimensionare il lato più lungo della bounding box del modello, in metri. Invia al massimo uno tra resize_height, resize_longest_side e auto_size.

  • Name
    auto_size
    Type
    boolean
    ⚠ deprecato
    predefinito false
    Description

    Usa invece la Resize API. Se stimare l'altezza reale dell'oggetto tramite visione artificiale e ridimensionare il modello di conseguenza. Invia al massimo uno tra resize_height, resize_longest_side e auto_size.

  • Name
    origin_at
    Type
    string
    ⚠ deprecato
    predefinito bottom
    Description

    Usa invece la Resize API. Dove posizionare l'origine del modello, bottom o center. Il valore predefinito si applica quando invii resize_height, resize_longest_side o auto_size. Senza uno di questi, Meshy sposta l'origine solo se invii origin_at.

  • Name
    convert_format_only
    Type
    boolean
    ⚠ deprecato
    Description

    Usa invece la Convert API. Se convertire soltanto il modello in target_formats. Quando true, Meshy ignora topology, target_polycount, decimation_mode, resize_height, resize_longest_side e auto_size, ma ne controlla comunque i valori, quindi un valore non valido restituisce 400. Con convert_format_only: true, un target_formats vuoto o null restituisce 400.

  • Name
    alpha_thumbnail
    Type
    boolean
    predefinito false
    Description

    Se generare anche un'anteprima con sfondo trasparente (RGBA), restituita in alpha_thumbnail_url quando recuperi il task. thumbnail_url non cambia.

Valori restituiti

Il campo result della risposta contiene l'ID del nuovo task di Remesh.

Modalità di errore

  • Name
    400 - Bad Request
    Description

    La richiesta non può essere eseguita. Il messaggio di errore indica quale problema è stato rilevato. Ad esempio:

    • Parametro mancante: Non è stato inviato né model_url né input_task_id.
    • Task di input non valido: input_task_id non è un task API completato con successo, oppure il suo modello AI non supporta il remesh.
    • Formato del modello non valido: Il file model_url ha un'estensione non supportata.
    • URL non raggiungibile: Meshy non riesce a scaricare il file model_url.
    • File del modello troppo grande: Il file model_url supera i 400 MB da un URL http o https, oppure supera i 100 MB come data URI.
    • Troppe facce: Il file model_url supera i 100 MB e ha più di 10.000.000 di facce. Riduci il numero di facce, poi invia nuovamente il file.
    • FBX ASCII oltre 100 MB: Il file model_url è un FBX ASCII che supera i 100 MB. Invialo come FBX binario o GLB.
    • File del modello illeggibile: Il file model_url supera i 100 MB e Meshy non riesce a leggerne l'intestazione. Ad esempio, è un GLB o glTF compresso con Draco, oppure un FBX binario precedente alla versione 7.1.
    • Intestazione del modello troppo complessa: Il file model_url supera i 100 MB e la sua intestazione ha troppe mesh, nodi o record da controllare. Riduci il numero di oggetti nel file, poi invialo nuovamente.
    • Topologia non valida: topology non è quad né triangle.
    • Parametri reciprocamente esclusivi: La richiesta contiene più di uno tra auto_size, resize_height e resize_longest_side. Inviane solo uno.

    Correggi la richiesta, poi inviala di nuovo. 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 abbastanza crediti per questo task, oppure l'account ha raggiunto un limite di crediti. Controlla il tuo saldo crediti, poi riprova.
    • Piano gratuito: Creare un task richiede un piano a pagamento. Aggiorna il tuo piano nelle impostazioni dell'abbonamento, poi riprova.
  • Name
    403 - Forbidden
    Description

    input_task_id è un modello a bassorilievo, che questo endpoint non può sottoporre a remesh. Il messaggio è This model type does not support this operation. Invia un modello diverso.

  • Name
    404 - Not Found
    Description

    input_task_id non corrisponde a nessuno dei tuoi task. Controlla l'ID del task, poi invia di nuovo la richiesta.

  • Name
    429 - Too Many Requests
    Description

    Hai superato il tuo limite di frequenza. Attendi, poi riprova. Vedi Limiti di frequenza.


GET/openapi/v1/remesh/:id

Ottenere un task di Remesh

Restituisce un task di Remesh tramite il suo ID.

Request

GET
/openapi/v1/remesh/a43b5c6d-7e8f-901a-234b-567c890d1e2f
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,
}

Parametri

  • Name
    id
    Type
    path
    Description

    L'ID del task dalla risposta di creazione.

Restituisce

L'oggetto task di Remesh.


DELETE/openapi/v1/remesh/:id

Elimina un'attività di Remesh

Elimina definitivamente un'attività di Remesh, inclusi i suoi modelli e dati. Non è possibile annullare un'eliminazione.

Request

DELETE
/openapi/v1/remesh/a43b5c6d-7e8f-901a-234b-567c890d1e2f
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 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à che è già iniziata, quindi eliminarla ti farebbe perdere sia i crediti che il risultato. Attendi che raggiunga lo stato SUCCEEDED, FAILED o CANCELED, quindi eliminala.

Eliminare un'attività in uno stato finale (SUCCEEDED, FAILED o CANCELED) non rimborsa i relativi crediti.

Restituisce

200 OK quando l'attività viene eliminata, oppure 409 Conflict quando l'attività è IN_PROGRESS.


GET/openapi/v1/remesh

Elenca i task di Remesh

Restituisce un elenco dei tuoi task di Remesh.

Request

GET
/openapi/v1/remesh
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
  }
]

Parametri

  • Name
    page_num
    Type
    integer
    predefinito 1
    Description

    Il numero di pagina da restituire.

  • Name
    page_size
    Type
    integer
    predefinito 10
    Description

    Il numero di task per pagina, fino a 100.

  • Name
    sort_by
    Type
    string
    Description

    L'ordine di ordinamento.

    Valori disponibili:

    • +created_at: dal più vecchio al più recente
    • -created_at: dal più recente al più vecchio

Restituisce

Un elenco paginato di oggetti task Remesh.


GET/openapi/v1/remesh/:id/stream

Stream di un task di Remesh

Trasmette in streaming gli aggiornamenti di un task di Remesh come Server-Sent Events (SSE).

Request

GET
/openapi/v1/remesh/a43b5c6d-7e8f-901a-234b-567c890d1e2f/stream
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.
// These examples are shortened. Each event holds the full task object.
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,
}

Parametri

  • Name
    id
    Type
    path
    Description

    L'ID del task restituito dalla risposta di creazione.

Valori restituiti

Uno stream di oggetti task di Remesh come Server-Sent Events.

Ogni evento contiene l'oggetto task completo, nello stesso formato restituito dall'endpoint Get. Mentre il task è PENDING o IN_PROGRESS, i suoi campi di risultato non hanno ancora valori.


L'oggetto task Remesh

Un oggetto task Remesh descrive un remesh di un modello 3D. Contiene lo stato, il progresso e i file del modello quando il task ha successo.

Proprietà

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

  • Name
    model_urls
    Type
    object
    Description

    URL di download per il modello remeshato, uno per ogni formato di file. Un formato non generato dal task non ha una chiave, invece di avere una stringa vuota.

    • Name
      glb
      Type
      string
      Description

      Il file GLB.

    • Name
      fbx
      Type
      string
      Description

      Il file FBX.

    • Name
      obj
      Type
      string
      Description

      Il file OBJ.

    • Name
      usdz
      Type
      string
      Description

      Il file USDZ.

    • Name
      blend
      Type
      string
      Description

      Il file Blender.

    • Name
      stl
      Type
      string
      Description

      Il file STL.

    • Name
      3mf
      Type
      string
      Description

      Il file 3MF. Presente solo quando target_formats include 3mf.

  • Name
    thumbnail_url
    Type
    string
    Description

    URL di download per un'immagine di anteprima del modello remeshato.

  • Name
    alpha_thumbnail_url
    Type
    string
    Description

    URL di download per una versione di thumbnail_url con sfondo trasparente (RGBA). Presente solo quando hai creato il task con alpha_thumbnail: true e Meshy ha renderizzato l'anteprima trasparente.

  • Name
    progress
    Type
    integer
    Description

    Quanta parte del task è completata, in percentuale. È 0 finché il task non inizia e 100 quando ha successo.

  • 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 davanti a questo nella coda. Il valore è significativo solo mentre il task è PENDING.

  • Name
    created_at
    Type
    timestamp
    Description

    Ora di creazione del task, in millisecondi Unix.

  • Name
    started_at
    Type
    timestamp
    Description

    Ora di avvio del task, in millisecondi Unix. È 0 finché il task non inizia.

  • Name
    finished_at
    Type
    timestamp
    Description

    Ora di completamento del task, 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. Presente quando lo stato è PENDING, IN_PROGRESS o SUCCEEDED. È 0 per un task FAILED, perché Meshy rimborsa i crediti quando un task fallisce.