Skip to main content

Why Asset IDs

Asset IDs let customers reuse uploaded robot/scene/checkpoint files without embedding raw s3://... values in every payload.

API Flow

  1. POST /v0/inputs/presign-upload with register_asset=true
  2. Upload bytes to returned signed URL
  3. Use returned asset_id in job or training payload
Optional explicit registration path:
  • POST /v0/assets/register for an already uploaded URI
  • GET /v0/assets / GET /v0/assets/{asset_id} for discovery

Job Payload Fields

  • robot.urdf_asset_id
  • robot.usd_asset_id
  • scene.usd_asset_id

Training Payload Fields

  • checkpoint_init_asset_id
  • rollout_template.job_template can include the same robot/scene *_asset_id fields

SDK Flow

import hardsim as hs

client = hs.HardsimClient.from_env()

robot_asset_id = client.upload_input_asset("./assets/franka.urdf", asset_kind="robot")
scene_asset_id = client.upload_input_asset("./assets/scene.usd", asset_kind="scene")

job = client.submit_assets(
    robot_asset_id=robot_asset_id,
    scene_asset_id=scene_asset_id,
    robot_asset_type="urdf",
    num_envs=8,
    steps=600,
)

Compatibility

URI-based payloads still work. Asset IDs are an additive abstraction layer.