API Reference

Base URL: https://api.cyberneticphysics.com

Authentication

All endpoints require a Bearer token or API key in the Authorization header.

Authorization: Bearer cp_live_...

Create API keys at /settings/keys in the dashboard. Keys support scoped permissions: sessions:read, sessions:write, isaac:read, isaac:write, isaac:execute, jobs:read, jobs:write.

Sessions (Isaac Sim)

GPU-accelerated Isaac Sim instances streamed via WebRTC. Configurable runtime and idle timeouts.

POST/v1/sessionsAUTH

Start a new Isaac Sim session. Provisions a GPU, launches the simulator, and returns a WebRTC viewer URL.

{
  "gpuSpec": "RTX_4090",        // optional, GPU preference
  "maxRuntimeMinutes": 240,     // optional, default 240
  "idleTimeoutMinutes": 30,     // optional, default 30
  "envId": "env_...",           // optional, load a saved environment
  "baseVersionId": "ver_...",   // optional, specific version
  "fromSessionId": "sess_..."   // optional, restart from a previous session
}
Response
{
  "sessionId": "sess_a1b2c3...",
  "status": "queued",
  "access": {
    "viewerUrl": "https://..."
  },
  "maxRuntimeMinutes": 240,
  "idleTimeoutMinutes": 30,
  "costEstimateUsd": 0,
  "costPerHour": 0.85
}
GET/v1/sessionsAUTH

List sessions for the active workspace.

Response
{
  "items": [{ "sessionId": "sess_...", "status": "running", ... }],
  "total": 5,
  "page": 1,
  "pageSize": 25,
  "hasMore": false
}
GET/v1/sessions/:idAUTH

Get session status, GPU info, viewer URL, and cost.

POST/v1/sessions/:id/stopAUTH

Stop a running session and release the GPU.

Environments

Save, version, and restore Isaac Sim scenes. Environments are collections of USD assets that persist across sessions.

POST/v1/envsAUTH

Create a named environment.

{
  "name": "warehouse-scene",
  "description": "Franka arm in a warehouse setting"
}
GET/v1/envsAUTH

List environments with their versions.

POST/v1/envs/:envId/versionsAUTH

Upload a new version of an environment (USD scene bundle). Returns a presigned PUT URL for the upload.

{
  "notes": "Added new shelf geometry",
  "rootStageRelpath": "scene.usd"
}
POST/v1/sessions/:sessionId/publishAUTH

Save the current session's working state as a new environment version.

{
  "notes": "Trained policy snapshot",
  "stopSessionAfterPublish": false
}

3D Reconstruction

Upload photos or video to create simulation-ready USDZ assets. Pipeline: COLMAP → 3DGRUT → USDZ.

POST/v1/uploads/presignAUTH

Get presigned S3 URLs to upload input files. Video uploads accept one file. Photo uploads require at least 3 images.

{
  "inputKind": "photos",    // "photos" or "video"
  "files": [
    { "name": "img_001.jpg", "size": 4200000, "contentType": "image/jpeg" },
    { "name": "img_002.jpg", "size": 3800000, "contentType": "image/jpeg" },
    ...
  ]
}
Response
{
  "uploadId": "upload_...",
  "presignedUrls": [
    { "url": "https://...", "fields": { ... }, "expiresAt": "..." }
  ]
}
POST/v1/jobsAUTH

Start a 3D reconstruction job on the uploaded files.

{
  "inputUri": "s3://...",              // from presign response
  "inputKind": "photos",
  "config": {
    "extractFps": 3,          // frames per second (video only)
    "maxResolution": 2000,    // max image dimension
    "exportUsdz": true        // generate USDZ output
  },
  "costGuardrails": {
    "maxRuntimeMinutes": 240,
    "maxHourlyPrice": 2,      // max GPU $/hr
    "gpuMinVram": 24           // min GPU VRAM in GB
  }
}
Response
{
  "jobId": "job_...",
  "status": "queued",
  "costEstimateUsd": 8.0,
  "artifacts": null
}
GET/v1/jobsAUTH

List reconstruction jobs for the active workspace.

GET/v1/jobs/:idAUTH

Get job status and output artifacts (USDZ, COLMAP sparse cloud, logs).

Response
{
  "jobId": "job_...",
  "status": "completed",
  "artifacts": {
    "usdz": "https://...",
    "colmapSparse": "https://...",
    "logs": "https://..."
  },
  "costActualUsd": 3.20
}
POST/v1/jobs/:id/cancelAUTH

Cancel a running reconstruction job.

Eureka RL Training

LLM-guided reward function discovery using IsaacLabEureka. Generates reward candidates, trains policies, and evolves the best reward across iterations.

POST/v1/eureka/runsAUTH

Start an Eureka reward discovery run.

{
  "taskId": "Isaac-Cartpole-v0",        // IsaacLab task name
  "rlLibrary": "rl_games",               // "rl_games" or "rsl_rl"
  "maxTrainingIterations": 5,             // Eureka iterations
  "numParallelRuns": 4,                   // parallel reward candidates per iteration
  "seed": 42,                             // optional
  "envId": "env_...",                     // optional, custom environment
  "notes": "Testing reach task rewards"   // optional
}
Response
{
  "jobId": "eureka_...",
  "status": "queued",
  "taskId": "Isaac-Cartpole-v0",
  "currentIteration": 0,
  "bestReward": null
}
GET/v1/eureka/runsAUTH

List Eureka runs for the active workspace.

GET/v1/eureka/runs/:idAUTH

Get run status, current iteration, best reward score, and LLM token usage.

POST/v1/eureka/runs/:id/cancelAUTH

Cancel a running Eureka job.

GET/v1/eureka/runs/:id/logsAUTH

Get training logs streamed from the GPU worker.

GET/v1/eureka/runs/:id/artifactsAUTH

Get the discovered reward function code and policy checkpoint URLs.

Billing & Budget

Credit-based billing. Purchase credits via Stripe, and GPU usage is metered per second. All amounts in USD.

GET/v1/meAUTH

Get current user profile, workspaces, and active workspace.

Response
{
  "user": {
    "userId": "...",
    "login": "...",
    "email": "...",
    "avatar": "..."
  },
  "workspaces": [
    { "id": "ws_...", "type": "personal", "slug": "natalia", "role": "owner" }
  ],
  "activeWorkspaceId": "ws_..."
}
GET/v1/budgetAUTH

Get current spending and budget limits.

Response
{
  "monthlyBudgetUsd": 100,
  "dailyLimitUsd": 20,
  "currentMonthSpend": 34.50,
  "currentDaySpend": 2.10
}
PUT/v1/budgetAUTH

Set monthly budget, daily limit, and alert threshold.

{
  "monthlyBudgetUsd": 100,
  "dailyLimitUsd": 20,
  "alertThresholdPercent": 80
}
GET/v1/budget/historyAUTH

Daily spending history.

?days=30

API Keys

Manage API keys for programmatic access and MCP integration.

POST/v1/api-keysAUTH

Create a new API key with scoped permissions.

{
  "name": "claude-code-mcp",
  "scopes": ["sessions:write", "isaac:execute"]
}
Response
{
  "id": "key_...",
  "name": "claude-code-mcp",
  "prefix": "cp_live_abc",
  "key": "cp_live_abc...full_key...",
  "scopes": ["sessions:write", "isaac:execute"]
}
GET/v1/api-keysAUTH

List API keys for the active workspace.

DELETE/v1/api-keys/:idAUTH

Revoke an API key.

© 2026 Cybernetic Physics