Skip to content

Changelog

View Markdown llms-full.txt

The Rigyd API is currently versionless — backwards-incompatible changes will be announced here with at least 30 days’ notice.

  • POST /api/compositions/generate can wrap a prototype-start failure as 502 with the failed composition in data. Inspect its ID and workflow.error before retrying.
  • Documentation corrections: the legacy /geometry-alpha route honors Auto on first attempts, result downloads return a ZIP directly or a legacy JSON URL fallback, and submission errors require state inspection before retrying.
  • Documented existing customer operations for interactive composition and editing and Build geometry revision. No new endpoints are introduced by these documentation additions.
  • bodies[].collision.method gains "remesh_refit". When the fallback collision is re-fitted to the modelled surface, the method says so instead of "remesh". Its hulls no longer stand proud of the surface. A client that switches on method should treat an unknown value as the fallback.
  • A part that fits another part keeps its opening in the collision. In composition conversions, parts on either side of a fit (a battery slot’s walls, a connector’s nose, a tube’s body) are each decomposed on their own, so no hull bridges the opening between them. Such a body reports the least exact method among its decompositions.
  • Press joints carry their return spring. A push button, key or latch tab appears in report.joints[] with mechanism: "press", stiffness (N/m) and return_force_n (N). No other joint carries these fields. See Retrieve job.
  • Asset Composer defaults to Auto generation routing, with Physics Agent recommendations for Build (Three.js) or Generate (Tripo).
  • generation_method is independent of simulation class and the Build engine. Composition responses include recommendation and attempt snapshots; retries retain their method.
  • Generate supports rigid assets, preserves the approved model for conversion, and uses the current Tripo SDK multiview input order.
  • A texture map on a second UV set is refused at submit. POST /api/compositions/:id/submit now returns 422 when the prototype’s GLB binds a texture map to a UV set other than TEXCOORD_0, naming the node, material and slot, before any credit is reserved. The conversion reads one UV set per material, and such a GLB used to fail in the pipeline after the conversion job was created. Asset Composer now builds every map on the first UV set. See Submit a reviewed prototype.
  • A .ply without faces is refused at upload. POST /api/conversions now reads the PLY header and returns 400 when it declares no faces — a point cloud or a 3D Gaussian splat — before any credit is reserved. Before, such a file was charged, converted to an empty GLB and failed at the pipeline’s input stage (then refunded). A .zip whose model file is such a PLY is refused the same way. See Point clouds and Gaussian splats.

SimReady 2026.08.0. Applies to both uploaded-model (glb_to_simready) and composition (authored_to_simready) conversions. Existing jobs are not re-scored.

  • One targeted profile: Robotics-Prop 4.0.0. The spec pin moves to 2026.08.0, where the foundation replaces Prop-Robotics-Neutral, -Physx and -Isaac with a single Robotics-Prop profile for every prop, rigid or articulated. On 25 verification assets it agrees with NVIDIA’s simready-validate 2026.8.0, with no real disagreement. report.validation.profile and targeted_profiles now name it, and spec_release is 2026.08.0. Reports from earlier releases keep the old names (Articulated-Robotics-Neutral on some older composition jobs) with spec_release 2026.06.0 or 2026.04.1 — branch on spec_release or targeted_profiles, not on a hard-coded profile name. See Reports from earlier releases.
  • Isaac, PhysX, MuJoCo, Newton, multi-body and MDL are optional features inside Robotics-Prop. Unmet feature codes are listed in profiles["Robotics-Prop"].optional_unmet, feature names in .optional_features. “Passes for Isaac” is Robotics-Prop PASS with ISA.001 absent from optional_unmet; today Isaac is met and PhysX, Newton, MuJoCo and MDL are not. See optional features.
  • Do not badge profiles_passing. A plain prop now also passes Robot-Body, Robot-Gripper and Package-Candidate, because their required checks are a subset of Robotics-Prop’s at this release; profiles_passing lists all four. That is not a claim that the asset is a robot. Headline targeted_profiles, and show other profiles only with their not_targeted_because. Sixteen profiles are scored, up from nine.
  • New requirement codes, one renamed. The registry grows to 202 codes, up from 140. Newly checked: SR.002 (thumbnail), SR.004 (provenance metadata), SL.001, SL.002, SL.003, SL.MAT.001, SL.QCODE.001, SL.TIME.001, VM.PS.002 and VM.TEX.003. SL.NV.002 is renamed SL.TIME.001, and the specification’s example codes EX.001–EX.003 are gone. Reports carry 136 top-level checks. Full requirement coverage is regenerated against the new release.
  • Reports describe what was written into the USD. New optional top-level fields: simready_metadata (author, the source asset’s license, extents, mass, category, Wikidata Q-code), classification (category from a closed list, Q-code and label, and who chose it), thumbnail, semantic_labels, and material_slots on uploaded models. Each is { "available": false } when its stage failed and absent on older reports. See Retrieve a job.
  • Uploaded models are sized by a blind estimate. The pipeline estimates the object’s real size from its renders without seeing the file’s dimensions. A file within a factor of two of that keeps its own size (geometry.dimensions_source: "mesh"); one further off — exported in mm or cm, or normalised to a 1 m box — is rescaled to it ("estimated"). Before, the estimate was shown the file’s box and tended to repeat it, so normalised files shipped at their file size (a tennis ball at 0.26 m; now 0.067 m). declared dimensions still win. See Size, mass and materials.
  • asset_license request field. Optional on POST /api/conversions (multipart field) and POST /api/compositions/:id/submit (JSON body): the license of the source asset, up to 200 characters, default proprietary. You own what you upload; the USD’s author is always Rigyd. Invalid values return 400.
  • The USD package carries a thumbnail and semantic labels. usd/<name>/.thumbs/256x256/<name>.usd.png sits in a dot folder that some unzip tools and file browsers hide. /Root carries SemanticsLabelsAPI class and wikidata_qcode labels, and every Material a material label. See Download result.

