> For the complete documentation index, see [llms.txt](https://docs.projectsim.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.projectsim.ai/api-reference/models.md).

# Models

## The AssetDetail object

```json
{"openapi":"3.1.0","info":{"title":"projectsim API","version":"1.0.0-beta"},"components":{"schemas":{"AssetDetail":{"properties":{"batch_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Batch Id"},"batch_index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Batch Index"},"created_at":{"format":"date-time","title":"Created At","type":"string"},"dimensions":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Dimensions"},"effective_params":{"additionalProperties":true,"description":"Your defaults merged with the request params and frozen at create, so the job is reproducible from this record. Same shape as GET /v1/settings.","title":"Effective Params","type":"object"},"files":{"description":"Empty until the asset completes; no partial downloads.","items":{"$ref":"#/components/schemas/AssetFileEntry"},"title":"Files","type":"array"},"id":{"title":"Id","type":"string"},"job":{"anyOf":[{"$ref":"#/components/schemas/AssetJobRef"},{"type":"null"}]},"kind":{"description":"Provenance: object_reconstruction · procedural_generation · scene_decomposition","title":"Kind","type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"scene_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Scene Id"},"variation_set_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Variation Set Id"}},"required":["id","kind","created_at","effective_params","files"],"title":"AssetDetail","type":"object"},"AssetFileEntry":{"description":"A deliverable, with a download URL minted for this response.","properties":{"expires_at":{"format":"date-time","title":"Expires At","type":"string"},"kind":{"description":"fbx · glb · obj · usd · mjcf · urdf · physics_sidecar · simready_glb · simready_fbx · simready_sidecar · texture · preview · …","title":"Kind","type":"string"},"path":{"description":"Where the file sits in the asset's deliverable folder, relative to it. A USD references its textures by these paths, so lay the files out this way to open it textured.","title":"Path","type":"string"},"url":{"description":"Presigned GET, valid for one hour.","title":"Url","type":"string"}},"required":["kind","path","url","expires_at"],"title":"AssetFileEntry","type":"object"},"AssetJobRef":{"description":"The asset's latest job, inlined. Assets have no status of their own.","properties":{"current_stage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Stage"},"job_id":{"title":"Job Id","type":"string"},"progress":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Progress"},"status":{"title":"Status","type":"string"}},"required":["job_id","status"],"title":"AssetJobRef","type":"object"}}}}
```

## The AssetFileEntry object

```json
{"openapi":"3.1.0","info":{"title":"projectsim API","version":"1.0.0-beta"},"components":{"schemas":{"AssetFileEntry":{"description":"A deliverable, with a download URL minted for this response.","properties":{"expires_at":{"format":"date-time","title":"Expires At","type":"string"},"kind":{"description":"fbx · glb · obj · usd · mjcf · urdf · physics_sidecar · simready_glb · simready_fbx · simready_sidecar · texture · preview · …","title":"Kind","type":"string"},"path":{"description":"Where the file sits in the asset's deliverable folder, relative to it. A USD references its textures by these paths, so lay the files out this way to open it textured.","title":"Path","type":"string"},"url":{"description":"Presigned GET, valid for one hour.","title":"Url","type":"string"}},"required":["kind","path","url","expires_at"],"title":"AssetFileEntry","type":"object"}}}}
```

## The AssetInputs object

```json
{"openapi":"3.1.0","info":{"title":"projectsim API","version":"1.0.0-beta"},"components":{"schemas":{"AssetInputs":{"additionalProperties":false,"properties":{"images":{"items":{"$ref":"#/components/schemas/ImageInput"},"maxItems":1,"title":"Images","type":"array"},"text":{"anyOf":[{"maxLength":10000,"minLength":1,"pattern":"\\S","type":"string"},{"type":"null"}],"description":"Object description used to generate a starting reference image. Provide either text or one image, not both.","title":"Text"}},"title":"AssetInputs","type":"object"},"ImageInput":{"additionalProperties":false,"properties":{"data":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Data"},"url":{"anyOf":[{"format":"uri","maxLength":2083,"minLength":1,"type":"string"},{"type":"null"}],"title":"Url"}},"title":"ImageInput","type":"object"}}}}
```

## The AssetJobRef object

```json
{"openapi":"3.1.0","info":{"title":"projectsim API","version":"1.0.0-beta"},"components":{"schemas":{"AssetJobRef":{"description":"The asset's latest job, inlined. Assets have no status of their own.","properties":{"current_stage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Stage"},"job_id":{"title":"Job Id","type":"string"},"progress":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Progress"},"status":{"title":"Status","type":"string"}},"required":["job_id","status"],"title":"AssetJobRef","type":"object"}}}}
```

## The AssetListResponse object

```json
{"openapi":"3.1.0","info":{"title":"projectsim API","version":"1.0.0-beta"},"components":{"schemas":{"AssetListResponse":{"properties":{"assets":{"items":{"$ref":"#/components/schemas/AssetSummary"},"title":"Assets","type":"array"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Null on the last page.","title":"Next Cursor"}},"required":["assets"],"title":"AssetListResponse","type":"object"},"AssetSummary":{"properties":{"batch_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Batch Id"},"batch_index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Batch Index"},"created_at":{"format":"date-time","title":"Created At","type":"string"},"id":{"title":"Id","type":"string"},"job":{"anyOf":[{"$ref":"#/components/schemas/AssetJobRef"},{"type":"null"}]},"kind":{"description":"Provenance: object_reconstruction · procedural_generation · scene_decomposition","title":"Kind","type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"variation_set_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Variation Set Id"}},"required":["id","kind","created_at"],"title":"AssetSummary","type":"object"},"AssetJobRef":{"description":"The asset's latest job, inlined. Assets have no status of their own.","properties":{"current_stage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Stage"},"job_id":{"title":"Job Id","type":"string"},"progress":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Progress"},"status":{"title":"Status","type":"string"}},"required":["job_id","status"],"title":"AssetJobRef","type":"object"}}}}
```

## The AssetSummary object

```json
{"openapi":"3.1.0","info":{"title":"projectsim API","version":"1.0.0-beta"},"components":{"schemas":{"AssetSummary":{"properties":{"batch_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Batch Id"},"batch_index":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Batch Index"},"created_at":{"format":"date-time","title":"Created At","type":"string"},"id":{"title":"Id","type":"string"},"job":{"anyOf":[{"$ref":"#/components/schemas/AssetJobRef"},{"type":"null"}]},"kind":{"description":"Provenance: object_reconstruction · procedural_generation · scene_decomposition","title":"Kind","type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"variation_set_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Variation Set Id"}},"required":["id","kind","created_at"],"title":"AssetSummary","type":"object"},"AssetJobRef":{"description":"The asset's latest job, inlined. Assets have no status of their own.","properties":{"current_stage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Stage"},"job_id":{"title":"Job Id","type":"string"},"progress":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Progress"},"status":{"title":"Status","type":"string"}},"required":["job_id","status"],"title":"AssetJobRef","type":"object"}}}}
```

## The BatchDetail object

```json
{"openapi":"3.1.0","info":{"title":"projectsim API","version":"1.0.0-beta"},"components":{"schemas":{"BatchDetail":{"properties":{"count":{"title":"Count","type":"integer"},"counts":{"$ref":"#/components/schemas/MemberCounts"},"created_at":{"format":"date-time","title":"Created At","type":"string"},"id":{"title":"Id","type":"string"},"job_id":{"title":"Job Id","type":"string"},"manifest":{"anyOf":[{"$ref":"#/components/schemas/ManifestRef"},{"type":"null"}]},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"progress":{"description":"Terminal member count / requested count; not a success rate.","title":"Progress","type":"number"},"status":{"title":"Status","type":"string"}},"required":["id","job_id","count","status","counts","progress","created_at"],"title":"BatchDetail","type":"object"},"MemberCounts":{"description":"Derived from the member jobs on every read, so it never drifts.","properties":{"canceled":{"default":0,"title":"Canceled","type":"integer"},"complete":{"title":"Complete","type":"integer"},"failed":{"title":"Failed","type":"integer"},"queued":{"title":"Queued","type":"integer"},"requested":{"title":"Requested","type":"integer"},"running":{"title":"Running","type":"integer"}},"required":["requested","queued","running","complete","failed"],"title":"MemberCounts","type":"object"},"ManifestRef":{"properties":{"expires_at":{"format":"date-time","title":"Expires At","type":"string"},"url":{"description":"Presigned GET, valid for 24 hours.","title":"Url","type":"string"}},"required":["url","expires_at"],"title":"ManifestRef","type":"object"}}}}
```

## The BatchMember object

```json
{"openapi":"3.1.0","info":{"title":"projectsim API","version":"1.0.0-beta"},"components":{"schemas":{"BatchMember":{"properties":{"asset_id":{"title":"Asset Id","type":"string"},"batch_index":{"description":"Stable input order, starting at 1.","title":"Batch Index","type":"integer"},"current_stage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Stage"},"error":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Error"},"files":{"items":{"$ref":"#/components/schemas/MemberFileEntry"},"title":"Files","type":"array"},"job_id":{"title":"Job Id","type":"string"},"status":{"title":"Status","type":"string"}},"required":["batch_index","asset_id","job_id","status","files"],"title":"BatchMember","type":"object"},"MemberFileEntry":{"description":"A member's deliverable with a fresh download URL.","properties":{"expires_at":{"format":"date-time","title":"Expires At","type":"string"},"kind":{"title":"Kind","type":"string"},"path":{"description":"Where the file sits in the member's deliverable folder, relative to it. A USD references its textures by these paths, so lay the files out this way to open it textured.","title":"Path","type":"string"},"url":{"description":"Presigned GET, valid for 24 hours.","title":"Url","type":"string"}},"required":["kind","path","url","expires_at"],"title":"MemberFileEntry","type":"object"}}}}
```

## The BatchMemberList object

```json
{"openapi":"3.1.0","info":{"title":"projectsim API","version":"1.0.0-beta"},"components":{"schemas":{"BatchMemberList":{"properties":{"members":{"items":{"$ref":"#/components/schemas/BatchMember"},"title":"Members","type":"array"},"next_cursor":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Last batch_index on the page; null when done.","title":"Next Cursor"}},"required":["members"],"title":"BatchMemberList","type":"object"},"BatchMember":{"properties":{"asset_id":{"title":"Asset Id","type":"string"},"batch_index":{"description":"Stable input order, starting at 1.","title":"Batch Index","type":"integer"},"current_stage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Current Stage"},"error":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Error"},"files":{"items":{"$ref":"#/components/schemas/MemberFileEntry"},"title":"Files","type":"array"},"job_id":{"title":"Job Id","type":"string"},"status":{"title":"Status","type":"string"}},"required":["batch_index","asset_id","job_id","status","files"],"title":"BatchMember","type":"object"},"MemberFileEntry":{"description":"A member's deliverable with a fresh download URL.","properties":{"expires_at":{"format":"date-time","title":"Expires At","type":"string"},"kind":{"title":"Kind","type":"string"},"path":{"description":"Where the file sits in the member's deliverable folder, relative to it. A USD references its textures by these paths, so lay the files out this way to open it textured.","title":"Path","type":"string"},"url":{"description":"Presigned GET, valid for 24 hours.","title":"Url","type":"string"}},"required":["kind","path","url","expires_at"],"title":"MemberFileEntry","type":"object"}}}}
```

## The BulkStatusRequest object

```json
{"openapi":"3.1.0","info":{"title":"projectsim API","version":"1.0.0-beta"},"components":{"schemas":{"BulkStatusRequest":{"additionalProperties":false,"properties":{"ids":{"items":{"type":"string"},"maxItems":100,"minItems":1,"title":"Ids","type":"array"}},"required":["ids"],"title":"BulkStatusRequest","type":"object"}}}}
```

## The BulkStatusResponse object

```json
{"openapi":"3.1.0","info":{"title":"projectsim API","version":"1.0.0-beta"},"components":{"schemas":{"BulkStatusResponse":{"properties":{"jobs":{"additionalProperties":{"anyOf":[{"$ref":"#/components/schemas/JobResponse"},{"type":"null"}]},"description":"Keyed by the ids you sent. An id that does not exist, or that you do not own, is null.","title":"Jobs","type":"object"}},"required":["jobs"],"title":"BulkStatusResponse","type":"object"},"JobResponse":{"description":"One execution against a resource — the public status surface.","properties":{"created_at":{"format":"date-time","title":"Created At","type":"string"},"current_stage":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"While running: variation · reconstruction · scale · physics","title":"Current Stage"},"error":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"description":"An RFC 7807 problem object when the job failed.","title":"Error"},"id":{"title":"Id","type":"string"},"progress":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Progress"},"resource":{"$ref":"#/components/schemas/ResourceRef"},"status":{"description":"queued · running · complete · failed · canceled · partial (variation sets and batches)","title":"Status","type":"string"},"updated_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"title":"Updated At"}},"required":["id","resource","status","created_at"],"title":"JobResponse","type":"object"},"ResourceRef":{"description":"What a job or delivery is about.","properties":{"id":{"title":"Id","type":"string"},"type":{"description":"asset · variation_set · scene · batch","title":"Type","type":"string"}},"required":["type","id"],"title":"ResourceRef","type":"object"}}}}
```

## The BundleRequest object

```json
{"openapi":"3.1.0","info":{"title":"projectsim API","version":"1.0.0-beta"},"components":{"schemas":{"BundleRequest":{"additionalProperties":false,"properties":{"format":{"const":"zip","default":"zip","title":"Format","type":"string"}},"title":"BundleRequest","type":"object"}}}}
```

## The BundleResponse object

```json
{"openapi":"3.1.0","info":{"title":"projectsim API","version":"1.0.0-beta"},"components":{"schemas":{"BundleResponse":{"properties":{"job_id":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Present when this call started the build.","title":"Job Id"},"state":{"description":"none · pending · ready","title":"State","type":"string"}},"required":["state"],"title":"BundleResponse","type":"object"}}}}
```

## The BundleState object

```json
{"openapi":"3.1.0","info":{"title":"projectsim API","version":"1.0.0-beta"},"components":{"schemas":{"BundleState":{"properties":{"expires_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"title":"Expires At"},"state":{"description":"none · pending · ready","title":"State","type":"string"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Set once ready; valid for 24 hours.","title":"Url"}},"required":["state"],"title":"BundleState","type":"object"}}}}
```

## The CaptureInput object

```json
{"openapi":"3.1.0","info":{"title":"projectsim API","version":"1.0.0-beta"},"components":{"schemas":{"CaptureInput":{"additionalProperties":false,"description":"One video clip of the object beside a ChArUco board.\n\nThe measurement reference for `POST /v1/assets/measured`: the object\nstands on the floor next to the printed board and is filmed in one clip\nwalking around it. The clip comes either by HTTPS URL or inline as\nbase64, exactly one of the two.","properties":{"data":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The capture video (MP4 or MOV) as base64, up to 500 MB decoded. Stored as part of the create call, so a payload that is not a supported clip is a `422` here rather than a failed job. Inflates the request by a third: prefer `url` for a large clip.","title":"Data"},"url":{"anyOf":[{"format":"uri","maxLength":2083,"minLength":1,"type":"string"},{"type":"null"}],"description":"HTTPS URL of the capture video (MP4 or MOV).","title":"Url"}},"title":"CaptureInput","type":"object"}}}}
```

## The CreateAssetRequest object

```json
{"openapi":"3.1.0","info":{"title":"projectsim API","version":"1.0.0-beta"},"components":{"schemas":{"CreateAssetRequest":{"additionalProperties":false,"properties":{"inputs":{"$ref":"#/components/schemas/AssetInputs"},"name":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"title":"Name"},"params":{"anyOf":[{"$ref":"#/components/schemas/Params"},{"type":"null"}]}},"required":["inputs"],"title":"CreateAssetRequest","type":"object"},"AssetInputs":{"additionalProperties":false,"properties":{"images":{"items":{"$ref":"#/components/schemas/ImageInput"},"maxItems":1,"title":"Images","type":"array"},"text":{"anyOf":[{"maxLength":10000,"minLength":1,"pattern":"\\S","type":"string"},{"type":"null"}],"description":"Object description used to generate a starting reference image. Provide either text or one image, not both.","title":"Text"}},"title":"AssetInputs","type":"object"},"ImageInput":{"additionalProperties":false,"properties":{"data":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Data"},"url":{"anyOf":[{"format":"uri","maxLength":2083,"minLength":1,"type":"string"},{"type":"null"}],"title":"Url"}},"title":"ImageInput","type":"object"},"Params":{"additionalProperties":false,"properties":{"mesh":{"$ref":"#/components/schemas/MeshParams","default":{"quality":"standard"}},"physics":{"$ref":"#/components/schemas/PhysicsParams","default":{"body":"rigid","collision":"auto","simulator":"isaac_sim_physx"}},"texture":{"$ref":"#/components/schemas/TextureParams","default":{"resolution":4096}},"variation":{"$ref":"#/components/schemas/VariationParams","default":{"variation_type":"general","wildness":"moderate"}}},"title":"Params","type":"object"},"MeshParams":{"additionalProperties":false,"properties":{"quality":{"default":"standard","enum":["standard","low","ultra_low"],"title":"Quality","type":"string"}},"title":"MeshParams","type":"object"},"PhysicsParams":{"additionalProperties":false,"properties":{"body":{"default":"rigid","description":"Physical behavior of the bodies: rigid preserves shape; deformable uses soft-body simulation.","enum":["rigid","deformable"],"title":"Body","type":"string"},"collision":{"default":"auto","enum":["auto","convex_hull","convex_decomposition","coacd","bounding_box","sdf"],"title":"Collision","type":"string"},"simulator":{"default":"isaac_sim_physx","description":"Target runtime. Native formats and physics engine are derived internally; agnostic delivers FBX and GLB plus physics sidecar.","enum":["isaac_sim_physx","isaac_sim_newton","mujoco","sapien","genesis","agnostic"],"title":"Simulator","type":"string"}},"title":"PhysicsParams","type":"object"},"TextureParams":{"additionalProperties":false,"properties":{"resolution":{"default":4096,"enum":[1024,2048,4096,8192],"title":"Resolution","type":"integer"}},"title":"TextureParams","type":"object"},"VariationParams":{"additionalProperties":false,"description":"How an image-method set's variants are generated. Ignored otherwise.\n\nA deliberate subset of the generator's options: what a customer steers,\nnot how many images it makes. Count is the set's `count`, one image per\nmember, so it is not reachable from here. The generator's custom prompt\nis not steered here either — it comes from the set's `seed.text` — and\nthe subject name comes from the set's `name`.","properties":{"variation_type":{"default":"general","enum":["texture","general"],"title":"Variation Type","type":"string"},"wildness":{"default":"moderate","enum":["subtle","moderate","bold","wild"],"title":"Wildness","type":"string"}},"title":"VariationParams","type":"object"}}}}
```

## The CreateAssetResponse object

```json
{"openapi":"3.1.0","info":{"title":"projectsim API","version":"1.0.0-beta"},"components":{"schemas":{"CreateAssetResponse":{"properties":{"effective_params":{"additionalProperties":true,"title":"Effective Params","type":"object"},"id":{"title":"Id","type":"string"},"job_id":{"title":"Job Id","type":"string"},"status":{"title":"Status","type":"string"}},"required":["id","job_id","status","effective_params"],"title":"CreateAssetResponse","type":"object"}}}}
```

## The CreateAssetsRequest object

```json
{"openapi":"3.1.0","info":{"title":"projectsim API","version":"1.0.0-beta"},"components":{"schemas":{"CreateAssetsRequest":{"additionalProperties":false,"description":"List-based creation for the batch endpoints; single-asset requests are unchanged.","properties":{"items":{"description":"The assets to create, 1-100.","items":{"$ref":"#/components/schemas/CreateAssetRequest"},"maxItems":100,"minItems":1,"title":"Items","type":"array"},"name":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"title":"Name"}},"required":["items"],"title":"CreateAssetsRequest","type":"object"},"CreateAssetRequest":{"additionalProperties":false,"properties":{"inputs":{"$ref":"#/components/schemas/AssetInputs"},"name":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"title":"Name"},"params":{"anyOf":[{"$ref":"#/components/schemas/Params"},{"type":"null"}]}},"required":["inputs"],"title":"CreateAssetRequest","type":"object"},"AssetInputs":{"additionalProperties":false,"properties":{"images":{"items":{"$ref":"#/components/schemas/ImageInput"},"maxItems":1,"title":"Images","type":"array"},"text":{"anyOf":[{"maxLength":10000,"minLength":1,"pattern":"\\S","type":"string"},{"type":"null"}],"description":"Object description used to generate a starting reference image. Provide either text or one image, not both.","title":"Text"}},"title":"AssetInputs","type":"object"},"ImageInput":{"additionalProperties":false,"properties":{"data":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Data"},"url":{"anyOf":[{"format":"uri","maxLength":2083,"minLength":1,"type":"string"},{"type":"null"}],"title":"Url"}},"title":"ImageInput","type":"object"},"Params":{"additionalProperties":false,"properties":{"mesh":{"$ref":"#/components/schemas/MeshParams","default":{"quality":"standard"}},"physics":{"$ref":"#/components/schemas/PhysicsParams","default":{"body":"rigid","collision":"auto","simulator":"isaac_sim_physx"}},"texture":{"$ref":"#/components/schemas/TextureParams","default":{"resolution":4096}},"variation":{"$ref":"#/components/schemas/VariationParams","default":{"variation_type":"general","wildness":"moderate"}}},"title":"Params","type":"object"},"MeshParams":{"additionalProperties":false,"properties":{"quality":{"default":"standard","enum":["standard","low","ultra_low"],"title":"Quality","type":"string"}},"title":"MeshParams","type":"object"},"PhysicsParams":{"additionalProperties":false,"properties":{"body":{"default":"rigid","description":"Physical behavior of the bodies: rigid preserves shape; deformable uses soft-body simulation.","enum":["rigid","deformable"],"title":"Body","type":"string"},"collision":{"default":"auto","enum":["auto","convex_hull","convex_decomposition","coacd","bounding_box","sdf"],"title":"Collision","type":"string"},"simulator":{"default":"isaac_sim_physx","description":"Target runtime. Native formats and physics engine are derived internally; agnostic delivers FBX and GLB plus physics sidecar.","enum":["isaac_sim_physx","isaac_sim_newton","mujoco","sapien","genesis","agnostic"],"title":"Simulator","type":"string"}},"title":"PhysicsParams","type":"object"},"TextureParams":{"additionalProperties":false,"properties":{"resolution":{"default":4096,"enum":[1024,2048,4096,8192],"title":"Resolution","type":"integer"}},"title":"TextureParams","type":"object"},"VariationParams":{"additionalProperties":false,"description":"How an image-method set's variants are generated. Ignored otherwise.\n\nA deliberate subset of the generator's options: what a customer steers,\nnot how many images it makes. Count is the set's `count`, one image per\nmember, so it is not reachable from here. The generator's custom prompt\nis not steered here either — it comes from the set's `seed.text` — and\nthe subject name comes from the set's `name`.","properties":{"variation_type":{"default":"general","enum":["texture","general"],"title":"Variation Type","type":"string"},"wildness":{"default":"moderate","enum":["subtle","moderate","bold","wild"],"title":"Wildness","type":"string"}},"title":"VariationParams","type":"object"}}}}
```

## The CreateAssetsResponse object

```json
{"openapi":"3.1.0","info":{"title":"projectsim API","version":"1.0.0-beta"},"components":{"schemas":{"CreateAssetsResponse":{"description":"The created assets, in the order they were sent.","properties":{"assets":{"items":{"$ref":"#/components/schemas/CreateAssetResponse"},"title":"Assets","type":"array"},"id":{"title":"Id","type":"string"},"job_id":{"title":"Job Id","type":"string"},"status_url":{"title":"Status Url","type":"string"}},"required":["id","job_id","status_url","assets"],"title":"CreateAssetsResponse","type":"object"},"CreateAssetResponse":{"properties":{"effective_params":{"additionalProperties":true,"title":"Effective Params","type":"object"},"id":{"title":"Id","type":"string"},"job_id":{"title":"Job Id","type":"string"},"status":{"title":"Status","type":"string"}},"required":["id","job_id","status","effective_params"],"title":"CreateAssetResponse","type":"object"}}}}
```

## The CreateHighFidelityVariationSetRequest object

```json
{"openapi":"3.1.0","info":{"title":"projectsim API","version":"1.0.0-beta"},"components":{"schemas":{"CreateHighFidelityVariationSetRequest":{"additionalProperties":false,"properties":{"count":{"description":"How many variants, 1–100.","maximum":100,"minimum":1,"title":"Count","type":"integer"},"name":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"title":"Name"},"params":{"anyOf":[{"$ref":"#/components/schemas/Params"},{"type":"null"}]},"seed":{"$ref":"#/components/schemas/HighFidelitySeed"}},"required":["count","seed"],"title":"CreateHighFidelityVariationSetRequest","type":"object"},"Params":{"additionalProperties":false,"properties":{"mesh":{"$ref":"#/components/schemas/MeshParams","default":{"quality":"standard"}},"physics":{"$ref":"#/components/schemas/PhysicsParams","default":{"body":"rigid","collision":"auto","simulator":"isaac_sim_physx"}},"texture":{"$ref":"#/components/schemas/TextureParams","default":{"resolution":4096}},"variation":{"$ref":"#/components/schemas/VariationParams","default":{"variation_type":"general","wildness":"moderate"}}},"title":"Params","type":"object"},"MeshParams":{"additionalProperties":false,"properties":{"quality":{"default":"standard","enum":["standard","low","ultra_low"],"title":"Quality","type":"string"}},"title":"MeshParams","type":"object"},"PhysicsParams":{"additionalProperties":false,"properties":{"body":{"default":"rigid","description":"Physical behavior of the bodies: rigid preserves shape; deformable uses soft-body simulation.","enum":["rigid","deformable"],"title":"Body","type":"string"},"collision":{"default":"auto","enum":["auto","convex_hull","convex_decomposition","coacd","bounding_box","sdf"],"title":"Collision","type":"string"},"simulator":{"default":"isaac_sim_physx","description":"Target runtime. Native formats and physics engine are derived internally; agnostic delivers FBX and GLB plus physics sidecar.","enum":["isaac_sim_physx","isaac_sim_newton","mujoco","sapien","genesis","agnostic"],"title":"Simulator","type":"string"}},"title":"PhysicsParams","type":"object"},"TextureParams":{"additionalProperties":false,"properties":{"resolution":{"default":4096,"enum":[1024,2048,4096,8192],"title":"Resolution","type":"integer"}},"title":"TextureParams","type":"object"},"VariationParams":{"additionalProperties":false,"description":"How an image-method set's variants are generated. Ignored otherwise.\n\nA deliberate subset of the generator's options: what a customer steers,\nnot how many images it makes. Count is the set's `count`, one image per\nmember, so it is not reachable from here. The generator's custom prompt\nis not steered here either — it comes from the set's `seed.text` — and\nthe subject name comes from the set's `name`.","properties":{"variation_type":{"default":"general","enum":["texture","general"],"title":"Variation Type","type":"string"},"wildness":{"default":"moderate","enum":["subtle","moderate","bold","wild"],"title":"Wildness","type":"string"}},"title":"VariationParams","type":"object"},"HighFidelitySeed":{"additionalProperties":false,"properties":{"images":{"description":"One subject image. Provide an image, text, or both.","items":{"$ref":"#/components/schemas/ImageInput"},"maxItems":1,"title":"Images","type":"array"},"text":{"anyOf":[{"maxLength":2000,"minLength":1,"pattern":"\\S","type":"string"},{"type":"null"}],"description":"Subject description. Provide an image, text, or both.","title":"Text"},"variation_references":{"description":"Up to eight optional reference images to guide variations in style, palette or detail; these do not replace the subject.","items":{"$ref":"#/components/schemas/ImageInput"},"maxItems":8,"title":"Variation References","type":"array"}},"title":"HighFidelitySeed","type":"object"},"ImageInput":{"additionalProperties":false,"properties":{"data":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Data"},"url":{"anyOf":[{"format":"uri","maxLength":2083,"minLength":1,"type":"string"},{"type":"null"}],"title":"Url"}},"title":"ImageInput","type":"object"}}}}
```

## The CreateMeasuredAssetRequest object

```json
{"openapi":"3.1.0","info":{"title":"projectsim API","version":"1.0.0-beta"},"components":{"schemas":{"CreateMeasuredAssetRequest":{"additionalProperties":false,"properties":{"inputs":{"$ref":"#/components/schemas/MeasuredAssetInputs"},"name":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"title":"Name"},"params":{"anyOf":[{"$ref":"#/components/schemas/Params"},{"type":"null"}]}},"required":["inputs"],"title":"CreateMeasuredAssetRequest","type":"object"},"MeasuredAssetInputs":{"additionalProperties":false,"description":"Exactly one subject image and one capture video.","properties":{"capture":{"description":"Exactly one video clip (MP4 or MOV) of the object next to a printed ChArUco board, by HTTPS URL or inline as base64.","items":{"$ref":"#/components/schemas/CaptureInput"},"maxItems":1,"minItems":1,"title":"Capture","type":"array"},"images":{"items":{"$ref":"#/components/schemas/ImageInput"},"maxItems":1,"minItems":1,"title":"Images","type":"array"}},"required":["images","capture"],"title":"MeasuredAssetInputs","type":"object"},"CaptureInput":{"additionalProperties":false,"description":"One video clip of the object beside a ChArUco board.\n\nThe measurement reference for `POST /v1/assets/measured`: the object\nstands on the floor next to the printed board and is filmed in one clip\nwalking around it. The clip comes either by HTTPS URL or inline as\nbase64, exactly one of the two.","properties":{"data":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The capture video (MP4 or MOV) as base64, up to 500 MB decoded. Stored as part of the create call, so a payload that is not a supported clip is a `422` here rather than a failed job. Inflates the request by a third: prefer `url` for a large clip.","title":"Data"},"url":{"anyOf":[{"format":"uri","maxLength":2083,"minLength":1,"type":"string"},{"type":"null"}],"description":"HTTPS URL of the capture video (MP4 or MOV).","title":"Url"}},"title":"CaptureInput","type":"object"},"ImageInput":{"additionalProperties":false,"properties":{"data":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Data"},"url":{"anyOf":[{"format":"uri","maxLength":2083,"minLength":1,"type":"string"},{"type":"null"}],"title":"Url"}},"title":"ImageInput","type":"object"},"Params":{"additionalProperties":false,"properties":{"mesh":{"$ref":"#/components/schemas/MeshParams","default":{"quality":"standard"}},"physics":{"$ref":"#/components/schemas/PhysicsParams","default":{"body":"rigid","collision":"auto","simulator":"isaac_sim_physx"}},"texture":{"$ref":"#/components/schemas/TextureParams","default":{"resolution":4096}},"variation":{"$ref":"#/components/schemas/VariationParams","default":{"variation_type":"general","wildness":"moderate"}}},"title":"Params","type":"object"},"MeshParams":{"additionalProperties":false,"properties":{"quality":{"default":"standard","enum":["standard","low","ultra_low"],"title":"Quality","type":"string"}},"title":"MeshParams","type":"object"},"PhysicsParams":{"additionalProperties":false,"properties":{"body":{"default":"rigid","description":"Physical behavior of the bodies: rigid preserves shape; deformable uses soft-body simulation.","enum":["rigid","deformable"],"title":"Body","type":"string"},"collision":{"default":"auto","enum":["auto","convex_hull","convex_decomposition","coacd","bounding_box","sdf"],"title":"Collision","type":"string"},"simulator":{"default":"isaac_sim_physx","description":"Target runtime. Native formats and physics engine are derived internally; agnostic delivers FBX and GLB plus physics sidecar.","enum":["isaac_sim_physx","isaac_sim_newton","mujoco","sapien","genesis","agnostic"],"title":"Simulator","type":"string"}},"title":"PhysicsParams","type":"object"},"TextureParams":{"additionalProperties":false,"properties":{"resolution":{"default":4096,"enum":[1024,2048,4096,8192],"title":"Resolution","type":"integer"}},"title":"TextureParams","type":"object"},"VariationParams":{"additionalProperties":false,"description":"How an image-method set's variants are generated. Ignored otherwise.\n\nA deliberate subset of the generator's options: what a customer steers,\nnot how many images it makes. Count is the set's `count`, one image per\nmember, so it is not reachable from here. The generator's custom prompt\nis not steered here either — it comes from the set's `seed.text` — and\nthe subject name comes from the set's `name`.","properties":{"variation_type":{"default":"general","enum":["texture","general"],"title":"Variation Type","type":"string"},"wildness":{"default":"moderate","enum":["subtle","moderate","bold","wild"],"title":"Wildness","type":"string"}},"title":"VariationParams","type":"object"}}}}
```

## The CreateMeasuredAssetsRequest object

```json
{"openapi":"3.1.0","info":{"title":"projectsim API","version":"1.0.0-beta"},"components":{"schemas":{"CreateMeasuredAssetsRequest":{"additionalProperties":false,"properties":{"items":{"description":"The measured assets to create, 1-100.","items":{"$ref":"#/components/schemas/CreateMeasuredAssetRequest"},"maxItems":100,"minItems":1,"title":"Items","type":"array"},"name":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"title":"Name"}},"required":["items"],"title":"CreateMeasuredAssetsRequest","type":"object"},"CreateMeasuredAssetRequest":{"additionalProperties":false,"properties":{"inputs":{"$ref":"#/components/schemas/MeasuredAssetInputs"},"name":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"title":"Name"},"params":{"anyOf":[{"$ref":"#/components/schemas/Params"},{"type":"null"}]}},"required":["inputs"],"title":"CreateMeasuredAssetRequest","type":"object"},"MeasuredAssetInputs":{"additionalProperties":false,"description":"Exactly one subject image and one capture video.","properties":{"capture":{"description":"Exactly one video clip (MP4 or MOV) of the object next to a printed ChArUco board, by HTTPS URL or inline as base64.","items":{"$ref":"#/components/schemas/CaptureInput"},"maxItems":1,"minItems":1,"title":"Capture","type":"array"},"images":{"items":{"$ref":"#/components/schemas/ImageInput"},"maxItems":1,"minItems":1,"title":"Images","type":"array"}},"required":["images","capture"],"title":"MeasuredAssetInputs","type":"object"},"CaptureInput":{"additionalProperties":false,"description":"One video clip of the object beside a ChArUco board.\n\nThe measurement reference for `POST /v1/assets/measured`: the object\nstands on the floor next to the printed board and is filmed in one clip\nwalking around it. The clip comes either by HTTPS URL or inline as\nbase64, exactly one of the two.","properties":{"data":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The capture video (MP4 or MOV) as base64, up to 500 MB decoded. Stored as part of the create call, so a payload that is not a supported clip is a `422` here rather than a failed job. Inflates the request by a third: prefer `url` for a large clip.","title":"Data"},"url":{"anyOf":[{"format":"uri","maxLength":2083,"minLength":1,"type":"string"},{"type":"null"}],"description":"HTTPS URL of the capture video (MP4 or MOV).","title":"Url"}},"title":"CaptureInput","type":"object"},"ImageInput":{"additionalProperties":false,"properties":{"data":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Data"},"url":{"anyOf":[{"format":"uri","maxLength":2083,"minLength":1,"type":"string"},{"type":"null"}],"title":"Url"}},"title":"ImageInput","type":"object"},"Params":{"additionalProperties":false,"properties":{"mesh":{"$ref":"#/components/schemas/MeshParams","default":{"quality":"standard"}},"physics":{"$ref":"#/components/schemas/PhysicsParams","default":{"body":"rigid","collision":"auto","simulator":"isaac_sim_physx"}},"texture":{"$ref":"#/components/schemas/TextureParams","default":{"resolution":4096}},"variation":{"$ref":"#/components/schemas/VariationParams","default":{"variation_type":"general","wildness":"moderate"}}},"title":"Params","type":"object"},"MeshParams":{"additionalProperties":false,"properties":{"quality":{"default":"standard","enum":["standard","low","ultra_low"],"title":"Quality","type":"string"}},"title":"MeshParams","type":"object"},"PhysicsParams":{"additionalProperties":false,"properties":{"body":{"default":"rigid","description":"Physical behavior of the bodies: rigid preserves shape; deformable uses soft-body simulation.","enum":["rigid","deformable"],"title":"Body","type":"string"},"collision":{"default":"auto","enum":["auto","convex_hull","convex_decomposition","coacd","bounding_box","sdf"],"title":"Collision","type":"string"},"simulator":{"default":"isaac_sim_physx","description":"Target runtime. Native formats and physics engine are derived internally; agnostic delivers FBX and GLB plus physics sidecar.","enum":["isaac_sim_physx","isaac_sim_newton","mujoco","sapien","genesis","agnostic"],"title":"Simulator","type":"string"}},"title":"PhysicsParams","type":"object"},"TextureParams":{"additionalProperties":false,"properties":{"resolution":{"default":4096,"enum":[1024,2048,4096,8192],"title":"Resolution","type":"integer"}},"title":"TextureParams","type":"object"},"VariationParams":{"additionalProperties":false,"description":"How an image-method set's variants are generated. Ignored otherwise.\n\nA deliberate subset of the generator's options: what a customer steers,\nnot how many images it makes. Count is the set's `count`, one image per\nmember, so it is not reachable from here. The generator's custom prompt\nis not steered here either — it comes from the set's `seed.text` — and\nthe subject name comes from the set's `name`.","properties":{"variation_type":{"default":"general","enum":["texture","general"],"title":"Variation Type","type":"string"},"wildness":{"default":"moderate","enum":["subtle","moderate","bold","wild"],"title":"Wildness","type":"string"}},"title":"VariationParams","type":"object"}}}}
```

## The CreateProceduralVariationSetRequest object

```json
{"openapi":"3.1.0","info":{"title":"projectsim API","version":"1.0.0-beta"},"components":{"schemas":{"CreateProceduralVariationSetRequest":{"additionalProperties":false,"properties":{"count":{"description":"How many variants, 10–500.","maximum":500,"minimum":10,"title":"Count","type":"integer"},"name":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"title":"Name"},"params":{"anyOf":[{"$ref":"#/components/schemas/ProceduralParams"},{"type":"null"}]},"seed":{"$ref":"#/components/schemas/ProceduralSeed"}},"required":["count","seed"],"title":"CreateProceduralVariationSetRequest","type":"object"},"ProceduralParams":{"additionalProperties":false,"properties":{"mesh":{"$ref":"#/components/schemas/MeshParams","default":{"quality":"standard"}},"physics":{"$ref":"#/components/schemas/ProceduralPhysicsParams","default":{"articulated":true,"body":"rigid","collision":"auto","simulator":"isaac_sim_physx"}},"texture":{"$ref":"#/components/schemas/TextureParams","default":{"resolution":4096}},"variation":{"$ref":"#/components/schemas/VariationParams","default":{"variation_type":"general","wildness":"moderate"}}},"title":"ProceduralParams","type":"object"},"MeshParams":{"additionalProperties":false,"properties":{"quality":{"default":"standard","enum":["standard","low","ultra_low"],"title":"Quality","type":"string"}},"title":"MeshParams","type":"object"},"ProceduralPhysicsParams":{"additionalProperties":false,"properties":{"articulated":{"default":true,"description":"Generate independently moving parts connected by joints. False requests a jointless rigid asset.","title":"Articulated","type":"boolean"},"body":{"const":"rigid","default":"rigid","description":"Procedural generation currently authors rigid bodies.","title":"Body","type":"string"},"collision":{"default":"auto","enum":["auto","convex_hull","convex_decomposition","coacd","bounding_box","sdf"],"title":"Collision","type":"string"},"simulator":{"default":"isaac_sim_physx","description":"Target runtime. Native formats and physics engine are derived internally; agnostic delivers FBX and GLB plus physics sidecar.","enum":["isaac_sim_physx","isaac_sim_newton","mujoco","sapien","genesis","agnostic"],"title":"Simulator","type":"string"}},"title":"ProceduralPhysicsParams","type":"object"},"TextureParams":{"additionalProperties":false,"properties":{"resolution":{"default":4096,"enum":[1024,2048,4096,8192],"title":"Resolution","type":"integer"}},"title":"TextureParams","type":"object"},"VariationParams":{"additionalProperties":false,"description":"How an image-method set's variants are generated. Ignored otherwise.\n\nA deliberate subset of the generator's options: what a customer steers,\nnot how many images it makes. Count is the set's `count`, one image per\nmember, so it is not reachable from here. The generator's custom prompt\nis not steered here either — it comes from the set's `seed.text` — and\nthe subject name comes from the set's `name`.","properties":{"variation_type":{"default":"general","enum":["texture","general"],"title":"Variation Type","type":"string"},"wildness":{"default":"moderate","enum":["subtle","moderate","bold","wild"],"title":"Wildness","type":"string"}},"title":"VariationParams","type":"object"},"ProceduralSeed":{"additionalProperties":false,"properties":{"images":{"description":"A reference photo for the class generator.","items":{"$ref":"#/components/schemas/ImageInput"},"maxItems":1,"title":"Images","type":"array"},"text":{"description":"A brief for the class: what the object is, its parts and how they move, materials, rough size. Required and must contain non-whitespace text; optionally add a reference image.","maxLength":2000,"minLength":1,"pattern":"\\S","title":"Text","type":"string"}},"required":["text"],"title":"ProceduralSeed","type":"object"},"ImageInput":{"additionalProperties":false,"properties":{"data":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Data"},"url":{"anyOf":[{"format":"uri","maxLength":2083,"minLength":1,"type":"string"},{"type":"null"}],"title":"Url"}},"title":"ImageInput","type":"object"}}}}
```

## The CreateVariationSetResponse object

```json
{"openapi":"3.1.0","info":{"title":"projectsim API","version":"1.0.0-beta"},"components":{"schemas":{"CreateVariationSetResponse":{"properties":{"count":{"title":"Count","type":"integer"},"id":{"title":"Id","type":"string"},"job_id":{"title":"Job Id","type":"string"},"method":{"title":"Method","type":"string"},"status":{"title":"Status","type":"string"}},"required":["id","job_id","status","method","count"],"title":"CreateVariationSetResponse","type":"object"}}}}
```

## The CreateWebhookRequest object

```json
{"openapi":"3.1.0","info":{"title":"projectsim API","version":"1.0.0-beta"},"components":{"schemas":{"CreateWebhookRequest":{"additionalProperties":false,"properties":{"events":{"items":{"type":"string"},"maxItems":32,"minItems":1,"title":"Events","type":"array"},"url":{"maxLength":2000,"title":"Url","type":"string"}},"required":["url","events"],"title":"CreateWebhookRequest","type":"object"}}}}
```

## The CreatedWebhookResponse object

```json
{"openapi":"3.1.0","info":{"title":"projectsim API","version":"1.0.0-beta"},"components":{"schemas":{"CreatedWebhookResponse":{"properties":{"created_at":{"format":"date-time","title":"Created At","type":"string"},"events":{"items":{"type":"string"},"title":"Events","type":"array"},"id":{"title":"Id","type":"string"},"secret":{"description":"The HMAC-SHA256 signing secret, returned only here and never again. Store it now.","title":"Secret","type":"string"},"url":{"title":"Url","type":"string"}},"required":["id","url","events","created_at","secret"],"title":"CreatedWebhookResponse","type":"object"}}}}
```

## The DeliveryCounts object

```json
{"openapi":"3.1.0","info":{"title":"projectsim API","version":"1.0.0-beta"},"components":{"schemas":{"DeliveryCounts":{"properties":{"dead":{"default":0,"title":"Dead","type":"integer"},"delivered":{"default":0,"title":"Delivered","type":"integer"},"pending":{"default":0,"title":"Pending","type":"integer"}},"title":"DeliveryCounts","type":"object"}}}}
```

## The DeliveryListResponse object

```json
{"openapi":"3.1.0","info":{"title":"projectsim API","version":"1.0.0-beta"},"components":{"schemas":{"DeliveryListResponse":{"properties":{"counts":{"$ref":"#/components/schemas/DeliveryCounts","description":"Every delivery for this webhook by status, whatever `status` filter the page was fetched with."},"deliveries":{"items":{"$ref":"#/components/schemas/DeliveryResponse"},"title":"Deliveries","type":"array"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Null on the last page.","title":"Next Cursor"}},"required":["deliveries"],"title":"DeliveryListResponse","type":"object"},"DeliveryCounts":{"properties":{"dead":{"default":0,"title":"Dead","type":"integer"},"delivered":{"default":0,"title":"Delivered","type":"integer"},"pending":{"default":0,"title":"Pending","type":"integer"}},"title":"DeliveryCounts","type":"object"},"DeliveryResponse":{"properties":{"attempts":{"title":"Attempts","type":"integer"},"created_at":{"format":"date-time","title":"Created At","type":"string"},"delivered_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"title":"Delivered At"},"event":{"title":"Event","type":"string"},"id":{"title":"Id","type":"string"},"last_response_code":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Response Code"},"next_retry_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"description":"Null once the delivery is terminal.","title":"Next Retry At"},"resource":{"anyOf":[{"$ref":"#/components/schemas/ResourceRef"},{"type":"null"}],"description":"Null for a synthetic test delivery."},"status":{"description":"pending (in flight or awaiting retry) · delivered (got a 2xx) · dead (retries exhausted)","title":"Status","type":"string"}},"required":["id","event","status","attempts","created_at"],"title":"DeliveryResponse","type":"object"},"ResourceRef":{"description":"What a job or delivery is about.","properties":{"id":{"title":"Id","type":"string"},"type":{"description":"asset · variation_set · scene · batch","title":"Type","type":"string"}},"required":["type","id"],"title":"ResourceRef","type":"object"}}}}
```

## The DeliveryResponse object

```json
{"openapi":"3.1.0","info":{"title":"projectsim API","version":"1.0.0-beta"},"components":{"schemas":{"DeliveryResponse":{"properties":{"attempts":{"title":"Attempts","type":"integer"},"created_at":{"format":"date-time","title":"Created At","type":"string"},"delivered_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"title":"Delivered At"},"event":{"title":"Event","type":"string"},"id":{"title":"Id","type":"string"},"last_response_code":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Response Code"},"next_retry_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"description":"Null once the delivery is terminal.","title":"Next Retry At"},"resource":{"anyOf":[{"$ref":"#/components/schemas/ResourceRef"},{"type":"null"}],"description":"Null for a synthetic test delivery."},"status":{"description":"pending (in flight or awaiting retry) · delivered (got a 2xx) · dead (retries exhausted)","title":"Status","type":"string"}},"required":["id","event","status","attempts","created_at"],"title":"DeliveryResponse","type":"object"},"ResourceRef":{"description":"What a job or delivery is about.","properties":{"id":{"title":"Id","type":"string"},"type":{"description":"asset · variation_set · scene · batch","title":"Type","type":"string"}},"required":["type","id"],"title":"ResourceRef","type":"object"}}}}
```

## The HighFidelitySeed object

```json
{"openapi":"3.1.0","info":{"title":"projectsim API","version":"1.0.0-beta"},"components":{"schemas":{"HighFidelitySeed":{"additionalProperties":false,"properties":{"images":{"description":"One subject image. Provide an image, text, or both.","items":{"$ref":"#/components/schemas/ImageInput"},"maxItems":1,"title":"Images","type":"array"},"text":{"anyOf":[{"maxLength":2000,"minLength":1,"pattern":"\\S","type":"string"},{"type":"null"}],"description":"Subject description. Provide an image, text, or both.","title":"Text"},"variation_references":{"description":"Up to eight optional reference images to guide variations in style, palette or detail; these do not replace the subject.","items":{"$ref":"#/components/schemas/ImageInput"},"maxItems":8,"title":"Variation References","type":"array"}},"title":"HighFidelitySeed","type":"object"},"ImageInput":{"additionalProperties":false,"properties":{"data":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Data"},"url":{"anyOf":[{"format":"uri","maxLength":2083,"minLength":1,"type":"string"},{"type":"null"}],"title":"Url"}},"title":"ImageInput","type":"object"}}}}
```

## The ImageInput object

```json
{"openapi":"3.1.0","info":{"title":"projectsim API","version":"1.0.0-beta"},"components":{"schemas":{"ImageInput":{"additionalProperties":false,"properties":{"data":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Data"},"url":{"anyOf":[{"format":"uri","maxLength":2083,"minLength":1,"type":"string"},{"type":"null"}],"title":"Url"}},"title":"ImageInput","type":"object"}}}}
```

## The JobListResponse object

```json
{"openapi":"3.1.0","info":{"title":"projectsim API","version":"1.0.0-beta"},"components":{"schemas":{"JobListResponse":{"properties":{"jobs":{"items":{"$ref":"#/components/schemas/JobResponse"},"title":"Jobs","type":"array"},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Null on the last page.","title":"Next Cursor"}},"required":["jobs"],"title":"JobListResponse","type":"object"},"JobResponse":{"description":"One execution against a resource — the public status surface.","properties":{"created_at":{"format":"date-time","title":"Created At","type":"string"},"current_stage":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"While running: variation · reconstruction · scale · physics","title":"Current Stage"},"error":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"description":"An RFC 7807 problem object when the job failed.","title":"Error"},"id":{"title":"Id","type":"string"},"progress":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Progress"},"resource":{"$ref":"#/components/schemas/ResourceRef"},"status":{"description":"queued · running · complete · failed · canceled · partial (variation sets and batches)","title":"Status","type":"string"},"updated_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"title":"Updated At"}},"required":["id","resource","status","created_at"],"title":"JobResponse","type":"object"},"ResourceRef":{"description":"What a job or delivery is about.","properties":{"id":{"title":"Id","type":"string"},"type":{"description":"asset · variation_set · scene · batch","title":"Type","type":"string"}},"required":["type","id"],"title":"ResourceRef","type":"object"}}}}
```

## The JobResponse object

```json
{"openapi":"3.1.0","info":{"title":"projectsim API","version":"1.0.0-beta"},"components":{"schemas":{"JobResponse":{"description":"One execution against a resource — the public status surface.","properties":{"created_at":{"format":"date-time","title":"Created At","type":"string"},"current_stage":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"While running: variation · reconstruction · scale · physics","title":"Current Stage"},"error":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"description":"An RFC 7807 problem object when the job failed.","title":"Error"},"id":{"title":"Id","type":"string"},"progress":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Progress"},"resource":{"$ref":"#/components/schemas/ResourceRef"},"status":{"description":"queued · running · complete · failed · canceled · partial (variation sets and batches)","title":"Status","type":"string"},"updated_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"title":"Updated At"}},"required":["id","resource","status","created_at"],"title":"JobResponse","type":"object"},"ResourceRef":{"description":"What a job or delivery is about.","properties":{"id":{"title":"Id","type":"string"},"type":{"description":"asset · variation_set · scene · batch","title":"Type","type":"string"}},"required":["type","id"],"title":"ResourceRef","type":"object"}}}}
```

## The ManifestRef object

```json
{"openapi":"3.1.0","info":{"title":"projectsim API","version":"1.0.0-beta"},"components":{"schemas":{"ManifestRef":{"properties":{"expires_at":{"format":"date-time","title":"Expires At","type":"string"},"url":{"description":"Presigned GET, valid for 24 hours.","title":"Url","type":"string"}},"required":["url","expires_at"],"title":"ManifestRef","type":"object"}}}}
```

## The MeasuredAssetInputs object

```json
{"openapi":"3.1.0","info":{"title":"projectsim API","version":"1.0.0-beta"},"components":{"schemas":{"MeasuredAssetInputs":{"additionalProperties":false,"description":"Exactly one subject image and one capture video.","properties":{"capture":{"description":"Exactly one video clip (MP4 or MOV) of the object next to a printed ChArUco board, by HTTPS URL or inline as base64.","items":{"$ref":"#/components/schemas/CaptureInput"},"maxItems":1,"minItems":1,"title":"Capture","type":"array"},"images":{"items":{"$ref":"#/components/schemas/ImageInput"},"maxItems":1,"minItems":1,"title":"Images","type":"array"}},"required":["images","capture"],"title":"MeasuredAssetInputs","type":"object"},"CaptureInput":{"additionalProperties":false,"description":"One video clip of the object beside a ChArUco board.\n\nThe measurement reference for `POST /v1/assets/measured`: the object\nstands on the floor next to the printed board and is filmed in one clip\nwalking around it. The clip comes either by HTTPS URL or inline as\nbase64, exactly one of the two.","properties":{"data":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The capture video (MP4 or MOV) as base64, up to 500 MB decoded. Stored as part of the create call, so a payload that is not a supported clip is a `422` here rather than a failed job. Inflates the request by a third: prefer `url` for a large clip.","title":"Data"},"url":{"anyOf":[{"format":"uri","maxLength":2083,"minLength":1,"type":"string"},{"type":"null"}],"description":"HTTPS URL of the capture video (MP4 or MOV).","title":"Url"}},"title":"CaptureInput","type":"object"},"ImageInput":{"additionalProperties":false,"properties":{"data":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Data"},"url":{"anyOf":[{"format":"uri","maxLength":2083,"minLength":1,"type":"string"},{"type":"null"}],"title":"Url"}},"title":"ImageInput","type":"object"}}}}
```

## The MemberCounts object

```json
{"openapi":"3.1.0","info":{"title":"projectsim API","version":"1.0.0-beta"},"components":{"schemas":{"MemberCounts":{"description":"Derived from the member jobs on every read, so it never drifts.","properties":{"canceled":{"default":0,"title":"Canceled","type":"integer"},"complete":{"title":"Complete","type":"integer"},"failed":{"title":"Failed","type":"integer"},"queued":{"title":"Queued","type":"integer"},"requested":{"title":"Requested","type":"integer"},"running":{"title":"Running","type":"integer"}},"required":["requested","queued","running","complete","failed"],"title":"MemberCounts","type":"object"}}}}
```

## The MemberEntry object

```json
{"openapi":"3.1.0","info":{"title":"projectsim API","version":"1.0.0-beta"},"components":{"schemas":{"MemberEntry":{"properties":{"asset_id":{"title":"Asset Id","type":"string"},"files":{"items":{"$ref":"#/components/schemas/MemberFileEntry"},"title":"Files","type":"array"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"variant_index":{"description":"Stable label, 1..count. Never renumbered.","title":"Variant Index","type":"integer"}},"required":["variant_index","asset_id","files"],"title":"MemberEntry","type":"object"},"MemberFileEntry":{"description":"A member's deliverable with a fresh download URL.","properties":{"expires_at":{"format":"date-time","title":"Expires At","type":"string"},"kind":{"title":"Kind","type":"string"},"path":{"description":"Where the file sits in the member's deliverable folder, relative to it. A USD references its textures by these paths, so lay the files out this way to open it textured.","title":"Path","type":"string"},"url":{"description":"Presigned GET, valid for 24 hours.","title":"Url","type":"string"}},"required":["kind","path","url","expires_at"],"title":"MemberFileEntry","type":"object"}}}}
```

## The MemberFileEntry object

```json
{"openapi":"3.1.0","info":{"title":"projectsim API","version":"1.0.0-beta"},"components":{"schemas":{"MemberFileEntry":{"description":"A member's deliverable with a fresh download URL.","properties":{"expires_at":{"format":"date-time","title":"Expires At","type":"string"},"kind":{"title":"Kind","type":"string"},"path":{"description":"Where the file sits in the member's deliverable folder, relative to it. A USD references its textures by these paths, so lay the files out this way to open it textured.","title":"Path","type":"string"},"url":{"description":"Presigned GET, valid for 24 hours.","title":"Url","type":"string"}},"required":["kind","path","url","expires_at"],"title":"MemberFileEntry","type":"object"}}}}
```

## The MemberListResponse object

```json
{"openapi":"3.1.0","info":{"title":"projectsim API","version":"1.0.0-beta"},"components":{"schemas":{"MemberListResponse":{"properties":{"members":{"items":{"$ref":"#/components/schemas/MemberEntry"},"title":"Members","type":"array"},"next_cursor":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"The last variant_index of this page; null when done.","title":"Next Cursor"}},"required":["members"],"title":"MemberListResponse","type":"object"},"MemberEntry":{"properties":{"asset_id":{"title":"Asset Id","type":"string"},"files":{"items":{"$ref":"#/components/schemas/MemberFileEntry"},"title":"Files","type":"array"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Status"},"variant_index":{"description":"Stable label, 1..count. Never renumbered.","title":"Variant Index","type":"integer"}},"required":["variant_index","asset_id","files"],"title":"MemberEntry","type":"object"},"MemberFileEntry":{"description":"A member's deliverable with a fresh download URL.","properties":{"expires_at":{"format":"date-time","title":"Expires At","type":"string"},"kind":{"title":"Kind","type":"string"},"path":{"description":"Where the file sits in the member's deliverable folder, relative to it. A USD references its textures by these paths, so lay the files out this way to open it textured.","title":"Path","type":"string"},"url":{"description":"Presigned GET, valid for 24 hours.","title":"Url","type":"string"}},"required":["kind","path","url","expires_at"],"title":"MemberFileEntry","type":"object"}}}}
```

## The MeshParams object

```json
{"openapi":"3.1.0","info":{"title":"projectsim API","version":"1.0.0-beta"},"components":{"schemas":{"MeshParams":{"additionalProperties":false,"properties":{"quality":{"default":"standard","enum":["standard","low","ultra_low"],"title":"Quality","type":"string"}},"title":"MeshParams","type":"object"}}}}
```

## The Params object

```json
{"openapi":"3.1.0","info":{"title":"projectsim API","version":"1.0.0-beta"},"components":{"schemas":{"Params":{"additionalProperties":false,"properties":{"mesh":{"$ref":"#/components/schemas/MeshParams","default":{"quality":"standard"}},"physics":{"$ref":"#/components/schemas/PhysicsParams","default":{"body":"rigid","collision":"auto","simulator":"isaac_sim_physx"}},"texture":{"$ref":"#/components/schemas/TextureParams","default":{"resolution":4096}},"variation":{"$ref":"#/components/schemas/VariationParams","default":{"variation_type":"general","wildness":"moderate"}}},"title":"Params","type":"object"},"MeshParams":{"additionalProperties":false,"properties":{"quality":{"default":"standard","enum":["standard","low","ultra_low"],"title":"Quality","type":"string"}},"title":"MeshParams","type":"object"},"PhysicsParams":{"additionalProperties":false,"properties":{"body":{"default":"rigid","description":"Physical behavior of the bodies: rigid preserves shape; deformable uses soft-body simulation.","enum":["rigid","deformable"],"title":"Body","type":"string"},"collision":{"default":"auto","enum":["auto","convex_hull","convex_decomposition","coacd","bounding_box","sdf"],"title":"Collision","type":"string"},"simulator":{"default":"isaac_sim_physx","description":"Target runtime. Native formats and physics engine are derived internally; agnostic delivers FBX and GLB plus physics sidecar.","enum":["isaac_sim_physx","isaac_sim_newton","mujoco","sapien","genesis","agnostic"],"title":"Simulator","type":"string"}},"title":"PhysicsParams","type":"object"},"TextureParams":{"additionalProperties":false,"properties":{"resolution":{"default":4096,"enum":[1024,2048,4096,8192],"title":"Resolution","type":"integer"}},"title":"TextureParams","type":"object"},"VariationParams":{"additionalProperties":false,"description":"How an image-method set's variants are generated. Ignored otherwise.\n\nA deliberate subset of the generator's options: what a customer steers,\nnot how many images it makes. Count is the set's `count`, one image per\nmember, so it is not reachable from here. The generator's custom prompt\nis not steered here either — it comes from the set's `seed.text` — and\nthe subject name comes from the set's `name`.","properties":{"variation_type":{"default":"general","enum":["texture","general"],"title":"Variation Type","type":"string"},"wildness":{"default":"moderate","enum":["subtle","moderate","bold","wild"],"title":"Wildness","type":"string"}},"title":"VariationParams","type":"object"}}}}
```

## The PhysicsParams object

```json
{"openapi":"3.1.0","info":{"title":"projectsim API","version":"1.0.0-beta"},"components":{"schemas":{"PhysicsParams":{"additionalProperties":false,"properties":{"body":{"default":"rigid","description":"Physical behavior of the bodies: rigid preserves shape; deformable uses soft-body simulation.","enum":["rigid","deformable"],"title":"Body","type":"string"},"collision":{"default":"auto","enum":["auto","convex_hull","convex_decomposition","coacd","bounding_box","sdf"],"title":"Collision","type":"string"},"simulator":{"default":"isaac_sim_physx","description":"Target runtime. Native formats and physics engine are derived internally; agnostic delivers FBX and GLB plus physics sidecar.","enum":["isaac_sim_physx","isaac_sim_newton","mujoco","sapien","genesis","agnostic"],"title":"Simulator","type":"string"}},"title":"PhysicsParams","type":"object"}}}}
```

## The Problem object

```json
{"openapi":"3.1.0","info":{"title":"projectsim API","version":"1.0.0-beta"},"components":{"schemas":{"Problem":{"description":"An RFC 7807 error, the shape every failure uses.\n\nDeclared explicitly because the handlers replace FastAPI's default\nvalidation response; without this the spec would advertise\n`HTTPValidationError`, whose `detail` is a list rather than a string,\nand every generated client would crash parsing a 422.","properties":{"detail":{"description":"Human-readable explanation of this occurrence.","title":"Detail","type":"string"},"errors":{"anyOf":[{"items":{"$ref":"#/components/schemas/ValidationDetail"},"type":"array"},{"type":"null"}],"description":"Present on a 422; one entry per failing field.","title":"Errors"},"instance":{"description":"Identifies this occurrence; quote it to support.","title":"Instance","type":"string"},"path":{"title":"Path","type":"string"},"request_id":{"description":"Also returned in the X-Request-Id response header.","title":"Request Id","type":"string"},"status":{"title":"Status","type":"integer"},"title":{"title":"Title","type":"string"},"type":{"description":"Stable URI identifying the error class.","title":"Type","type":"string"}},"required":["type","title","status","detail","instance","path","request_id"],"title":"Problem","type":"object"},"ValidationDetail":{"description":"One field-level validation failure.","properties":{"loc":{"description":"Dotted path to the offending field.","title":"Loc","type":"string"},"msg":{"title":"Msg","type":"string"},"type":{"title":"Type","type":"string"}},"required":["loc","msg","type"],"title":"ValidationDetail","type":"object"}}}}
```

## The ProceduralParams object

```json
{"openapi":"3.1.0","info":{"title":"projectsim API","version":"1.0.0-beta"},"components":{"schemas":{"ProceduralParams":{"additionalProperties":false,"properties":{"mesh":{"$ref":"#/components/schemas/MeshParams","default":{"quality":"standard"}},"physics":{"$ref":"#/components/schemas/ProceduralPhysicsParams","default":{"articulated":true,"body":"rigid","collision":"auto","simulator":"isaac_sim_physx"}},"texture":{"$ref":"#/components/schemas/TextureParams","default":{"resolution":4096}},"variation":{"$ref":"#/components/schemas/VariationParams","default":{"variation_type":"general","wildness":"moderate"}}},"title":"ProceduralParams","type":"object"},"MeshParams":{"additionalProperties":false,"properties":{"quality":{"default":"standard","enum":["standard","low","ultra_low"],"title":"Quality","type":"string"}},"title":"MeshParams","type":"object"},"ProceduralPhysicsParams":{"additionalProperties":false,"properties":{"articulated":{"default":true,"description":"Generate independently moving parts connected by joints. False requests a jointless rigid asset.","title":"Articulated","type":"boolean"},"body":{"const":"rigid","default":"rigid","description":"Procedural generation currently authors rigid bodies.","title":"Body","type":"string"},"collision":{"default":"auto","enum":["auto","convex_hull","convex_decomposition","coacd","bounding_box","sdf"],"title":"Collision","type":"string"},"simulator":{"default":"isaac_sim_physx","description":"Target runtime. Native formats and physics engine are derived internally; agnostic delivers FBX and GLB plus physics sidecar.","enum":["isaac_sim_physx","isaac_sim_newton","mujoco","sapien","genesis","agnostic"],"title":"Simulator","type":"string"}},"title":"ProceduralPhysicsParams","type":"object"},"TextureParams":{"additionalProperties":false,"properties":{"resolution":{"default":4096,"enum":[1024,2048,4096,8192],"title":"Resolution","type":"integer"}},"title":"TextureParams","type":"object"},"VariationParams":{"additionalProperties":false,"description":"How an image-method set's variants are generated. Ignored otherwise.\n\nA deliberate subset of the generator's options: what a customer steers,\nnot how many images it makes. Count is the set's `count`, one image per\nmember, so it is not reachable from here. The generator's custom prompt\nis not steered here either — it comes from the set's `seed.text` — and\nthe subject name comes from the set's `name`.","properties":{"variation_type":{"default":"general","enum":["texture","general"],"title":"Variation Type","type":"string"},"wildness":{"default":"moderate","enum":["subtle","moderate","bold","wild"],"title":"Wildness","type":"string"}},"title":"VariationParams","type":"object"}}}}
```

## The ProceduralPhysicsParams object

```json
{"openapi":"3.1.0","info":{"title":"projectsim API","version":"1.0.0-beta"},"components":{"schemas":{"ProceduralPhysicsParams":{"additionalProperties":false,"properties":{"articulated":{"default":true,"description":"Generate independently moving parts connected by joints. False requests a jointless rigid asset.","title":"Articulated","type":"boolean"},"body":{"const":"rigid","default":"rigid","description":"Procedural generation currently authors rigid bodies.","title":"Body","type":"string"},"collision":{"default":"auto","enum":["auto","convex_hull","convex_decomposition","coacd","bounding_box","sdf"],"title":"Collision","type":"string"},"simulator":{"default":"isaac_sim_physx","description":"Target runtime. Native formats and physics engine are derived internally; agnostic delivers FBX and GLB plus physics sidecar.","enum":["isaac_sim_physx","isaac_sim_newton","mujoco","sapien","genesis","agnostic"],"title":"Simulator","type":"string"}},"title":"ProceduralPhysicsParams","type":"object"}}}}
```

## The ProceduralSeed object

```json
{"openapi":"3.1.0","info":{"title":"projectsim API","version":"1.0.0-beta"},"components":{"schemas":{"ProceduralSeed":{"additionalProperties":false,"properties":{"images":{"description":"A reference photo for the class generator.","items":{"$ref":"#/components/schemas/ImageInput"},"maxItems":1,"title":"Images","type":"array"},"text":{"description":"A brief for the class: what the object is, its parts and how they move, materials, rough size. Required and must contain non-whitespace text; optionally add a reference image.","maxLength":2000,"minLength":1,"pattern":"\\S","title":"Text","type":"string"}},"required":["text"],"title":"ProceduralSeed","type":"object"},"ImageInput":{"additionalProperties":false,"properties":{"data":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Data"},"url":{"anyOf":[{"format":"uri","maxLength":2083,"minLength":1,"type":"string"},{"type":"null"}],"title":"Url"}},"title":"ImageInput","type":"object"}}}}
```

## The ResourceRef object

```json
{"openapi":"3.1.0","info":{"title":"projectsim API","version":"1.0.0-beta"},"components":{"schemas":{"ResourceRef":{"description":"What a job or delivery is about.","properties":{"id":{"title":"Id","type":"string"},"type":{"description":"asset · variation_set · scene · batch","title":"Type","type":"string"}},"required":["type","id"],"title":"ResourceRef","type":"object"}}}}
```

## The TestWebhookResponse object

```json
{"openapi":"3.1.0","info":{"title":"projectsim API","version":"1.0.0-beta"},"components":{"schemas":{"TestWebhookResponse":{"properties":{"delivery_id":{"title":"Delivery Id","type":"string"},"status":{"title":"Status","type":"string"}},"required":["delivery_id","status"],"title":"TestWebhookResponse","type":"object"}}}}
```

## The TextureParams object

```json
{"openapi":"3.1.0","info":{"title":"projectsim API","version":"1.0.0-beta"},"components":{"schemas":{"TextureParams":{"additionalProperties":false,"properties":{"resolution":{"default":4096,"enum":[1024,2048,4096,8192],"title":"Resolution","type":"integer"}},"title":"TextureParams","type":"object"}}}}
```

## The ValidationDetail object

```json
{"openapi":"3.1.0","info":{"title":"projectsim API","version":"1.0.0-beta"},"components":{"schemas":{"ValidationDetail":{"description":"One field-level validation failure.","properties":{"loc":{"description":"Dotted path to the offending field.","title":"Loc","type":"string"},"msg":{"title":"Msg","type":"string"},"type":{"title":"Type","type":"string"}},"required":["loc","msg","type"],"title":"ValidationDetail","type":"object"}}}}
```

## The VariationParams object

```json
{"openapi":"3.1.0","info":{"title":"projectsim API","version":"1.0.0-beta"},"components":{"schemas":{"VariationParams":{"additionalProperties":false,"description":"How an image-method set's variants are generated. Ignored otherwise.\n\nA deliberate subset of the generator's options: what a customer steers,\nnot how many images it makes. Count is the set's `count`, one image per\nmember, so it is not reachable from here. The generator's custom prompt\nis not steered here either — it comes from the set's `seed.text` — and\nthe subject name comes from the set's `name`.","properties":{"variation_type":{"default":"general","enum":["texture","general"],"title":"Variation Type","type":"string"},"wildness":{"default":"moderate","enum":["subtle","moderate","bold","wild"],"title":"Wildness","type":"string"}},"title":"VariationParams","type":"object"}}}}
```

## The VariationSetDetail object

```json
{"openapi":"3.1.0","info":{"title":"projectsim API","version":"1.0.0-beta"},"components":{"schemas":{"VariationSetDetail":{"properties":{"bundle":{"$ref":"#/components/schemas/BundleState"},"count":{"title":"Count","type":"integer"},"counts":{"$ref":"#/components/schemas/MemberCounts"},"created_at":{"format":"date-time","title":"Created At","type":"string"},"id":{"title":"Id","type":"string"},"manifest":{"anyOf":[{"$ref":"#/components/schemas/ManifestRef"},{"type":"null"}],"description":"Null until the set is terminal."},"method":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Method"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"status":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"The set job's status. `partial` means some members failed.","title":"Status"}},"required":["id","count","created_at","counts","bundle"],"title":"VariationSetDetail","type":"object"},"BundleState":{"properties":{"expires_at":{"anyOf":[{"format":"date-time","type":"string"},{"type":"null"}],"title":"Expires At"},"state":{"description":"none · pending · ready","title":"State","type":"string"},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Set once ready; valid for 24 hours.","title":"Url"}},"required":["state"],"title":"BundleState","type":"object"},"MemberCounts":{"description":"Derived from the member jobs on every read, so it never drifts.","properties":{"canceled":{"default":0,"title":"Canceled","type":"integer"},"complete":{"title":"Complete","type":"integer"},"failed":{"title":"Failed","type":"integer"},"queued":{"title":"Queued","type":"integer"},"requested":{"title":"Requested","type":"integer"},"running":{"title":"Running","type":"integer"}},"required":["requested","queued","running","complete","failed"],"title":"MemberCounts","type":"object"},"ManifestRef":{"properties":{"expires_at":{"format":"date-time","title":"Expires At","type":"string"},"url":{"description":"Presigned GET, valid for 24 hours.","title":"Url","type":"string"}},"required":["url","expires_at"],"title":"ManifestRef","type":"object"}}}}
```

## The WebhookListResponse object

```json
{"openapi":"3.1.0","info":{"title":"projectsim API","version":"1.0.0-beta"},"components":{"schemas":{"WebhookListResponse":{"properties":{"webhooks":{"items":{"$ref":"#/components/schemas/WebhookResponse"},"title":"Webhooks","type":"array"}},"required":["webhooks"],"title":"WebhookListResponse","type":"object"},"WebhookResponse":{"properties":{"created_at":{"format":"date-time","title":"Created At","type":"string"},"events":{"items":{"type":"string"},"title":"Events","type":"array"},"id":{"title":"Id","type":"string"},"url":{"title":"Url","type":"string"}},"required":["id","url","events","created_at"],"title":"WebhookResponse","type":"object"}}}}
```

## The WebhookResponse object

```json
{"openapi":"3.1.0","info":{"title":"projectsim API","version":"1.0.0-beta"},"components":{"schemas":{"WebhookResponse":{"properties":{"created_at":{"format":"date-time","title":"Created At","type":"string"},"events":{"items":{"type":"string"},"title":"Events","type":"array"},"id":{"title":"Id","type":"string"},"url":{"title":"Url","type":"string"}},"required":["id","url","events","created_at"],"title":"WebhookResponse","type":"object"}}}}
```
