Transformez un prompt textuel ou une photo source en abat-jour imprimable en 3D en deux
étapes : prototype génère une image conceptuelle stylisée blanc mat, puis
build transforme cette image conceptuelle en abat-jour STL creux (éventuellement
associé à un disque de base pour un support de source lumineuse). Les deux étapes sont liées
via input_task_id.
Générez une seule image conceptuelle blanc mat pour l’abat-jour — soit
à partir d’un prompt textuel (text-to-3D), soit à partir d’une photo de référence (image-to-3D).
L’ID de tâche renvoyé est celui que vous passez comme input_task_id au point de terminaison de build.
Consultez
l’objet de tâche de prototype de lampe
pour la structure de la réponse.
Paramètres
Exactement l’un de text ou image_url est requis. Fournir les deux, ou aucun des deux, renvoie 400.
Name
text
Type
string
Requis
Description
Prompt textuel décrivant le sujet d’abat-jour souhaité. Requis lorsque image_url est omis. Maximum 800 caractères.
Name
image_url
Type
string
Requis
Description
Photo source que Meshy utilise comme référence visuelle pour l’abat-jour. Requis lorsque text est omis. Nous prenons actuellement en charge les formats .jpg, .jpeg, .png et .webp.
Il existe deux façons de fournir l’image :
URL accessible publiquement : une URL accessible depuis l’Internet public.
Data URI : une Data URI encodée en base64 de l’image. Exemple de Data URI : data:image/jpeg;base64,<your base64-encoded image data>.
Name
image_subject
Type
string
défaut character
Description
Indice de catégorie de sujet pour le chemin image-to-3D. Valeurs disponibles :
character (par défaut) — sujet de type personnage / objet unique (figurine, animal, mascotte, etc.).
Nom de tâche facultatif à des fins d’affichage. Maximum 100 caractères.
Retours
La propriété result de la réponse contient l’id de tâche de la nouvelle tâche de prototype de lampe créée. Interrogez le point de terminaison Obtenir une tâche ou abonnez-vous au flux jusqu’à ce que la tâche atteigne SUCCEEDED, puis passez cet ID au point de terminaison de build comme input_task_id.
Modes d’échec
Name
400 - Bad Request
Description
La requête était inacceptable. Causes courantes :
Paramètre manquant : exactement l’un de text ou image_url est requis.
Les deux fournis : fournir à la fois text et image_url est rejeté — ils s’excluent mutuellement.
Format d’image invalide : le image_url fourni n’est pas dans un format pris en charge (.jpg, .jpeg, .png, .webp).
Dimensions d’image hors plage : l’image est trop petite, dépasse la taille maximale de fichier ou dépasse le nombre maximal de pixels.
URL inaccessible : le image_url n’a pas pu être téléchargé (404 ou timeout).
Data URI invalide : la chaîne base64 est mal formée.
Contenu signalé : l’image d’entrée a été signalée par la moderation NSFW ou de propriété intellectuelle.
Texte trop long : text dépasse 800 caractères.
image_subject invalide : ne fait pas partie de character / landscape.
Name
401 - Unauthorized
Description
L’authentification a échoué. Veuillez vérifier votre clé API.
Name
402 - Payment Required
Description
Crédits insuffisants pour effectuer cette tâche.
Name
429 - Too Many Requests
Description
Vous avez dépassé votre limite de débit.
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.
Générez l’abat-jour final imprimable en 3D à partir d’une tâche de prototype
réussie. Le build exécute un pipeline image-vers-3D sur l’image conceptuelle
du prototype, puis post-traite le maillage via le processeur de lampe pour
l’évider, aplatir le dessus, éventuellement découper une base, et (lorsqu’un préréglage de fixation est
choisi) produire un disque de base séparé pour la source lumineuse. Consultez
L’objet Lamp Build Task pour la
structure de la réponse.
Paramètres
Name
input_task_id
Type
string
Requis
Description
L’ID de tâche d’une tâche de prototype créée via ce même point de terminaison OpenAPI. Le prototype doit avoir été créé avec la même clé API, doit avoir atteint SUCCEEDED, et doit avoir produit exactement une image candidate.
Les tâches de prototype créées via l’application web ne sont pas acceptées — le point de terminaison de build accepte uniquement les tâches de prototype produites par POST /openapi/creative-lab/lamp/v1/prototype et refuse toute autre source avec 404.
Name
name
Type
string
Description
Nom de tâche facultatif à des fins d’affichage. Maximum 100 caractères.
options
Paramètres de réglage facultatifs pour la géométrie de l’abat-jour. Chaque champ possède une valeur par défaut raisonnable — envoyez uniquement ceux que vous souhaitez remplacer.
Name
diameter_mm
Type
number
défaut 80
Description
Dimension maximale cible de la boîte englobante de l’abat-jour, en millimètres. Le maillage est mis à l’échelle uniformément pour s’adapter. Plage : [50, 400].
Name
thickness_mm
Type
number
défaut 1.5
Description
Épaisseur de paroi de l’abat-jour creux, en millimètres. Plage : (0, 10].
Name
cut_amount_percent
Type
number
défaut 35
Description
Pourcentage de la hauteur de l’abat-jour à aplatir en haut afin que l’impression puisse reposer sur le plateau. Plage : [1, 100].
Name
light_source_preset
Type
string
défaut bambu_mh001_60mm
Description
Préréglage de fixation de source lumineuse qui détermine si (et quel) disque de base produire avec l’abat-jour. Valeurs disponibles :
bambu_mh001_60mm (par défaut) — produit un disque de base de 60 mm dimensionné pour une fixation de source lumineuse compatible. Le résultat inclut model_urls.base_stl.
none — aucune fixation, aucun disque de base. model_urls.base_stl est omis.
Name
fixture_offset_x_mm
Type
number
défaut 0
Description
Décalage horizontal sur l’axe X de la découpe de fixation par rapport au centre de l’abat-jour, en millimètres. Pertinent uniquement lorsque light_source_preset ≠ none. Plage : [-80, 80].
Name
fixture_offset_z_mm
Type
number
défaut 0
Description
Décalage vertical sur l’axe Z de la découpe de fixation par rapport au bas de l’abat-jour, en millimètres. Plage : [-80, 80].
Name
rotate_x_deg
Type
number
défaut 0
Description
Rotation autour de l’axe X appliquée au maillage importé avant le traitement, en degrés. Plage : [-360, 360].
Name
rotate_y_deg
Type
number
défaut 0
Description
Rotation autour de l’axe Y appliquée au maillage importé avant le traitement, en degrés. Plage : [-360, 360].
Name
rotate_z_deg
Type
number
défaut 0
Description
Rotation autour de l’axe Z appliquée au maillage importé avant le traitement, en degrés. Plage : [-360, 360].
Name
include_result_json
Type
boolean
défaut false
Description
Lorsque true et que output.format est zip, inclut le result.json du processeur de lampe (contenant les métriques de maillage mesurées + l’ensemble d’options résolu) dans le bundle. Ignoré lorsque output.format est stl.
output
Sélecteur facultatif de format de transmission. Par défaut : stl.
Name
format
Type
string
défaut stl
Description
Bundle d’artefacts renvoyé par le build. Valeurs disponibles :
stl (par défaut) — renvoie l’abat-jour sous model_urls.lamp_stl, ainsi que model_urls.base_stl lorsque light_source_preset ≠ none.
zip — regroupe chaque artefact produit par le processeur (lamp.stl, base.stl facultatif, result.json facultatif) dans un seul zip et le renvoie sous model_urls.bundle_zip.
Retours
La propriété result de la réponse contient l’id de tâche de la tâche de build de lampe nouvellement créée. Interrogez le point de terminaison Obtenir une tâche ou abonnez-vous au flux jusqu’à ce que la tâche atteigne SUCCEEDED, puis téléchargez les artefacts depuis model_urls.
Modes d’échec
Name
400 - Bad Request
Description
La requête était inacceptable. Causes courantes :
Paramètre manquant : input_task_id est requis.
UUID non valide : input_task_id n’est pas un UUID valide.
Parent non réussi : la tâche de prototype référencée n’a pas encore atteint SUCCEEDED.
Aucun candidat : la tâche de prototype a réussi mais n’a produit aucune image candidate.
Options hors plage : l’un des champs options se trouvait en dehors de sa plage autorisée ou de son ensemble d’énumération.
Name
401 - Unauthorized
Description
L’authentification a échoué. Veuillez vérifier votre clé API.
Name
402 - Payment Required
Description
Crédits insuffisants pour effectuer cette tâche.
Name
404 - Not Found
Description
La tâche de prototype référencée n’existe pas, appartient à un autre utilisateur, ou a été créée via l’application web (seules les tâches de prototype en mode API s’enchaînent dans le build).
Récupérez une tâche de prototype ou de build à partir d’un id de tâche valide. Le chemin d’URL
doit correspondre à l’étape de la tâche — une tâche de build récupérée via
/prototype/:id renvoie 404, et inversement.
Annuler une tâche de lampe. Si la tâche est encore PENDING, les crédits consommés
au moment de la création sont remboursés. Les tâches qui sont déjà IN_PROGRESS sont
annulées sans remboursement (le worker utilise peut-être déjà des Ressources).
Les tâches qui ont déjà atteint un état terminal (SUCCEEDED, FAILED,
CANCELED) ne peuvent pas être annulées.
Le chemin de l’URL doit correspondre à l’étape de la tâche — DELETE sur
/prototype/:buildId renvoie 404.
Paramètres de chemin
Name
id
Type
path
Description
Identifiant unique de la tâche de lampe à annuler.
Renvoie
Renvoie 204 No Content en cas de succès avec un corps vide.
Modes d’échec
Name
400 - Bad Request
Description
La tâche est déjà dans un état terminal et ne peut pas être annulée.
Name
404 - Not Found
Description
La tâche n’existe pas, appartient à un autre utilisateur, ou son étape ne correspond pas au chemin de l’URL.
Diffusez des mises à jour en temps réel pour une tâche de lampe via des événements envoyés par le serveur (SSE).
Le chemin de l’URL doit correspondre à l’étape de la tâche — l’ouverture d’un flux à
/prototype/:buildId/stream émet une seule charge utile event: error avec
status_code: 404 et ferme le flux.
Paramètres
Name
id
Type
path
Description
Identifiant unique de la tâche de lampe à diffuser.
Renvoie
Renvoie un flux d’objets de tâche Prototype de lampe
ou Build de lampe sous forme de
Server-Sent Events. Pour les tâches PENDING ou IN_PROGRESS, le flux de réponse
inclura uniquement les champs progress et status nécessaires.
// 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=***" }}
Récupérez une liste paginée de vos tâches de lampe pour une seule étape. Le
chemin de l’URL sélectionne l’étape — /prototype renvoie les tâches de prototype ; /build
renvoie les tâches de build. Les tâches de l’autre étape ne sont incluses dans aucune des
réponses.
Paramètres de chemin
Name
stage
Type
path
Requis
Description
Soit prototype, soit build. La collection renvoie uniquement les tâches
dont l’étape correspond à l’URL — récupérer /prototype ne renvoie jamais
de tâches de build, et inversement.
Paramètres de requête
Name
page_num
Type
integer
défaut 1
Description
Numéro de page pour la pagination.
Name
page_size
Type
integer
défaut 10
Description
Limite de taille de page. Le maximum autorisé est de 50 éléments.
Name
sort_by
Type
string
défaut -created_at
Description
Champ selon lequel trier. Valeurs disponibles :
+created_at: Trier par heure de création dans l’ordre croissant.
-created_at: Trier par heure de création dans l’ordre décroissant.
L’objet de tâche de prototype de lampe est une unité de travail que Meshy suit pour
générer une image conceptuelle stylisée blanc mat à partir d’un prompt textuel
ou d’une photo source. Le résultat de cette étape est enchaîné à
l’étape de construction via input_task_id.
Propriétés
Name
id
Type
string
Description
Identifiant unique de la tâche. Bien que nous utilisions un UUID triable par k pour les identifiants de tâche comme détail d’implémentation, vous ne devez faire aucune supposition sur le format de l’identifiant.
Name
type
Type
string
Description
Type de la tâche. La valeur est creative-lab-lamp-prototype.
Name
name
Type
string
Description
Le nom de la tâche fourni lors de la création de la tâche. Chaîne vide si aucun nom n’a été fourni.
Name
status
Type
string
Description
Statut de la tâche. Les valeurs possibles sont l’une de PENDING, IN_PROGRESS, SUCCEEDED, FAILED, CANCELED.
Name
progress
Type
integer
Description
Progress de la tâche. Si la tâche n’a pas encore démarré, cette propriété sera 0. Une fois la tâche réussie, elle deviendra 100.
Name
created_at
Type
timestamp
Description
Horodatage du moment où la tâche a été créée, en millisecondes.
Un horodatage représente le nombre de millisecondes écoulées depuis le 1er janvier 1970 UTC, conformément à
la norme RFC 3339.
Par exemple, le vendredi 1er septembre 2023 à 12:00:00 PM GMT est représenté par 1693569600000. Cela s’applique
à tous les horodatages dans Meshy API.
Name
started_at
Type
timestamp
Description
Horodatage du moment où la tâche a été démarrée, en millisecondes. Si la tâche n’a pas encore démarré, cette propriété sera 0.
Name
finished_at
Type
timestamp
Description
Horodatage du moment où la tâche a été terminée, en millisecondes. Si la tâche n’est pas encore terminée, cette propriété sera 0.
Name
expires_at
Type
timestamp
Description
Horodatage du moment où le résultat de la tâche expire, en millisecondes.
Name
preceding_tasks
Type
integer
Description
Le nombre de tâches précédentes.
La valeur de ce champ n’est significative que si le statut de la tâche est PENDING.
Name
task_error
Type
object
Description
Détails de l’erreur pour les tâches ayant échoué. Consultez Erreurs pour la référence complète de l’objet task_error.
Name
consumed_credits
Type
integer
Description
Le nombre de crédits consommés par cette tâche. Présent lorsque le statut de la tâche est PENDING, IN_PROGRESS ou SUCCEEDED. Renvoie 0 pour les tâches FAILED (les crédits sont remboursés en cas d’échec).
Name
image_urls
Type
array of strings
Description
URL téléchargeables pour les images conceptuelles candidates générées par cette tâche de prototype. Actuellement, l’API renvoie toujours exactement un candidat ; le champ est un tableau afin que de futures révisions puissent exposer plusieurs candidats sans changement incompatible.
L’objet Tâche de construction de lampe est une unité de travail que Meshy suit afin de
générer l’abat-jour final imprimable en 3D à partir d’une tâche prototype SUCCEEDED.
La construction exécute un pipeline d’ébauche image-vers-3D + texture sur l’image
conceptuelle du prototype, puis post-traite le maillage via le processeur de lampe afin de
l’évider, l’aplanir et (facultativement) découper une base de fixation.
Propriétés
Name
id
Type
string
Description
Identifiant unique de la tâche.
Name
type
Type
string
Description
Type de la tâche. La valeur est creative-lab-lamp-build.
Name
name
Type
string
Description
Le nom de la tâche fourni lors de la création de la tâche. Chaîne vide si aucun nom n’a été fourni.
Name
status
Type
string
Description
Statut de la tâche. Les valeurs possibles sont l’une de PENDING, IN_PROGRESS, SUCCEEDED, FAILED, CANCELED.
Name
progress
Type
integer
Description
progress de la tâche. Si la tâche n’a pas encore démarré, cette propriété sera 0. Une fois la tâche réussie, elle deviendra 100.
Name
created_at
Type
timestamp
Description
horodatage du moment où la tâche a été créée, en millisecondes.
Name
started_at
Type
timestamp
Description
horodatage du moment où la tâche a été démarrée, en millisecondes.
Name
finished_at
Type
timestamp
Description
horodatage du moment où la tâche a été terminée, en millisecondes.
Name
expires_at
Type
timestamp
Description
horodatage du moment où le résultat de la tâche expire, en millisecondes.
Name
preceding_tasks
Type
integer
Description
Le nombre de tâches précédentes. Significatif uniquement lorsque le statut est PENDING.
Name
task_error
Type
object
Description
Détails de l’erreur pour les tâches échouées. Consultez Erreurs pour la référence complète de l’objet task_error.
Name
consumed_credits
Type
integer
Description
Le nombre de crédits consommés par cette tâche. Renvoie 0 pour les tâches FAILED (les crédits sont remboursés en cas d’échec).
Name
model_urls
Type
object
Description
URL téléchargeables pour les artefacts générés, indexées par nom d’artefact. L’ensemble des clés dépend de output.format et de options.light_source_preset :
Name
lamp_stl
Type
string
Description
URL téléchargeable vers l’abat-jour lamp.stl. Présente lorsque output.format était stl (par défaut).
Name
base_stl
Type
string
Description
URL téléchargeable vers la base de fixation base.stl. Présente lorsque output.format était stlet que options.light_source_preset n’était pas none. Omise lorsque le préréglage de fixation était none.
Name
bundle_zip
Type
string
Description
URL téléchargeable vers un bundle zip de chaque artefact émis par le processeur (lamp.stl, base.stl facultatif, et — lorsque options.include_result_json est true — result.json). Présente lorsque output.format était zip. Lorsque bundle_zip est présent, lamp_stl / base_stl sont omis.