Skip to main content
POST
curl (Linux)

Authorizations

Authorization
string
header
required

The token from the agent's discovery file (%ProgramData%\Miru\device-api\device-api.json on Windows). Required over loopback TCP (127.0.0.1:6478 by default on Windows) and accepted by every route; not used over the Unix socket.

Body

application/json
component
string
required

Slug of the component the calibrated unit belongs to, such as kuka-arm. Miru resolves it to the component, creating the component the first time it is reported.

Example:

"kuka-arm"

content
Instance Content · object
required

The calibration's content, at most 1 MiB. The agent uploads it to Miru unchanged.

Example:
role
string

Slug of the role the calibrated unit fills on the device, such as left or front-left. Distinguishes several units of one component on a device. Validated like a slug. Miru resolves it to one of the component's roles, creating the role the first time it is reported.

Example:

"front-left"

serial_number
string

Serial number of the physical unit that was calibrated, not of the device, such as SN-1234. Free text, at most 255 characters.

Maximum string length: 255
Example:

"SN-1234"

aspect
string

Slug of the aspect of the unit that was calibrated, when it has more than one, e.g. intrinsics vs extrinsics, or pose vs joint-offsets. Validated like a slug. Miru resolves it to one of the component's aspects, creating the aspect the first time it is reported.

Example:

"pose"

Response

200 - application/json

The agent saved the calibration and will upload it to Miru.

report_id
string<uuid>
required

ID the agent gave this report. The agent sends it to Miru with the calibration, and Miru stores it as the calibration's report_id.

Example:

"0b6f3c2e-6a51-4e0f-9a43-2f1d7c9e8b10"

reported_at
string<date-time>
required

Timestamp of when the agent received the calibration. Miru stores it as the time the calibration was reported.

Example:

"2026-03-10T12:00:00Z"