---
title: "Applies a scenario by syncing it into its deal"
method: PATCH
path: "/api/v2/scenarios/{id}/sync"
tags: ["Scenarios"]
---

# Applies a scenario by syncing it into its deal

`PATCH /api/v2/scenarios/{id}/sync`

## Request

- Base URL: `https://developer.productive.io` (the document declares no server; this is the origin it was published from)
- URL: `https://developer.productive.io/api/v2/scenarios/{id}/sync`
- Auth: none declared

Apply the scenario to its deal by merging changes: new records are created, matched ones updated, removed ones deleted. Requires the Scenario Builder feature on the organization's plan.

## Path parameters

- `id` string, required

## Request body

- object: Single scenario record in JSON:API format.
  - `data` object: A scenario resource object.
    - `attributes` object: Scenario apply options.
      - `apply_bookings` boolean: Whether the scenario bookings are also applied to the deal. Defaults to false.
      - `confirm_bookings` boolean: Whether the applied bookings are created as confirmed instead of tentative. Defaults to false.
      - `update_deal_value` boolean: Whether a manually set deal value is replaced with the scenario value. Defaults to false.

## Response `204`

No Content

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden. When applying the scenario would destroy services whose time entries, expenses or bookings the person can't manage, one `cascade_deletion_blocked` error per such service. Match errors to services by `meta.id`: `source.pointer` and `meta.bulk_index` index the server-side list of destroyed services, not the request body.
- `404`: Not Found
- `406`: Not Acceptable
- `408`: Request Timeout
- `415`: Unsupported Media Type
- `422`: Unprocessable Content
- `423`: Locked
- `429`: Too Many Requests
- `500`: Internal Server Error

## Changes

- **2026-11-03** `7dcc2525e812`: 4 info
  - added the optional property `errors/items/meta/blocked_types` to the response with the `403` status
  - added the optional property `errors/items/meta/bulk_index` to the response with the `403` status
  - added the optional property `errors/items/meta/id` to the response with the `403` status
  - added the optional property `errors/items/source` to the response with the `403` status
- **2026-11-02** `fa3060fd0144`: 3 warning, 9 info
  - added the new `bad_decimal_format` enum value to the `errors/items/code` response property for the response status `422`
  - added the new `non_finite_number` enum value to the `errors/items/code` response property for the response status `422`
  - added the new `null_bytes_in_params` enum value to the `errors/items/code` response property for the response status `422`
  - added the non-success response with the status `400`
  - …8 more

[Operation history](https://skmtc.dev/productive/apis/api-documentation/changes/api/v2/scenarios/:id/sync/patch.md)

---

[API](https://skmtc.dev/productive/apis/api-documentation.md) - [All operations](https://skmtc.dev/productive/apis/api-documentation/llms.txt) - [OpenAPI document](https://skmtc.dev/productive/apis/api-documentation/revisions/e7bdfdf6cba3?raw)
