API di Remesh

L'API di Remesh ti consente di remesh e esportare modelli 3D esistenti generati da altre API di Meshy (come Immagine in 3D o Testo in 3D) in vari formati. Questa sezione fornisce dettagli su come utilizzare l'API di Remesh.


POST/openapi/v1/remesh

Crea un Task di Remesh

Questo endpoint crea un nuovo task di remesh.

Parametri

  • Name
    input_task_id
    Type
    string
    Obbligatorio
    Description

    L'ID del task completato Immagine in 3D o Testo in 3D che desideri remeshare. Questo task deve essere uno dei seguenti: Testo in 3D Anteprima, Testo in 3D Raffina, Immagine in 3D o Retexture. Inoltre, deve avere uno stato di SUCCEEDED.

  • Name
    model_url
    Type
    string
    Obbligatorio
    Description

    Fornisci un modello 3D per Meshy da remeshare tramite un URL pubblicamente accessibile o un Data URI. Formati supportati: .glb, .gltf, .obj, .fbx, .stl.

    Per i Data URI, utilizza il MIME type: application/octet-stream.

  • Name
    target_formats
    Type
    string[]
    predefinito ["glb"]
    Description

    Una lista di formati target per il modello remeshato. Quando 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 dominante quad.
    • 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ò deviare dal target a seconda della complessità della geometria.

    L'intervallo di valori validi varia a seconda del livello utente:

    • 100 a 300,000 (inclusivo)
  • 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 — ultra conteggio poligoni.
    • 2: Adattivo — alto conteggio poligoni.
    • 3: Adattivo — medio conteggio poligoni.
    • 4: Adattivo — basso conteggio poligoni.
  • Name
    resize_height
    Type
    number
    deprecato
    predefinito 0
    Description

    Ridimensiona il modello a una certa altezza misurata in metri. Raccomandiamo di utilizzare la Resize API dedicata.

  • Name
    resize_longest_side
    Type
    number
    deprecato
    predefinito 0
    Description

    Ridimensiona il modello in modo che la dimensione più lunga della bounding-box sia uguale al valore specificato in metri. Raccomandiamo di utilizzare la Resize API dedicata.

  • Name
    auto_size
    Type
    boolean
    deprecato
    predefinito false
    Description

    Quando impostato su true, il servizio utilizza la visione AI per stimare automaticamente l'altezza reale dell'oggetto e ridimensionare il modello di conseguenza. Raccomandiamo di utilizzare la Resize API dedicata.

Si applica solo quando auto_size = true
  • Name
    origin_at
    Type
    string
    deprecato
    predefinito bottom
    Description

    Posizione dell'origine. Raccomandiamo di utilizzare la Resize API dedicata.

    Valori disponibili: bottom, center.

  • Name
    convert_format_only
    Type
    boolean
    deprecato
    Description

    Se true, il servizio cambierà solo il formato del file modello di input, ignorando altri input come topology, resize_height, e target_polycount. Raccomandiamo di utilizzare la Convert API dedicata.

  • Name
    alpha_thumbnail
    Type
    boolean
    predefinito false
    Description

    Quando impostato su true, il task renderizza inoltre una versione con sfondo trasparente (RGBA) dell'anteprima e la restituisce come alpha_thumbnail_url nella risposta GET. Il campo thumbnail_url esistente rimane invariato.

Ritorni

La proprietà result della risposta contiene l'id del nuovo task di remesh creato.

Modalità di Fallimento

  • Name
    400 - Bad Request
    Description

    La richiesta non era accettabile. Cause comuni:

    • Parametro mancante: Devono essere forniti model_url o input_task_id.
    • Task di input non valido: L'input_task_id deve riferirsi a un task riuscito da un modello supportato.
    • Formato modello non valido: Il model_url punta a un file con un'estensione non supportata.
    • URL irraggiungibile: Il model_url non può essere scaricato.
    • Topology non valida: Il parametro topology non è valido.
    • Parametri mutuamente esclusivi: auto_size e resize_height non possono essere entrambi impostati.
  • Name
    401 - Unauthorized
    Description

    Autenticazione fallita. Controlla la tua chiave API.

  • Name
    402 - Payment Required
    Description

    Crediti insufficienti per eseguire questo task.

  • 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 Task di Remesh

Questo endpoint recupera un task di remesh tramite il suo ID.

