Trasforma un prompt testuale o una foto di origine in un paralume stampabile in 3D in due
fasi: prototype genera un'immagine concettuale stilizzata bianco opaco, quindi
build trasforma quell'immagine concettuale in un paralume STL cavo (opzionalmente
abbinato a un disco di base per un supporto per sorgente luminosa). Le due fasi sono collegate
tramite input_task_id.
Genera una singola immagine concettuale bianco opaco per il paralume — sia
da un prompt di testo (text-to-3D) sia da una foto di riferimento (image-to-3D).
L'ID dell'attività restituito è quello che passi come input_task_id all'endpoint
di build. Consulta
L'oggetto attività prototipo lampada
per la forma della risposta.
Parametri
È richiesto esattamente uno tra text o image_url. Passarli entrambi, o nessuno dei due, restituisce 400.
Name
text
Type
string
Obbligatorio
Description
Prompt di testo che descrive il soggetto desiderato del paralume. Richiesto quando image_url viene omesso. Massimo 800 caratteri.
Name
image_url
Type
string
Obbligatorio
Description
Foto sorgente che Meshy usa come riferimento visivo per il paralume. Richiesta quando text viene omesso. Attualmente supportiamo i formati .jpg, .jpeg, .png e .webp.
Esistono due modi per fornire l'immagine:
URL accessibile pubblicamente: un URL accessibile da Internet pubblico.
Data URI: un Data URI dell'immagine codificato in base64. Esempio di Data URI: data:image/jpeg;base64,<your base64-encoded image data>.
Name
image_subject
Type
string
predefinito character
Description
Suggerimento sulla categoria del soggetto per il percorso image-to-3D. Valori disponibili:
character (predefinito) — singolo soggetto personaggio / oggetto (statuetta, animale, mascotte, ecc.).
Nome attività opzionale a scopo di visualizzazione. Massimo 100 caratteri.
Restituisce
La proprietà result della risposta contiene l'id dell'attività di prototipo di lampada appena creata. Esegui il polling dell'endpoint Ottieni un'attività o iscriviti allo stream finché l'attività non raggiunge SUCCEEDED, quindi passa quell'ID all'endpoint di build come input_task_id.
Modalità di errore
Name
400 - Bad Request
Description
La richiesta non era accettabile. Cause comuni:
Parametro mancante: è richiesto esattamente uno tra text o image_url.
Entrambi forniti: passare sia text sia image_url viene rifiutato — sono mutuamente esclusivi.
Formato immagine non valido: l'image_url fornito non è in un formato supportato (.jpg, .jpeg, .png, .webp).
Dimensioni immagine fuori intervallo: l'immagine è troppo piccola, supera la dimensione massima del file o supera il conteggio massimo di pixel.
URL non raggiungibile: non è stato possibile scaricare l'image_url (404 o timeout).
Data URI non valido: la stringa base64 è malformata.
Contenuto segnalato: l'immagine di input è stata segnalata dalla moderation NSFW o della proprietà intellettuale.
Testo troppo lungo: text supera 800 caratteri.
image_subject non valido: non è uno tra character / landscape.
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/creative-lab/lamp/v1/prototype
# Stage 1 (image-to-3D): generate a matte-white lampshade concept imagecurl https://api.meshy.ai/openapi/creative-lab/lamp/v1/prototype \ -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>", "image_subject": "character" }'# Stage 1 (text-to-3D): generate from a text promptcurl https://api.meshy.ai/openapi/creative-lab/lamp/v1/prototype \ -X POST \ -H "Authorization: Bearer ${YOUR_API_KEY}" \ -H 'Content-Type: application/json' \ -d '{ "text": "a stylized owl perched on a tree branch under moonlight" }'
Response
{"result":"018a210d-8ba4-705c-b111-1f1776f7f578"}
Prototype example
Start with a source photo, then generate the prototype image used by the lamp build stage.
Genera il paralume finale stampabile in 3D da un'attività prototipo
riuscita. La build esegue una pipeline image-to-3D sull'immagine concettuale
del prototipo, quindi post-processa la mesh tramite il processore lampada per svuotarla,
appiattire la parte superiore, tagliare opzionalmente una base e (quando viene scelto
un preset di fissaggio) generare un disco di base separato per la sorgente luminosa. Consulta
L'oggetto attività di build della lampada per la
forma della risposta.
Parametri
Name
input_task_id
Type
string
Obbligatorio
Description
L'ID attività di un'attività prototipo creata tramite questo stesso endpoint OpenAPI. Il prototipo deve essere stato creato con la stessa chiave API, deve aver raggiunto SUCCEEDED e deve aver prodotto esattamente un'immagine candidata.
Le attività prototipo create tramite la webapp non sono accettate — l'endpoint di build accetta solo attività prototipo prodotte da POST /openapi/creative-lab/lamp/v1/prototype e rifiuta qualsiasi altra origine con 404.
Name
name
Type
string
Description
Nome attività opzionale a scopo di visualizzazione. Massimo 100 caratteri.
options
Parametri di regolazione opzionali per la geometria del paralume. Ogni campo ha un valore predefinito ragionevole — invia solo quelli che vuoi sovrascrivere.
Name
diameter_mm
Type
number
predefinito 80
Description
Dimensione massima target della bounding box del paralume, in millimetri. La mesh viene scalata uniformemente per adattarsi. Intervallo: [50, 400].
Name
thickness_mm
Type
number
predefinito 1.5
Description
Spessore parete del paralume cavo, in millimetri. Intervallo: (0, 10].
Name
cut_amount_percent
Type
number
predefinito 35
Description
Percentuale dell'altezza del paralume da appiattire nella parte superiore affinché la stampa possa poggiare sul piano. Intervallo: [1, 100].
Name
light_source_preset
Type
string
predefinito bambu_mh001_60mm
Description
Preset di fissaggio della sorgente luminosa che determina se (e quale) disco di base emettere insieme al paralume. Valori disponibili:
bambu_mh001_60mm (predefinito) — emette un disco di base da 60 mm dimensionato per un fissaggio sorgente luminosa compatibile. Il risultato include model_urls.base_stl.
none — nessun fissaggio, nessun disco di base. model_urls.base_stl viene omesso.
Name
fixture_offset_x_mm
Type
number
predefinito 0
Description
Offset orizzontale sull'asse X del ritaglio del fissaggio rispetto al centro del paralume, in millimetri. Significativo solo quando light_source_preset ≠ none. Intervallo: [-80, 80].
Name
fixture_offset_z_mm
Type
number
predefinito 0
Description
Offset verticale sull'asse Z del ritaglio del fissaggio rispetto al fondo del paralume, in millimetri. Intervallo: [-80, 80].
Name
rotate_x_deg
Type
number
predefinito 0
Description
Rotazione attorno all'asse X applicata alla mesh importata prima dell'elaborazione, in gradi. Intervallo: [-360, 360].
Name
rotate_y_deg
Type
number
predefinito 0
Description
Rotazione attorno all'asse Y applicata alla mesh importata prima dell'elaborazione, in gradi. Intervallo: [-360, 360].
Name
rotate_z_deg
Type
number
predefinito 0
Description
Rotazione attorno all'asse Z applicata alla mesh importata prima dell'elaborazione, in gradi. Intervallo: [-360, 360].
Name
include_result_json
Type
boolean
predefinito false
Description
Quando true e output.format è zip, include il result.json del processore lampada (contenente metriche della mesh misurate + il set di opzioni risolto) all'interno del bundle. Ignorato quando output.format è stl.
output
Selettore opzionale del formato di trasmissione. Il valore predefinito è stl.
Name
format
Type
string
predefinito stl
Description
Bundle di artefatti restituito dalla build. Valori disponibili:
stl (predefinito) — restituisce il paralume come model_urls.lamp_stl, più model_urls.base_stl quando light_source_preset ≠ none.
zip — impacchetta ogni artefatto emesso dal processore (lamp.stl, base.stl opzionale, result.json opzionale) in un singolo zip e lo restituisce sotto model_urls.bundle_zip.
Restituisce
La proprietà result della risposta contiene l'id attività della nuova attività di build della lampada creata. Esegui il polling dell'endpoint Ottieni un'attività o sottoscrivi lo stream finché l'attività non raggiunge SUCCEEDED, quindi scarica gli artefatti da model_urls.
Modalità di errore
Name
400 - Bad Request
Description
La richiesta non era accettabile. Cause comuni:
Parametro mancante: input_task_id è obbligatorio.
UUID non valido: input_task_id non è un UUID valido.
Elemento padre non riuscito: l'attività prototipo referenziata non ha ancora raggiunto SUCCEEDED.
Nessun candidato: l'attività prototipo è riuscita ma non ha prodotto alcuna immagine candidata.
Opzioni fuori intervallo: uno dei campi options è uscito dal relativo intervallo consentito o set di enum.
Name
401 - Unauthorized
Description
Autenticazione non riuscita. Controlla la tua chiave API.
Name
402 - Payment Required
Description
Crediti insufficienti per eseguire questa attività.
Name
404 - Not Found
Description
L'attività prototipo referenziata non esiste, appartiene a un utente diverso o è stata creata tramite la webapp (solo le attività prototipo in modalità API possono essere concatenate alla build).
Recupera un'attività di prototipo o build dato un id attività valido. Il percorso URL
deve corrispondere alla fase dell'attività: un'attività di build recuperata tramite
/prototype/:id restituisce 404, e viceversa.
Annulla un'attività lampada. Se l'attività è ancora PENDING, i crediti consumati
al momento della creazione vengono rimborsati. Le attività già IN_PROGRESS vengono
annullate senza rimborso (il worker potrebbe già stare consumando risorse).
Le attività che hanno già raggiunto uno stato terminale (SUCCEEDED, FAILED,
CANCELED) non possono essere annullate.
Il percorso dell'URL deve corrispondere alla fase dell'attività — DELETE su
/prototype/:buildId restituisce 404.
Parametri del percorso
Name
id
Type
path
Description
Identificatore univoco dell'attività lampada da annullare.
Restituisce
Restituisce 204 No Content in caso di successo con un corpo vuoto.
Mode di errore
Name
400 - Bad Request
Description
L'attività è già in uno stato terminale e non può essere annullata.
Name
404 - Not Found
Description
L'attività non esiste, appartiene a un altro utente oppure la sua fase non corrisponde al percorso dell'URL.
Esegui lo streaming degli aggiornamenti in tempo reale per un'attività lampada tramite Server-Sent Events (SSE).
Il percorso URL deve corrispondere alla fase dell'attività — aprire uno stream su
/prototype/:buildId/stream emette un singolo payload event: error con
status_code: 404 e chiude lo stream.
Parametri
Name
id
Type
path
Description
Identificatore univoco dell'attività lampada di cui eseguire lo streaming.
Restituisce
Restituisce uno stream di oggetti attività Prototipo lampada
o Build lampada come
Server-Sent Events. Per attività PENDING o IN_PROGRESS, lo stream di risposta
includerà solo i campi necessari progress e status.
// Error event example (wrong stage or task not found)event: errordata: {"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: messagedata: {"id": "019c320e-9a8f-7a1c-9c11-2a1876f8a9bb","progress": 0,"status": "PENDING"}event: messagedata: {"id": "019c320e-9a8f-7a1c-9c11-2a1876f8a9bb","type": "creative-lab-lamp-build","status": "SUCCEEDED","progress": 100,"created_at": 1729123500000,"started_at": 1729123510000,"finished_at": 1729123535000,"expires_at": 1729382735000,"task_error": null,"consumed_credits": 30,"model_urls": {"lamp_stl":"https://assets.meshy.ai/***/tasks/019c320e-9a8f-7a1c-9c11-2a1876f8a9bb/output/lamp.stl?Expires=***","base_stl":"https://assets.meshy.ai/***/tasks/019c320e-9a8f-7a1c-9c11-2a1876f8a9bb/output/base.stl?Expires=***" }}
Recupera un elenco paginato delle tue attività lampada per una singola fase. Il percorso
dell'URL seleziona la fase — /prototype restituisce le attività prototype; /build
restituisce le attività build. Le attività dell'altra fase non sono incluse in nessuna
risposta.
Parametri del percorso
Name
stage
Type
path
Obbligatorio
Description
O prototype o build. La raccolta restituisce solo le attività
la cui fase corrisponde all'URL — recuperare /prototype non restituisce mai
attività build e viceversa.
Parametri di query
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
predefinito -created_at
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.
L'oggetto dell'attività Prototipo lampada è un'unità di lavoro che Meshy monitora per
generare un'immagine concettuale stilizzata bianco opaco a partire da un prompt testuale
o da una foto sorgente. L'output di questa fase viene concatenato alla
fase di build tramite input_task_id.
Proprietà
Name
id
Type
string
Description
Identificatore univoco dell'attività. Sebbene utilizziamo un UUID k-sortable per gli id delle attività come dettaglio implementativo, non dovresti fare alcuna supposizione sul formato dell'id.
Name
type
Type
string
Description
Tipo dell'attività. Il valore è creative-lab-lamp-prototype.
Name
name
Type
string
Description
Il nome dell'attività fornito quando l'attività è stata creata. Stringa vuota se non è stato fornito alcun nome.
Name
status
Type
string
Description
Stato dell'attività. I valori possibili sono uno tra PENDING, IN_PROGRESS, SUCCEEDED, FAILED, CANCELED.
Name
progress
Type
integer
Description
progress dell'attività. Se l'attività non è ancora stata avviata, questa proprietà sarà 0. Una volta che l'attività ha avuto esito positivo, diventerà 100.
Name
created_at
Type
timestamp
Description
Timestamp di quando l'attività è stata creata, in millisecondi.
Un timestamp rappresenta il numero di millisecondi trascorsi dal 1° gennaio 1970 UTC, seguendo
lo standard RFC 3339.
Ad esempio, venerdì 1 settembre 2023 12:00:00 PM GMT è rappresentato come 1693569600000. Questo si applica
a tutti i timestamp in Meshy API.
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
expires_at
Type
timestamp
Description
Timestamp di quando il risultato dell'attività scade, in millisecondi.
Name
preceding_tasks
Type
integer
Description
Il numero di attività precedenti.
Il valore di questo campo è significativo solo se lo stato dell'attività è PENDING.
Name
task_error
Type
object
Description
Dettagli dell'errore per le attività non riuscite. Consulta Errori per il riferimento completo dell'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).
Name
image_urls
Type
array of strings
Description
URL scaricabili per le immagini concettuali candidate generate da questa attività prototipo. Attualmente l'API restituisce sempre esattamente un candidato; il campo è un array in modo che revisioni future possano mostrare più candidati senza una modifica incompatibile.
L'oggetto attività di build della lampada è un'unità di lavoro che Meshy tiene traccia per
generare il paralume finale stampabile in 3D da un'attività prototipo con stato SUCCEEDED.
La build esegue una pipeline di bozza image-to-3D + texture sull'immagine concettuale
del prototipo, quindi post-elabora il mesh tramite il processore per lampada per
svuotare, appiattire e (opzionalmente) tagliare una base di fissaggio.
Proprietà
Name
id
Type
string
Description
Identificatore univoco per il task.
Name
type
Type
string
Description
Tipo del task. Il valore è creative-lab-lamp-build.
Name
name
Type
string
Description
Il nome del task fornito quando il task è stato creato. Stringa vuota se non è stato fornito alcun nome.
Name
status
Type
string
Description
Stato del task. I valori possibili sono uno tra PENDING, IN_PROGRESS, SUCCEEDED, FAILED, CANCELED.
Name
progress
Type
integer
Description
progress del task. Se il task non è ancora iniziato, questa proprietà sarà 0. Una volta che il task è riuscito, diventerà 100.
Name
created_at
Type
timestamp
Description
Timestamp di quando il task è stato creato, in millisecondi.
Name
started_at
Type
timestamp
Description
Timestamp di quando il task è stato avviato, in millisecondi.
Name
finished_at
Type
timestamp
Description
Timestamp di quando il task è stato completato, in millisecondi.
Name
expires_at
Type
timestamp
Description
Timestamp di quando il risultato del task scade, in millisecondi.
Name
preceding_tasks
Type
integer
Description
Il numero di task precedenti. Significativo solo quando lo stato è PENDING.
Name
task_error
Type
object
Description
Dettagli dell'errore per i task non riusciti. Vedi Errori per il riferimento completo dell'oggetto task_error.
Name
consumed_credits
Type
integer
Description
Il numero di crediti consumati da questo task. Restituisce 0 per i task FAILED (i crediti vengono rimborsati in caso di errore).
Name
model_urls
Type
object
Description
URL scaricabili per gli artefatti generati, indicizzati per nome dell'artefatto. L'insieme di chiavi dipende da output.format e options.light_source_preset:
Name
lamp_stl
Type
string
Description
URL scaricabile per il paralume lamp.stl. Presente quando output.format era stl (il valore predefinito).
Name
base_stl
Type
string
Description
URL scaricabile per la base del supporto base.stl. Presente quando output.format era stleoptions.light_source_preset non era none. Omesso quando il preset del supporto era none.
Name
bundle_zip
Type
string
Description
URL scaricabile per un bundle zip di ogni artefatto prodotto dal processore (lamp.stl, base.stl opzionale e — quando options.include_result_json è true — result.json). Presente quando output.format era zip. Quando bundle_zip è presente, lamp_stl / base_stl vengono omessi.