> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.benchling.com/in-vivo/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.benchling.com/in-vivo/_mcp/server.

# Cage created

POST 

Sent when a cage is created. The payload is the cage.

Reference: https://docs.benchling.com/in-vivo/webhooks/webhook-cage-created

## Request

### Headers

- `Signature` (string, required) — Lowercase hex-encoded HMAC-SHA256 of the raw request body, keyed with your webhook's signing secret. Compute it over the bytes exactly as received, before parsing, and compare in constant time.

### Payload

- `id` (string, required) — Unique identifier for a webhook event. A retried delivery carries the same identifier, so use it to discard duplicates.
- `event` (enum, required) — The event that occurred.
  - Allowed values: `cage.created`, `cage.updated`, `cage.deleted`
- `version` (enum, required) — A released version of the public API. Each OAuth client is registered against one version, which determines the response shape it receives.
  - Allowed values: `2022-12-14`
- `created_at` (datetime, required) — UTC timestamp with microsecond precision, always suffixed with `Z`, in the form `yyyy-MM-ddTHH:mm:ss.SSSSSSZ`.
- `payload` (CageV1, required) — A cage in your facility, including its generated catalog number, assigned study, and metadata.
- `client_id` (string, optional) — The OAuth client whose API request caused the event. Omitted when the event did not originate from an API request, and on events that never carry it.

## Types

### CageV1

A cage in your facility, including its generated catalog number, assigned study, and metadata.

- `id` (string, required) — Unique identifier for a cage.
- `name` (string, required) — The name of the cage.
- `catalog` (string, required, nullable) — The generated catalog number of the cage.
- `metadata` (map from string to any, required, nullable) — The metadata associated to the cage.
- `study` (StudyNestedV1, required, nullable) — The study the cage belongs to. Null when it is not assigned to a study.
- `created_at` (datetime, required) — UTC timestamp with microsecond precision, always suffixed with `Z`, in the form `yyyy-MM-ddTHH:mm:ss.SSSSSSZ`.
- `updated_at` (datetime, required) — UTC timestamp with microsecond precision, always suffixed with `Z`, in the form `yyyy-MM-ddTHH:mm:ss.SSSSSSZ`.

### StudyNestedV1

The study a record belongs to, as embedded in animals, dosages, measurements, observations and samples. Carries the same attributes as a study retrieved directly, except that the project is given as an identifier rather than an embedded object.

- `id` (string, required) — Unique identifier for a study.
- `project_id` (string, required, nullable) — The project of the study. Null when the study is not in a project.
- `name` (string, required) — The name of the study.
- `code` (string, required, nullable) — The code of the study.
- `study_code_id` (string, required, nullable) — The unique identifier of the study code template.
- `type` (enum, required) — Whether the study is run in-house or by an external partner. The `all` value accepted by some filters is not a valid study type and is never returned.
  - Allowed values: `internal`, `external`
- `status` (enum, required) — Review status of a study.
  - Allowed values: `awaiting_approval`, `in_progress`, `rejected`
- `description` (string, required, nullable) — The description of the study.
- `timezone` (string, required, nullable) — The timezone of the study, as an IANA timezone identifier.
- `metadata` (map from string to any, required, nullable) — The metadata associated to the study.
- `author` (StudyAuthorUserV1, required, nullable) — The author of the study.
- `owner` (StudyAuthorUserV1, required, nullable) — The owner of the study.
- `started_on` (date, required) — Calendar date with no time or offset component, in ISO-8601 form.
- `tracking_day_base` (integer, required, nullable) — The day number assigned to the study's start date, from which all subsequent tracking days are counted.
- `completed_at` (datetime, required, nullable) — The completed timestamp of the study.
- `canceled_at` (datetime, required, nullable) — The canceled timestamp of the study.
- `created_at` (datetime, required) — UTC timestamp with microsecond precision, always suffixed with `Z`, in the form `yyyy-MM-ddTHH:mm:ss.SSSSSSZ`.
- `updated_at` (datetime, required) — UTC timestamp with microsecond precision, always suffixed with `Z`, in the form `yyyy-MM-ddTHH:mm:ss.SSSSSSZ`.

### StudyAuthorUserV1

A user referenced as the author or owner of a study.

- `id` (string, required) — Unique identifier for a user.
- `name` (string, required) — The name of the user.
- `email` (string, required) — The email address of the user.
- `timezone` (string, required) — The timezone of the user. Defaults to `UTC` when the user has none set.