Documentation menu

Webhooks

Events delivered to your endpoint as signed POST requests: run.completed, episode.failed, threshold.crossed, regression.detected, estop.triggered, run.requeued. Acknowledge with any 2xx.

EVENT run.completed

A run finished and its result is available

Sent when any run reaches `completed`. The payload carries the full result — n, rate, CI, clusters, both meters, cost.

ParameterInTypeDescription
id *bodystring
type *bodyrun.completed | episode.failed | threshold.crossed | regression.detected | estop.triggered | run.requeued
created *bodystring
data *bodyobject

Example payload

{
  "id": "evt_3301",
  "type": "run.completed",
  "created": "2026-08-29T11:37:48Z",
  "data": {
    "run_id": "run_8842",
    "result": {
      "n": 612,
      "success_rate": 0.874,
      "ci95": [
        0.846,
        0.898
      ],
      "cost_usd": 3812
    }
  }
}

EVENT episode.failed

An episode failed, with its cluster

Sent per failed episode when subscribed. `cluster` names the failure mode, e.g. `grasp_slip`.

ParameterInTypeDescription
id *bodystring
type *bodyrun.completed | episode.failed | threshold.crossed | regression.detected | estop.triggered | run.requeued
created *bodystring
data *bodyobject

Example payload

{
  "id": "evt_3312",
  "type": "episode.failed",
  "created": "2026-08-28T16:11:02Z",
  "data": {
    "run_id": "run_8842",
    "episode": 214,
    "cluster": "grasp_slip",
    "video_url": "https://artifacts.roborama.com/run_8842/ep_214/video.mp4"
  }
}

EVENT threshold.crossed

A threshold contract's target was met on soak tier

The contract escalates to the verification tier; `on_verified` fires after confirmation there.

ParameterInTypeDescription
id *bodystring
type *bodyrun.completed | episode.failed | threshold.crossed | regression.detected | estop.triggered | run.requeued
created *bodystring
data *bodyobject

Example payload

{
  "id": "evt_4407",
  "type": "threshold.crossed",
  "created": "2026-09-12T02:40:19Z",
  "data": {
    "contract_id": "run_9107",
    "checkpoint": "acme/skill-v4@ckpt-2210",
    "soak_result": {
      "n": 1188,
      "success_rate": 0.992,
      "ci95": [
        0.985,
        0.995
      ]
    },
    "escalating_to": "g1-edu-pro@fw2.3"
  }
}

EVENT regression.detected

A gate or matrix found a regression vs. a prior run

ParameterInTypeDescription
id *bodystring
type *bodyrun.completed | episode.failed | threshold.crossed | regression.detected | estop.triggered | run.requeued
created *bodystring
data *bodyobject

Example payload

{
  "id": "evt_5150",
  "type": "regression.detected",
  "created": "2026-09-14T08:03:55Z",
  "data": {
    "run_id": "run_8901",
    "vs": "run_8821",
    "robot": "g1-edu-pro@fw2.4",
    "environment": "kitchen-std@v1.2",
    "delta_pts": -10.5,
    "cluster": "grasp_slip"
  }
}

EVENT estop.triggered

An emergency stop fired in a cell running your policy

The run is stopped, the episode is marked `estop`, and the cell is inspected before resuming. Partial results are kept.

ParameterInTypeDescription
id *bodystring
type *bodyrun.completed | episode.failed | threshold.crossed | regression.detected | estop.triggered | run.requeued
created *bodystring
data *bodyobject

Example payload

{
  "id": "evt_6001",
  "type": "estop.triggered",
  "created": "2026-09-02T19:22:31Z",
  "data": {
    "run_id": "run_8905",
    "cell": "cell-g1-04",
    "episode": 88,
    "reason": "workspace_intrusion"
  }
}

EVENT run.requeued

Facility-fault episodes from your run were requeued at no charge

A facility fault (`cell_fault`) invalidated one or more episodes: they are excluded from n, never billed, and requeued on the same or an equivalent qualified cell. Statistics in the final result cover only valid episodes. You pay for physics, not for our hardware — see /docs/facility-incidents/.

ParameterInTypeDescription
id *bodystring
type *bodyrun.completed | episode.failed | threshold.crossed | regression.detected | estop.triggered | run.requeued
created *bodystring
data *bodyobject

Example payload

{
  "id": "evt_7104",
  "type": "run.requeued",
  "created": "2026-09-02T20:04:11Z",
  "data": {
    "run_id": "run_8907",
    "episodes_excluded": 1,
    "episodes_requeued": 1,
    "trigger": "actuator_fault_code",
    "billed_usd": 0
  }
}