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.


POST/openapi/v1/remesh

Crea un'attività Remesh

Questo endpoint crea una nuova attività Remesh.

Parametri

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

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

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

Si applica solo quando 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 come topology, resize_height e target_polycount. Consigliamo invece di usare l'API Converti dedicata.

  • 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 come alpha_thumbnail_url nella risposta GET. Il campo thumbnail_url esistente 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_url o input_task_id.
    • Attività di input non valida: input_task_id deve fare riferimento a un'attività riuscita da un modello supportato.
    • Formato del modello non valido: model_url punta a un file con un'estensione non supportata.
    • URL non raggiungibile: non è stato possibile scaricare model_url.
    • Topology non valida: il parametro topology non è valido.
    • Parametri mutuamente esclusivi: auto_size e resize_height non possono essere impostati entrambi.
  • 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

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"
}

GET/openapi/v1/remesh/:id

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

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,
}

DELETE/openapi/v1/remesh/:id

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

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

// Returns 200 Ok on success.

GET/openapi/v1/remesh

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 50 elementi.

  • 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

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
  }
]

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

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

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.
// 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 tramite target_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 con alpha_thumbnail: true e 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.

  • 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_PROGRESS o SUCCEEDED. Restituisce 0 per 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
}