Except where a line says otherwise, these apply to composition conversions (authored_to_simready). The geometry of uploaded 3D models (glb_to_simready) is unchanged.

  • Collision geometry follows the modelled surface. Convex hulls used to be built around a voxelized copy of each part and could stand up to 4 mm proud of it — enough to press a cabinet door into its own floor so that it could not open. Hulls are now built from the surface itself and do not reach past it. Where that cannot be done for a part, the previous method is used for that part only.
  • Flat support surfaces ship as exact box colliders. A worktop, shelf, belt or drawer floor that is a flat, axis-aligned slab is delivered as one box whose top face is the visual surface: <geom type="box" name="support_…"> in the MJCF, and Collisions/Support_<i> in the USD, colliding in both collision_mode variants. Other parts keep convex hulls.
  • Reports carry the simulation evidence. Every conversion’s report now includes checks.simulation (the MJCF stepped in MuJoCo: settle or hold, resting contacts, issues). Composition conversions also include checks.joint_sweep (every joint pushed across its declared range: travel_frac, and PASS / WARNING / ERROR per joint) and bodies[].collision (how each body’s collision was built and how far it reaches past the mesh). None of these fail a job. See Retrieve a job.
  • Printed labels with soft-edged transparency no longer fail the conversion. A label whose texture alpha varies per pixel (alphaMode: "BLEND") used to fail the job. The USD now carries the blend exactly; the MJCF, which cannot blend per pixel, cuts the label out at 50% coverage.
  • Composition-to-SimReady conversion is free for both rigid and articulated prototypes. These handoffs use authored_to_simready. Uploaded 3D models continue to use glb_to_simready at 5 credits; prototype generation is billed separately.
  • 3D-to-SimReady conversion costs 5 credits. This applies to uploaded 3D models. Composition-to-SimReady conversion remains at 0 credits. Failed paid conversions refund their conversion charge once. Query pricing for current costs.
  • CLI and Python SDK v1.1.0 add SimReady Asset Composer. rigyd compose accepts intent, a robotic task, optional reference images and physical context, then polls through prototype generation and optional SimReady submission. rigyd compositions list|get|submit exposes the workflow lifecycle for review and automation.
  • Validation docs now match the deployed 2026.06.0 report. Current reports emit 130 top-level checks from a 140-code registry, score all nine profiles, and expose missing rules through each profile’s unchecked[]. overall may be WARN while every targeted profile passes, so integrations should badge profiles_passing.
  • Articulated composition is reflected across the validation guide. Articulated assets use the same NVIDIA requirement registry and prop-profile scoring as rigid assets; role-aware collision generation keeps decorative geometry visual-only and gives graspable surfaces a finer collision budget.
  • Unattended prompt composition added. POST /api/compositions/generate composes and plans a prompt, generates a rigid or articulated prototype, and optionally submits it to SimReady with auto_submit=true.
  • Composition workflows added. GET /api/compositions/:id now includes normalized workflow status, stage, progress, assumptions, and errors for automated requests.
  • Every conversion now passes all three prop profiles. Prop-Robotics-Physx and Prop-Robotics-Isaac used to fail on two requirements; both shipped. The USD carries a collision_mode variantSet on /Root — sdf selected by default, convexHull still authored and still drawable without variant support — and the asset is composed as a kind = "component" entry point over a payloads/ tree instead of one flattened file. profiles_passing now names all three. See What’s covered today.

  • The USD is composed, so a single .usd file is no longer the whole asset. usd/<name>/<name>.usd references payloads/<name>_base.usd → <name>_meshes.usd and payloads <name>_physics.usd; opening the entry point without its siblings gives an empty stage. Result downloads now carry the whole usd/ tree, root layer first, for both format=usd and format=all — if your code extracts one .usd from the archive, point it at the directory instead. See Download result.

  • Spec pin moved to 2026.06.0. report.validation.spec_release names it. The release adds four requirement codes (140, up from 136), replaces COL.001 with the PHYSX.COL.001 / PHYSX.COL.002 pair in the prop profiles, and turns NVIDIA’s “optional feature” marker from a TOML comment into a real field. We author SDF colliders regardless of COL.001 leaving the profiles. Full requirement coverage is regenerated against it.

  • Correction to a correction: RC.002 does exist. It was removed from the coverage tables in the entry below, correctly at the time — release 2026.06.0 now defines it, and it is listed again on NVIDIA’s authority. VG.034, VM.D.001 and the AR.* family remain removed and remain non-existent.

  • Correction: a SimReady conformance failure never failed your job, and never refunded a credit. These pages previously stated that a conversion completes only when the asset clears the profile we target, and that a failing asset refunds your credit. Neither was true. A non-conformant asset is delivered like any other, with its verdict in report.validation. What does fail a conversion is a correctness problem — USD/MJCF parity, an internal invariant, a missing export, a rejected manifest. See SimReady Validation and Job lifecycle.

  • Correction: three requirement codes we published do not exist in the SimReady specification. VG.034, VM.D.001 and RC.002 were ours, and they sat indistinguishable among the real ones on Full requirement coverage. So did a family of AR.* codes, under a profile name — Articulated-Robotics-Neutral — that was never published. All are removed. The coverage tables are now generated from NVIDIA’s vendored metadata, so a code appears if and only if they define it: 136 codes, verified mechanically.

  • report.validation gained per-profile scoring. profiles_passing is the field to badge, not overall. profiles scores all nine published profiles with what each one fails; spec_release names the specification release scored against (currently 2026.04.1); checks[].measured_status carries the raw finding where status is scoped to the profiles we target; checks[].na_reason explains every N/A from a fixed three-value vocabulary. A profile with no failures but unwritten rules now reports INCOMPLETE rather than PASS.

  • skip_validation no longer skips conformance scoring. Every conversion is scored and every completed job carries report.validation. The flag now only suppresses the internal correctness gate — leave it unset.

  • The MJCF package in a result download lost a folder level. mjcf/<name>/<name>.xml is now mjcf/<name>.xml, from a SimReady NP.005 folder-structure fix. The USD side of the download is unchanged. Breaking for anyone addressing files by path — see Download result.

  • POST /api/conversions/generate retired. Text and image generation remains available through Asset Composer in the Rigyd app. The public API and CLI accept 3D-file conversion submissions only.

  • CLI & Python SDK released. pip install rigyd wraps the conversion API for terminal and Python use, including a MuJoCo model loader. See CLI & Python SDK.
  • Isaac Sim extension released (v1.0.0). The rigyd.simready Omniverse Kit extension generates and loads SimReady assets onto the stage from inside NVIDIA Isaac Sim. See Isaac Sim extension.
  • POST /api/conversions/generate — images[] count is now exactly 1 or 4 (was 1-4). Multiview is positional (Front, Right, Back, Left); partial selections caused malformed multiview submissions. Requests with 2 or 3 images now return 422.
  • Initial public docs. Documents the conversion surface (POST /api/conversions, POST /api/conversions/generate, POST /api/conversions/:id/simulate, plus the /api/conversions[/...] read endpoints).
  • llms.txt / llms-full.txt published. AI agents can ingest the full API surface in one fetch from https://docs.rigyd.com/llms-full.txt.

For pre-public-docs history, see internal release notes.