---
title: "Update a shadow experiment target"
method: PATCH
path: "/v2/projects/{projectId}/endpoints/{endpointId}/shadowExperiments/{experimentId}/targets/{id}"
tags: ["ShadowExperimentService"]
---

# Update a shadow experiment target

`PATCH /v2/projects/{projectId}/endpoints/{endpointId}/shadowExperiments/{experimentId}/targets/{id}`

## Request

- Base URL: `https://api.together.ai`
- URL: `https://api.together.ai/v2/projects/{projectId}/endpoints/{endpointId}/shadowExperiments/{experimentId}/targets/{id}`
- Auth: HTTP bearer

Updates a shadow target's name, deployment, or description. `updateMask` is required and must select at least one mutable field.

## Path parameters

- `projectId` string, required: Project identifier.
- `endpointId` string, required: Endpoint identifier.
- `experimentId` string, required: Shadow experiment identifier.
- `id` string, required: Shadow experiment target identifier.

## Query parameters

- `updateMask` string, required: Comma-separated fields to update. Supported fields are `name`, `targetDeploymentId`, and `description`.

## Request body

- DEUpdateShadowExperimentTargetRequest: Mutable name, deployment, and description for a shadow experiment target.
  - `name` string: Updated human-readable target name.
  - `targetDeploymentId` string: Replacement deployment under the parent endpoint. It must not be a live traffic-split member or the source or target of an active rollout; traffic-split weight 0 warm-up targets are allowed.
  - `description` string: Updated free-form target description.
  - `etag` string: Opaque version tag from a prior read for optimistic concurrency.

## Response `200`

OK

- DEShadowExperimentTarget: Deployment that receives mirrored traffic for a shadow experiment.
  - `id` string, required: Output only. Unique shadow experiment target identifier.
  - `experimentId` string, required: Output only. Shadow experiment this target belongs to.
  - `name` string, required: Human-readable target name, unique within the shadow experiment. At most 256 characters.
  - `targetDeploymentId` string, required: Deployment under the parent endpoint that receives mirrored traffic. It must not be a live traffic-split member or the source or target of an active rollout; traffic-split weight 0 warm-up targets are allowed.
  - `description` string: Optional free-form target description.
  - `createdAt` string, date-time, required: Output only. Timestamp when the target was created.
  - `updatedAt` string, date-time, required: Output only. Timestamp when the target was last updated.
  - `etag` string, required: Opaque version tag for optimistic concurrency control. Returned on read; set it on update or delete requests for consistent read-modify-write.

## Other responses

- `400`: Invalid request
- `default`: Default error response

## Changes

- **2026-10-22** `bb5257b3173a`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/together/apis/together-apis/changes/v2/projects/:projectId/endpoints/:endpointId/shadowExperiments/:experimentId/targets/:id/patch.md)

---

[API](https://skmtc.dev/together/apis/together-apis.md) - [All operations](https://skmtc.dev/together/apis/together-apis/llms.txt) - [OpenAPI document](https://skmtc.dev/together/apis/together-apis/revisions/93438ddac711?raw)
