---
title: "POST /v1/trays/calibrate"
method: POST
path: "/v1/trays/calibrate"
tags: ["Servi"]
---

# POST /v1/trays/calibrate

`POST /v1/trays/calibrate`

## Request

- Base URL: `https://api.bearrobotics.ai`
- URL: `https://api.bearrobotics.ai/v1/trays/calibrate`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/bearrobotics/apis/bear-cloud-api/docs/v1/trays/calibrate/post.ts> (a function with typed inputs; its response is checked against the schema)

Calibrate the trays on the robot.

 Only applicable for tray-equipped robots (e.g., Servi, Servi Plus).

 Calibrates all trays if no tray names are provided.
 Returns an INVALID_ARGUMENT error and rejects the request if any tray name
 is invalid.
 Returns an empty response on success.

## Request body

- CalibrateTraysRequest: Request object for calibrating trays
  - `robotId` string, required
  - `selector` object
    - `trayNames` string[]

## Response `200`

OK

- CalibrateTraysResponse

## Other responses

- `400`: Bad Request, usually caused by malfored request body.
- `401`: Unauthorized credentials, ensure the JWT is correct and up to date.
- `500`: Internal Server Error
- `503`: Service is temporarily unavailable, which can usually be resolved by backoff retries.
- `504`: Server-side timeout, usually caused by the failure to send/receive commands/responses to the designated robot.

---

[API](https://skmtc.dev/bearrobotics/apis/bear-cloud-api.md) - [All operations](https://skmtc.dev/bearrobotics/apis/bear-cloud-api/llms.txt) - [OpenAPI document](https://skmtc.dev/bearrobotics/apis/bear-cloud-api/revisions/b90843b624b5?raw)
