Meshy 3D generation API — text-to-3D, image-to-3D, multi-image-to-3D, remesh, retexture, auto-rigging, animation, 3D printing, plus nano-banana-backed 2D gen. Activate when the user asks for 3D models, rigging, animations, 3D printing, or configures any node whose id starts with `meshy-`. Sourced directly from docs.meshy.ai on 2026-04-17 — every parameter, endpoint, and price quoted here came from the canonical API reference.
Installation
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Meshy 3D generation API — text-to-3D, image-to-3D, multi-image-to-3D, remesh, retexture, auto-rigging, animation, 3D printing, plus nano-banana-backed 2D gen. Activate when the user asks for 3D models, rigging, animations, 3D printing, or configures any node whose id starts with `meshy-`. Sourced directly from docs.meshy.ai on 2026-04-17 — every parameter, endpoint, and price quoted here came from the canonical API reference.
Meshy Skill
When to use
User asks for a 3D model (text description or image reference)
User wants to rig a character, animate a rigged character, or 3D-print a model
User wants to retexture or remesh an existing 3D model
User configures any meshy-* node
User asks about credit costs, rate limits, or which Meshy model to pick
Universal rules (all Meshy endpoints)
Every task is async. Submit returns {"result": "<task_id>"}. Poll GET /{endpoint}/{task_id} or subscribe to /stream for SSE. Task is done when status is SUCCEEDED, FAILED, or CANCELED.
Assets expire. Task responses include expires_at (ms since epoch). Download outputs promptly.
Image texturing limitation:"may not work optimally if there are substantial geometry differences" — keep the texture reference image close in form to the actual 3D model.
Multi-image-to-3D:"All images should depict the same object from different angles for best results" — 1 to 4 images, same subject, varied angles.
Workflow patterns
Full text-to-3D with textured output
POST /v2/text-to-3d with mode=preview, prompt, ai_model, optional topology/polycount — returns preview task_id
Poll preview task until SUCCEEDED
POST /v2/text-to-3d with mode=refine, preview_task_id=<id from step 1>, optional enable_pbr, texture_prompt or texture_image_url — returns refine task_id
Poll refine task until SUCCEEDED
Download from model_urls.glb (or whichever format)
Rig + animate a character
Generate or upload a textured humanoid GLB under 300k faces (use remesh first if larger)
POST /v1/rigging with model_url or input_task_id, height_meters (default 1.7)
Rigging result includes free walk + run animations AND a rig_task_id
POST /v1/animations with that rig_task_id and an action_id from reference/animation-library.md
Download result.animation_glb_url
Image → 3D → multi-color print
POST /v1/image-to-3d (textured, preferably meshy-6)
Poll until SUCCEEDED, capture its task_id
POST /v1/print/multi-color with input_task_id=<that id>, optional max_colors (1–16, default 4), max_depth (3–6, default 4)
Backend handlers in backend/handlers/meshy.py. All use the same _poll_meshy_task helper.
When chaining Meshy tasks (e.g. rigging → animate), the rig_task_id must come from a rigging node's output task_id port.
When a 3D node's output goes to the canvas, the GLB is downloaded locally and served via /api/outputs/… — frontend MeshPreview component renders via model-viewer.
Meshy's texture_image_url / image_style_url params accept public URLs or base64 data URIs. Our backend converts local file paths to data URIs via image_to_data_uri.
Known handler limitations are documented in reference/handler-gaps.md. Mention them to the user when they ask for something a Meshy feature supports but our node doesn't currently expose.