Parametri

  • Name
    id
    Type
    path
    Description

    L'ID del task di remesh da recuperare.

Restituisce

L'oggetto Task di Remesh.

Richiesta

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

Risposta

{
  "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'attività di Remesh

Questo endpoint elimina permanentemente un'attività di remesh, inclusi tutti i modelli e i dati associati. Questa azione è irreversibile.

Parametri del percorso

  • Name
    id
    Type
    path
    Description

    L'ID dell'attività di remesh da eliminare.

Restituzioni

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

Elenco delle attività di Remesh

Questo endpoint ti permette di recuperare un elenco di attività di 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 per ordinare.

    Valori disponibili:

    • +created_at: Ordina per tempo di creazione in ordine crescente.
    • -created_at: Ordina per tempo di creazione in ordine decrescente.

Restituisce

Restituisce un elenco paginato di Gli Oggetti Attività di Remesh.

Richiesta

GET
/openapi/v1/remesh
curl https://api.meshy.ai/openapi/v1/remesh?page_size=10 \
-H "Authorization: Bearer ${YOUR_API_KEY}"

Risposta

[
  {
    "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

Stream di un Task di Remesh

Questo endpoint trasmette aggiornamenti in tempo reale per un task di Remesh utilizzando Server-Sent Events (SSE).

Parametri

  • Name
    id
    Type
    path
    Description

    Identificatore univoco per il task di Remesh da trasmettere.

Restituisce

Restituisce un flusso di Oggetti del Task di Remesh come Server-Sent Events.

Per i task PENDING o IN_PROGRESS, il flusso di risposta includerà solo i campi necessari progress e status.

Richiesta

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

Flusso di Risposta

// 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 Remesh Task

L'oggetto Remesh Task rappresenta un'unità di lavoro che Meshy utilizza per rimodellare e esportare un modello 3D esistente in vari formati. L'oggetto ha le seguenti proprietà:

Proprietà

  • Name
    id
    Type
    string
    Description

    Identificatore univoco per il compito. Anche se utilizziamo un UUID ordinabile per id dei compiti come dettaglio di implementazione, non dovresti fare alcuna ipotesi sul formato dell'id.

  • Name
    type
    Type
    string
    Description

    Tipo del compito Remesh. Il valore è remesh.

  • Name
    model_urls
    Type
    object
    Description

    URL scaricabile del file del modello 3D texturizzato generato da Meshy. La proprietà per un formato sarà omessa se il formato non è 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 rimodellato.

  • Name
    alpha_thumbnail_url
    Type
    string
    Description

    URL scaricabile di una versione con sfondo trasparente (RGBA) di thumbnail_url. Presente solo quando il compito è stato creato con alpha_thumbnail: true e l'anteprima trasparente è stata renderizzata con successo; altrimenti questo campo è omesso.

  • Name
    progress
    Type
    integer
    Description

    Avanzamento del compito. Se il compito non è ancora iniziato, questa proprietà sarà 0. Una volta che il compito è riuscito, diventerà 100.

  • Name
    status
    Type
    string
    Description

    Stato del compito. I valori possibili sono uno di PENDING, IN_PROGRESS, SUCCEEDED, FAILED.

  • Name
    preceding_tasks
    Type
    integer
    Description

    Il conteggio dei compiti precedenti.

  • Name
    created_at
    Type
    timestamp
    Description

    Timestamp di quando il compito è stato creato, in millisecondi.

  • Name
    started_at
    Type
    timestamp
    Description

    Timestamp di quando il compito è iniziato, in millisecondi. Se il compito non è ancora iniziato, questa proprietà sarà 0.

  • Name
    finished_at
    Type
    timestamp
    Description

    Timestamp di quando il compito è terminato, in millisecondi. Se il compito non è ancora terminato, questa proprietà sarà 0.

  • Name
    task_error
    Type
    object
    Description

    Dettagli dell'errore per i compiti falliti. Vedi Errori per il riferimento completo all'oggetto task_error.

  • Name
    consumed_credits
    Type
    integer
    Description

    Il numero di crediti consumati da questo compito. Presente quando lo stato del compito è PENDING, IN_PROGRESS, o SUCCEEDED. Restituisce 0 per i compiti FAILED (i crediti sono rimborsati in caso di fallimento).

Esempio di oggetto Remesh Task

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