---
title: "Update a scenario"
method: PATCH
path: "/projects/{projectId}/user-testing/scenarios/{scenarioId}"
tags: ["User testing"]
---

# Update a scenario

`PATCH /projects/{projectId}/user-testing/scenarios/{scenarioId}`

Change a scenario's identity or its exposure — but not both in one call. **Send `mode` on its own.** Identity and exposure are separate operations upstream, and applying them in sequence could leave the scenario live in a mode you did not ask for.

Narrowing `mode` bumps `accessVersion` upstream and invalidates sessions minted under the old one.

## Request body

- ScenarioUpdateRequest — At least one field. **Send `mode` on its own**: identity and exposure are separate operations upstream, and applying them in sequence could leave the scenario live in a mode you did not ask for.
  - `name` string
  - `description` string
  - `mode` 'project_members' | 'invited_only' | 'anyone_with_link' — Who may open the share link: - `project_members` — signed-in members of the project only - `invited_only` — named members, invited individually - `anyone_with_link` — **anyone holding the URL**, signed in or not

## Response `200`

The updated scenario.

- UserTestingScenario — Scenario metadata after an update. Deliberately WITHOUT `accessVersion`: a mode change bumps it upstream, but the envelope this route re-reads does not carry the new value — reporting a stale one would document a revocation signal the response cannot deliver. The publish response carries the real one.
  - `id` string, required
  - `projectId` string, required
  - `name` string, nullable, required
  - `description` string, nullable, required
  - `mode` 'project_members' | 'invited_only' | 'anyone_with_link' | 'null', nullable, required

## Other responses

- `400` — Malformed body or parameters.
- `401` — Missing, invalid, revoked, or orphaned key (`UNAUTHORIZED`) — or the **target MCP server** needs an OAuth grant (`OAUTH_REQUIRED`), which is a property of the server, not your key.
- `403` — Key is valid but not allowed to do this.
- `404` — Unknown project, server, or resource.
- `429` — Per-key rate limit exceeded (60 requests/minute sustained, bursts up to 10). Honor `Retry-After` and back off with jitter.
- `500` — Something failed on MCPJam's side.

---

[API](https://skmtc.net/mcpjam/apis/mcpjam-api.md) · [All operations](https://skmtc.net/mcpjam/apis/mcpjam-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/mcpjam/mcpjam-api/revisions/d3adfe49fbbf/schema)
