Transformez un prompt textuel ou une photo source en un abat-jour imprimable en 3D en deux étapes : prototype génère une image conceptuelle stylisée en blanc mat, puis construction transforme cette image conceptuelle en un abat-jour creux STL (éventuellement associé à un disque de base pour un luminaire). Les deux étapes sont liées via input_task_id.
Générer une image conceptuelle en blanc mat pour l'abat-jour — soit à partir d'un prompt textuel (texte-vers-3D) soit à partir d'une photo de référence (image-vers-3D). L'ID de tâche retourné est celui que vous passez comme input_task_id au point de terminaison de construction. Référez-vous à L'Objet de Tâche de Prototype de Lampe pour la forme de la réponse.
Paramètres
Exactement un de text ou image_url est requis. Passer les deux, ou aucun, retourne 400.
Name
text
Type
string
Requis
Description
Prompt textuel décrivant le sujet souhaité pour l'abat-jour. 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 supportons actuellement les formats .jpg, .jpeg, .png, et .webp.
Il y a deux façons de fournir l'image :
URL accessible publiquement : Une URL accessible depuis l'internet public.
Data URI : Un Data URI encodé 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-vers-3D. Valeurs disponibles :
character (par défaut) — sujet de personnage / objet unique (figurine, animal, mascotte, etc.).
Nom de tâche optionnel à des fins d'affichage. Maximum 100 caractères.
Name
remove_background
Type
boolean
défaut false
Description
Lorsqu'il est réglé sur true, l'image prototype est retournée comme un PNG RGBA transparent avec le fond supprimé, vous permettant de composer le sujet sur n'importe quel fond.
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 construction comme input_task_id.
Modes d'Échec
Name
400 - Bad Request
Description
La requête était inacceptable. Causes courantes :
Paramètre manquant : Exactement un de text ou image_url est requis.
Les deux fournis : Passer à la fois text et image_url est rejeté — ils sont mutuellement exclusifs.
Format d'image invalide : Le image_url fourni n'est pas dans un format supporté (.jpg, .jpeg, .png, .webp).
Dimensions de l'image hors limites : 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 modération NSFW ou de propriété intellectuelle.
Texte trop long : text dépasse 800 caractères.
image_subject invalide : Pas l'un 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.
Requête
POST
/openapi/creative-lab/lamp/v1/prototype
# Stage 1 (image-to-3D): generate a matte-white lampshade concept imagecurlhttps://api.meshy.ai/openapi/creative-lab/lamp/v1/prototype \-XPOST \-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 promptcurlhttps://api.meshy.ai/openapi/creative-lab/lamp/v1/prototype \-XPOST \-H"Authorization: Bearer ${YOUR_API_KEY}" \-H'Content-Type: application/json' \-d'{ "text": "a stylized owl perched on a tree branch under moonlight" }'
Réponse
{"result":"018a210d-8ba4-705c-b111-1f1776f7f578"}
Exemple de prototype
Commencez avec une photo source, puis générez l'image prototype utilisée par l'étape de construction de la lampe.
Générer l'abat-jour final imprimable en 3D à partir d'une tâche de prototype réussie. La construction exécute un pipeline image-vers-3D sur l'image conceptuelle du prototype, puis post-traite le maillage via le processeur de lampe pour le creuser, aplatir le dessus, couper éventuellement une base, et (lorsqu'un préréglage de luminaire est choisi) émettre un disque de base séparé pour la source lumineuse. Référez-vous à L'Objet de Tâche de Construction de Lampe pour la forme de la réponse.
Paramètres
Name
input_task_id
Type
string
Requis
Description
L'ID de la tâche d'un prototype créé 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 construction n'accepte que 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 optionnel à des fins d'affichage. Maximum 100 caractères.
options
Paramètres de réglage optionnels pour la géométrie de l'abat-jour. Chaque champ a 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 pour que l'impression puisse reposer sur le lit. Plage : [1, 100].
Name
light_source_preset
Type
string
défaut bambu_mh001_60mm
Description
Préréglage de luminaire qui détermine si (et quel) disque de base émettre avec l'abat-jour. Valeurs disponibles :
bambu_mh001_60mm (par défaut) — émet un disque de base de 60 mm dimensionné pour un luminaire compatible. Le résultat inclut model_urls.base_stl.
none — pas de luminaire, pas de disque de base. model_urls.base_stl est omis.
Name
fixture_offset_x_mm
Type
number
défaut 0
Description
Décalage horizontal de l'axe X du découpage du luminaire par rapport au centre de l'abat-jour, en millimètres. Significatif uniquement lorsque light_source_preset ≠ none. Plage : [-80, 80].
Name
fixture_offset_z_mm
Type
number
défaut 0
Description
Décalage vertical de l'axe Z du découpage du luminaire 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 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 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 traitement, en degrés. Plage : [-360, 360].
Name
include_result_json
Type
boolean
défaut false
Description
Lorsque true et output.format est zip, inclut le result.json du processeur de lampe (contenant les mesures du maillage + l'ensemble d'options résolu) dans le paquet. Ignoré lorsque output.format est stl.
output
Sélecteur de format de fil optionnel. Par défaut à stl.
Name
format
Type
string
défaut stl
Description
Paquet d'artefacts retourné par la construction. Valeurs disponibles :
stl (par défaut) — retourne l'abat-jour comme model_urls.lamp_stl, plus model_urls.base_stl lorsque light_source_preset ≠ none.
zip — regroupe chaque artefact émis par le processeur (lamp.stl, base.stl optionnel, result.json optionnel) dans un seul zip et le retourne sous model_urls.bundle_zip.
Retours
La propriété result de la réponse contient l'id de la tâche de construction de lampe nouvellement créée. Interrogez le point de terminaison Récupérer 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 invalide : Le 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.
Pas de candidat : La tâche de prototype a réussi mais n'a produit aucune image candidate.
Options hors plage : L'un des champs options est tombé 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 utilisateur différent, ou a été créée via l'application web (seules les tâches de prototype en mode API s'enchaînent dans la construction).
Récupérer une tâche de prototype ou de construction donnée un id de tâche valide. Le chemin URL
doit correspondre à l'étape de la tâche — une tâche de construction récupérée via
/prototype/:id renvoie 404, et vice versa.
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 travailleur peut déjà être en train de consommer des ressources).
Les tâches qui ont déjà atteint un état terminal (SUCCEEDED, FAILED,
CANCELED) ne peuvent pas être annulées.
Le chemin 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.
Retours
Retourne 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 utilisateur différent, ou son étape ne correspond pas au chemin URL.
Diffusez des mises à jour en temps réel pour une tâche de lampe via Server-Sent Events (SSE).
Le chemin URL doit correspondre à l'étape de la tâche — ouvrir 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 pour la tâche de lampe à diffuser.
Retours
Retourne un flux d'objets de tâche Prototype de lampe
ou Construction de lampe en tant que
Server-Sent Events. Pour les tâches PENDING ou IN_PROGRESS, le flux de réponse
inclura uniquement les champs nécessaires progress et 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=***" }}
Récupérez une liste paginée de vos tâches de lampe pour une seule étape. Le chemin URL
sélectionne l'étape — /prototype renvoie les tâches de prototype ; /build
renvoie les tâches de construction. 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 ne renvoie que les tâches
dont l'étape correspond à l'URL — récupérer /prototype ne renvoie jamais
les tâches de construction et vice versa.
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 pour trier. Valeurs disponibles :
+created_at: Trier par heure de création par ordre croissant.
-created_at: Trier par heure de création par ordre décroissant.
L'objet de tâche du prototype de la lampe est une unité de travail que Meshy suit pour générer une image conceptuelle stylisée en blanc mat à partir d'un prompt textuel ou d'une photo source. La sortie de cette étape est enchaînée dans l'étape de construction via input_task_id.
Propriétés
Name
id
Type
string
Description
Identifiant unique pour 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 devriez pas faire d'hypothèses 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 PENDING, IN_PROGRESS, SUCCEEDED, FAILED, CANCELED.
Name
progress
Type
integer
Description
Progression de la tâche. Si la tâche n'est pas encore commencée, cette propriété sera 0. Une fois la tâche réussie, cela deviendra 100.
Name
created_at
Type
timestamp
Description
Horodatage de la création de la tâche, 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, vendredi 1er septembre 2023 à 12:00:00 GMT est représenté par 1693569600000. Cela s'applique à tous les horodatages dans Meshy API.
Name
started_at
Type
timestamp
Description
Horodatage du début de la tâche, en millisecondes. Si la tâche n'est pas encore commencée, cette propriété sera 0.
Name
finished_at
Type
timestamp
Description
Horodatage de la fin de la tâche, en millisecondes. Si la tâche n'est pas encore terminée, cette propriété sera 0.
Name
expires_at
Type
timestamp
Description
Horodatage de l'expiration du résultat de la tâche, en millisecondes.
Name
preceding_tasks
Type
integer
Description
Le nombre de tâches précédentes.
La valeur de ce champ est significative uniquement si le statut de la tâche est PENDING.
Name
task_error
Type
object
Description
Détails des erreurs pour les tâches échouées. Voir 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. Retourne 0 pour les tâches FAILED (les crédits sont remboursés en cas d'échec).
Name
image_urls
Type
array of strings
Description
URLs téléchargeables pour les images conceptuelles candidates générées par cette tâche prototype. Actuellement, l'API retourne toujours exactement un candidat ; le champ est un tableau afin que les révisions futures puissent présenter plusieurs candidats sans changement majeur.
L'objet de tâche de construction de la lampe est une unité de travail que Meshy suit pour générer l'abat-jour final imprimable en 3D à partir d'une tâche prototype réussie. La construction exécute un pipeline d'image à 3D + texture sur l'image conceptuelle du prototype, puis post-traite le maillage via le processeur de lampe pour creuser, aplatir et (optionnellement) découper une base de fixation.
Propriétés
Name
id
Type
string
Description
Identifiant unique pour 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 PENDING, IN_PROGRESS, SUCCEEDED, FAILED, CANCELED.
Name
progress
Type
integer
Description
Progression de la tâche. Si la tâche n'a pas encore commencé, cette propriété sera 0. Une fois la tâche réussie, elle deviendra 100.
Name
created_at
Type
timestamp
Description
Horodatage de la création de la tâche, en millisecondes.
Name
started_at
Type
timestamp
Description
Horodatage du début de la tâche, en millisecondes.
Name
finished_at
Type
timestamp
Description
Horodatage de la fin de la tâche, en millisecondes.
Name
expires_at
Type
timestamp
Description
Horodatage de l'expiration du résultat de la tâche, 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 des erreurs pour les tâches échouées. Voir 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. Retourne 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 options.light_source_preset :
Name
lamp_stl
Type
string
Description
URL téléchargeable pour l'abat-jour lamp.stl. Présent lorsque output.format était stl (la valeur par défaut).
Name
base_stl
Type
string
Description
URL téléchargeable pour la base de fixation base.stl. Présent lorsque output.format était stletoptions.light_source_preset n'était pas none. Omis lorsque le préréglage de fixation était none.
Name
bundle_zip
Type
string
Description
URL téléchargeable pour un paquet zip de chaque artefact émis par le processeur (lamp.stl, base.stl optionnel, et — lorsque options.include_result_json est true — result.json). Présent lorsque output.format était zip. Lorsque bundle_zip est présent, lamp_stl / base_stl sont omis.