Repository navigation
feat(cli): align with the current public API — Auto Split, Usage, new Creative Lab products, printability / animation / image params, polling + delete fixes [ENG-4062] - #12
Merged
Conversation
…lict class for 409 [ENG-4062] - analyze/repair-printability: a local model is sent inline, and the API takes inline models there as glTF only. A local .stl/.obj/.fbx (or a non-glTF data: URI) is now refused before the request with a pointer to an http(s) URL or --input-task-id; help text lists the formats each input form takes. - text-to-3d refine no longer pins remove_lighting and a 4k texture: refine inherits the preview's model, and a meshy-6-lite preview refuses both. `make` still refines at 4k (it made the preview on latest), and its resume command now says so. - image-to-3d --model-type smart-topology refuses --remove-lighting and --image-enhancement locally instead of a 400. - wait / sync create / make: a 429, 5xx, read timeout or dropped connection on a status request is retried at the next tick, paced by Retry-After when the API sends it. An outage that outlasts --timeout is a timeout (exit 8) that keeps the task id; result.wait.failed_polls / last_poll_error and a poll_retried warning say what happened. - 409 (delete of an IN_PROGRESS task) is a new `conflict` error, exit 14, with the wait command as recovery. - `meshy delete` says what it covers (every resource except Creative Lab) and a 404 points at the Creative Lab command. Creative Lab delete cancels the task, and now reports canceled: true, deleted: false. - animation tasks are typed `animate`, so download --task-json matches them. Co-Authored-By: Claude Opus 5.5 <[email protected]>
…y, multi-action animate, rigging list [ENG-4062] - `auto-split` (POST /print/split, plus get / list / wait / stream / delete): --mode auto|by_parts|by_color with --prompt, --target-formats, --layout, --connectors with --connector-type / --connector-size / --connector-height. v1 envelope only, like the other new commands. - `usage tasks` (GET /usage/tasks, Studio/Enterprise): --page, --page-size, --sort-by, --start-time / --end-time (RFC 3339), --endpoints, --status. - `animation-catalog list` calls the documented GET /animations/library: server-side --search, --category, new --sub-category and --action-ids. It now needs an API key; items are the API's own (no rig_type / is_free). - `animate create --action-ids` (up to 10, one file with one clip per action) and `--motion-task-id` (a text-to-motion clip); exactly one source is required. - `rigging list` is enabled. Co-Authored-By: Claude Opus 5.5 <[email protected]>
… fidget-collapsible; keychain --name-text [ENG-4062] - vinyl-figure and brick-figure: prototype → build like figure. - keycap: build takes --candidate-id (from the prototype's candidate_ids) and options head_size_mm / vertical_offset_mm / base_model; its OBJ bundle (model_urls.obj_zip) is saved as model.obj.zip. - fidget-pixel: prototype --type person|other (no --remove-background); build options shape / grid_size / piece_size_mm / color_count / piece_height_mm, --model-format 3mf. - fidget-collapsible: a single stage, `meshy creative-lab fidget-collapsible create|get|list|wait|stream|delete`. - keychain prototype --name-text: up to 10 characters, engraved. - Every documented option range is checked before the request. Co-Authored-By: Claude Opus 5.5 <[email protected]>
…ckground removal, balance split, Ultra geometry and smart topology flags [ENG-4062] - analyze/repair-printability: --printer-type, --intended-print-height-mm, --intended-print-longest-side-mm (wall-thickness check / thickening at that size); repair --alpha-thumbnail; input-task-id help lists the accepted source tasks. - multi-color-print: --style realistic|cartoon, --printer-brand. - text-to-image / image-to-image: --remove-background; image-to-image --input-task-id (reference images become optional). - balance: monthly_credits, permanent_credits and monthly_resets_at. - text-to-3d preview: --geometry-resolution standard|2k|4k, --model-type smart-topology with --target-polycount (100-15000). - image-to-3d: --geometry-resolution standard|2k|4k; --ultra-mode is kept as its deprecated spelling of 2k. - multi-image-to-3d: --texture-image-urls (1-4 texture views, local files inlined). - retexture / remesh --alpha-thumbnail; rigging --texture-image-url. Co-Authored-By: Claude Opus 5.5 <[email protected]>
… Meshy 7.1 default, emission maps, original UVs, wait budget [ENG-4062] - prompt / texture-prompt limits are 800 characters. - `latest` is Meshy 7.1 on text-to-3d and image-to-3d; comments and help no longer say Meshy 6 / Meshy 7 there. - --enable-pbr: an emission map comes only from meshy-6 below 8k. - retexture --enable-original-uv defaults to false (fresh UVs), as the API does; the help said true. - --timeout help says the task keeps running past it and that the API advises allowing up to 60 minutes. Co-Authored-By: Claude Opus 5.5 <[email protected]>
README and package description list printability, auto split and usage; migration notes record what 0.5.0 changes for existing callers. Co-Authored-By: Claude Opus 5.5 <[email protected]>
…request [ENG-4062] The API takes an inline (data:) model only as glTF; data:model/obj and data:model/stl are refused, and an FBX sent as application/octet-stream is taken for a GLB. The CLI inlines every local file, so a local .stl/.obj/.fbx on remesh, convert, resize, retexture or multi-color-print failed after the round trip, as it did on the printability commands. - remesh, convert, resize, retexture: a local or inline model must be .glb/.gltf; multi-color-print: .glb. Anything else exits 2 before any request, pointing at an http(s) URL or --input-task-id. URLs unchanged. - A data:application/octet-stream URI is accepted when its bytes are a GLB. - --model-url help, docs/usage.md, SKILL.md and the migration notes say so. Co-Authored-By: Claude Opus 5.5 <[email protected]>
Co-Authored-By: Claude Opus 5.5 <[email protected]>
…elete is an action in the index [ENG-4062] - A running task cannot be stopped and its credits are spent, and deleting it once it finishes is permanent with no refund. The conflict hint, the delete help and the docs now say that instead of "wait, then delete again". - The top-level delete does not know the resource, so its conflict recovery carries no command rather than a `<resource>` placeholder. - v1 `resources` lists `delete` as kind `action` with its endpoint, not as a local helper; `counts.action` is added (D-077). - text-to-3d smart topology defaults to 10000 faces, like image-to-3d. - Help: multi-image-to-3d is not beta and runs Meshy 7.1 by default; image-to-3d `--remove-lighting` applies on meshy-6 only; the legacy `resources` listing names all nine Creative Lab products. Co-Authored-By: Claude Opus 5.5 <[email protected]>
…d background flags [ENG-4062] - Exit 14: wait for the result; delete afterwards only if the user wants it gone (permanent, no refund). - `recovery.command` is runnable verbatim once a download `<dir>`/`<file>` placeholder is filled in. - Meshy 7.1 is the default on all three generators; multi-image is not beta. - text-to-image / image-to-image → 3D via `--input-task-id`; printability print size and printer type, multi-color style and brand, image background removal; auto split and usage in the description; duplicate Creative Lab delete note removed. metadata.version 1.2.0. Co-Authored-By: Claude Opus 5.5 <[email protected]>
The parity docs and a few comments cited server source files and account gating. They now state the observed API behaviour instead, keeping the facts and dates: task responses carry no face_count, showcase_type is all|animate|static, uv-unwrap answers 404 when the endpoint is not enabled for the account. The baseline cross-check block is renamed to api_behaviour_crosscheck; nothing reads it. Co-Authored-By: Claude Opus 5.5 <[email protected]>
Arlieeee
marked this pull request as ready for review
October 13, 2026 09:11
…-4062] Co-Authored-By: Claude Opus 5.5 <[email protected]>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Aligns meshy-cli with the current public API: request shapes the API actually accepts, polling that follows the documented task lifecycle, new endpoints (Auto Split, Usage, the animation library), the newer Creative Lab products, and the printability, animation, image, balance and generation parameters the docs list. Version 0.4.2.
Fixed
--model-url(remesh, convert, resize, retexture, multi-color-print, analyze/repair-printability): a local model must be.glb/.gltf(multi-color-print:.glb) because the API takes inline models as glTF only;.stl/.obj/.fbxare refused before the request with a pointer to an http(s) URL or--input-task-id. Adata:application/octet-streamURI is accepted when it holds a GLBtext-to-3drefine no longer pinsremove_lightingand a 4k texture, which a meshy-6-lite preview refuses;makestill refines at 4k and its resume command says soimage-to-3d --model-type smart-topologyrefuses--remove-lighting/--image-enhancementlocallywait/ synccreate/make: a 429, 5xx, read timeout or dropped connection on a status request is retried at the next tick, paced byRetry-After; an outage that outlasts--timeoutis exit 8 with the task iddelete(task IN_PROGRESS) is a newconflicterror, exit14: the task cannot be stopped and its credits are spent, so the recovery is the resource'swaitfor the result (none from the top-leveldelete, which does not know the resource); deleting it after it finishes is permanent with no refundresourceslistsdeleteas kindactionwith its endpoint (it waslocal);counts.actionaddedmeshy deletesays it covers every resource except Creative Lab; Creative Labdeletereportscanceled: true, deleted: falseanimate, sodownload --task-jsonmatches themAdded
auto-split(/print/split): create / get / list / wait / stream / deleteusage tasks(GET /usage/tasks, Studio/Enterprise)animation-catalog liston the documented/animations/libraryendpoint (server-side search, category, sub-category, action ids)animate --action-ids(up to 10 clips in one file) and--motion-task-id;rigging list--printer-type,--intended-print-height-mm,--intended-print-longest-side-mm; repair--alpha-thumbnailmulti-color-print --style,--printer-brandtext-to-image/image-to-image --remove-background;image-to-image --input-task-idbalancereportsmonthly_credits,permanent_credits,monthly_resets_at--geometry-resolutionontext-to-3dpreview andimage-to-3d(--ultra-modekept as its deprecated spelling);text-to-3d --model-type smart-topology --target-polycount(default 10000, like image-to-3d);multi-image-to-3d --texture-image-urlsvinyl-figure,brick-figure,keycap(--candidate-id),fidget-pixel(--type),fidget-collapsible(single stage); keychain--name-text--alpha-thumbnailonretexture/remesh;rigging --texture-image-urlChanged
latest= Meshy 7.1 (multi-image-to-3d too, no longer called beta), image-to-3d--remove-lightingapplies on meshy-6 only, emission maps only on meshy-6,--enable-original-uvdefaults to false, repair input formats,--timeoutwording (the task keeps running; the API advises up to 60 min)Typecheck and the full suite (638 tests, loopback API only) pass. Every new command and flag was also run end to end against the live API (auto-split, animate
--action-ids/--motion-task-id, text-to-motion, printability with--printer-type, multi-color--style/--printer-brand, image--remove-background/--input-task-id, the new Creative Lab products and fidget-pixel build,--geometry-resolution, smart topology,rigging list,animation-catalog, 409 → exit 14,download --task-jsonon an animate task).Release notes (draft)
Highlights
meshy auto-splitsplits a model into printable parts (automatically, by named parts or by colour, with optional connectors).meshy usage taskslists finished API tasks with the credits each consumed (Studio/Enterprise).vinyl-figure,brick-figure,keycap(build with--candidate-id),fidget-pixel(--type person|other) and the single-stagefidget-collapsible; keychains take an engraving with--name-text.animate --action-idsputs up to 10 library actions in one file;--motion-task-idretargets a text-to-motion clip.animation-catalog listnow uses the documented library endpoint with server-side filters (it needs an API key).rigging listworks.--styleand--printer-brand,--remove-backgroundon the image commands,image-to-image --input-task-id,--geometry-resolution 2k|4kon text-to-3d preview and image-to-3d, text-to-3d smart topology, multi-image--texture-image-urls,--alpha-thumbnailon retexture/remesh/repair,rigging --texture-image-url.balanceshows monthly and permanent credits and the next reset.wait: it is retried at the next poll, paced byRetry-After.deleteof a running task exits14(conflict): it cannot be stopped and its credits are spent; wait for the result, and delete it afterwards only if it should be gone (permanent, no refund).meshy resources --output-schema v1listsdeleteas kindaction.deletereportscanceled: true, deleted: false.remove_lighting: trueor a 4k texture by default (a meshy-6-lite preview refuses them); pass--remove-lighting true --texture-resolution 4kfor the previous request.makestill refines at 4k.--model-urlmust be.glb/.gltf(multi-color-print:.glb) on every command: the API takes inline models as glTF only, so.stl/.obj/.fbxnow fail before the request — pass them as an http(s) URL or use--input-task-id.animation-catalog listuses the documented library endpoint and now needs an API key. Its v1 result dropsfetched,totalandauthenticated,search_scopeis"server", and items no longer carryrig_type,is_freeoris_default.--searchmatches name and key only; use--sub-categoryto filter by sub-category.🤖 Generated with Claude Code