> 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.

# Treatment updated

POST 

Sent when a treatment is updated. The payload is the treatment as updated.

Reference: https://docs.benchling.com/in-vivo/webhooks/webhook-study-treatment-updated

## 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: `study.treatment.created`, `study.treatment.updated`
- `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` (TreatmentV1, required) — A treatment assigned to a study group. You can retrieve it to see the method, compound name, label, prescribed quantities, linked study and study group, and any metadata assigned.
- `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

### TreatmentV1

A treatment assigned to a study group. You can retrieve it to see the method, compound name, label, prescribed quantities, linked study and study group, and any metadata assigned.

- `id` (string, required) — Unique identifier for a treatment.
- `type` (enum, required, nullable) — How the amount to administer is derived.
  - Allowed values: `concentration`, `concentration_mlkg`, `concentration_vgkg`, `custom`, `dose_volume`, `volume`
- `name` (string, required, nullable) — The name of the treatment.
- `label` (string, required) — The label of the treatment.
- `external_entity_id` (string, required, nullable) — The external identifier of the treatment.
- `dose` (DoseV1, required, nullable) — The dose concentration associated with the treatment.
- `dose_volume` (DoseVolumeV1, required, nullable) — The dose volume associated with the treatment.
- `stock` (StockV1, required, nullable) — The stock concentration associated with the treatment.
- `volume` (VolumeV1, required, nullable) — The volume of the treatment.
- `metadata` (map from string to any, required, nullable) — The metadata associated to the treatment.
- `study` (StudyNestedV1, required, nullable) — The study associated with the treatment.
- `study_group` (StudyGroupNestedV1, required, nullable) — The study group associated with the treatment.
- `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`.

### DoseV1

The amount of the compound administered, relative to the animal's body weight. Quantities are strings rather than numbers so that the precision recorded is preserved exactly. The `display_` pair carries the same quantity converted into the unit your team has chosen to work in, which may differ from the unit it was recorded in.

- `unit` (string, required, nullable) — The unit the dose was recorded in.
- `value` (string, required, nullable) — The dose, in `unit`.
- `display_unit` (string, required, nullable) — The unit the dose is displayed in.
- `display_value` (string, required, nullable) — The dose, in `display_unit`.

### DoseVolumeV1

The volume administered, relative to the animal's body weight. Quantities are strings rather than numbers so that the precision recorded is preserved exactly. The `display_` pair carries the same quantity converted into the unit your team has chosen to work in, which may differ from the unit it was recorded in.

- `unit` (string, required, nullable) — The unit the dose volume was recorded in.
- `value` (string, required, nullable) — The dose volume, in `unit`.
- `display_unit` (string, required, nullable) — The unit the dose volume is displayed in.
- `display_value` (string, required, nullable) — The dose volume, in `display_unit`.

### StockV1

The concentration of the stock solution the dose was drawn from. Quantities are strings rather than numbers so that the precision recorded is preserved exactly. The `display_` pair carries the same quantity converted into the unit your team has chosen to work in, which may differ from the unit it was recorded in.

- `unit` (string, required, nullable) — The unit the stock concentration was recorded in.
- `value` (string, required, nullable) — The stock concentration, in `unit`.
- `display_unit` (string, required, nullable) — The unit the stock concentration is displayed in.
- `display_value` (string, required, nullable) — The stock concentration, in `display_unit`.

### VolumeV1

The absolute volume administered. Quantities are strings rather than numbers so that the precision recorded is preserved exactly. The `display_` pair carries the same quantity converted into the unit your team has chosen to work in, which may differ from the unit it was recorded in.

- `unit` (string, required, nullable) — The unit the volume was recorded in.
- `value` (string, required, nullable) — The volume, in `unit`.
- `display_unit` (string, required, nullable) — The unit the volume is displayed in.
- `display_value` (string, required, nullable) — The volume, in `display_unit`.

### 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`.

### StudyGroupNestedV1

The treatment group an animal is assigned to within a study, as embedded in the animal. The study is given as an identifier rather than an object to keep the animal response from nesting the same study twice.

- `id` (string, required) — Unique identifier for a study group.
- `study_id` (string, required) — Unique identifier for a study.
- `name` (string, required) — The name of the study group.
- `no` (integer, required, nullable) — The position of the group in the study's group ordering.
- `color` (string, required, nullable) — The colour used to represent the group in the interface.
- `max_animals` (integer, required, nullable) — The number of animals the group can hold. Assigning an animal to a group already at this capacity is rejected. Null when the group is uncapped.
- `control` (boolean, required) — Whether the group is the study's control group.
- `metadata` (map from string to any, required, nullable) — The metadata associated to the study group.
- `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.