---
title: "Update a scenario booking"
method: PATCH
path: "/api/v2/scenario_bookings/{id}"
tags: ["Scenario Bookings"]
---

# Update a scenario booking

`PATCH /api/v2/scenario_bookings/{id}`

## 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/scenario_bookings/{id}`
- Auth: none declared

Update a scenario booking's attributes.

## Path parameters

- `id` string, required

## Request body

- object: Single scenario booking record in JSON:API format.
  - `data` object: A scenario booking resource object.
    - `attributes` object: Scenario booking attributes.
      - `booking_method_id` BookingMethodId (unresolved $ref)
      - `custom_fields` CustomFields (unresolved $ref)
      - `ended_on` EndedOn (unresolved $ref)
      - `note` Note (unresolved $ref)
      - `percentage` Percentage (unresolved $ref)
      - `scenario_item_id` ScenarioItemId (unresolved $ref)
      - `started_on` StartedOn (unresolved $ref)
      - `time` Time (unresolved $ref)
      - `total_time` TotalTime (unresolved $ref)

## Response `200`

Single scenario booking

- object: Single scenario booking record in JSON:API format.
  - `data` object: A scenario booking resource object.
    - `attributes` object: Scenario booking attributes.
      - `booking_method_id` BookingMethodId (unresolved $ref)
      - `created_at` CreatedAt (unresolved $ref)
      - `custom_fields` CustomFields (unresolved $ref)
      - `ended_on` EndedOn (unresolved $ref)
      - `hours` Hours (unresolved $ref)
      - `last_activity_at` LastActivityAt (unresolved $ref)
      - `note` Note (unresolved $ref)
      - `percentage` Percentage (unresolved $ref)
      - `started_on` StartedOn (unresolved $ref)
      - `time` Time (unresolved $ref)
      - `total_time` TotalTime (unresolved $ref)
      - `total_working_days` TotalWorkingDays (unresolved $ref)
      - `updated_at` UpdatedAt (unresolved $ref)
    - `relationships` object: Scenario booking relationships.
      - `creator` union: A JSON:API single relationship — links to one related resource or `null`.
        - SingleLinkageNullable
          - `data` Resource, required: A JSON:API resource identifier object containing the resource type and ID.
            - `id` string, required: The unique identifier of the resource.
            - `type` string, required: The resource type name (e.g. `tasks`, `people`, `deals`).
        - NotIncluded: Placeholder for a relationship that was not sideloaded in this response.
          - `meta` object, required: Metadata indicating the sideload status of this relationship.
            - `included` false, required: Whether the related resource was included in the sideloaded data. Always `false` for this variant.
      - `organization` union: A JSON:API single relationship — links to one related resource or `null`.
        - SingleLinkageNullable
          - `data` Resource, required: A JSON:API resource identifier object containing the resource type and ID.
            - `id` string, required: The unique identifier of the resource.
            - `type` string, required: The resource type name (e.g. `tasks`, `people`, `deals`).
        - NotIncluded: Placeholder for a relationship that was not sideloaded in this response.
          - `meta` object, required: Metadata indicating the sideload status of this relationship.
            - `included` false, required: Whether the related resource was included in the sideloaded data. Always `false` for this variant.
      - `scenario_item` union: A JSON:API single relationship — links to one related resource or `null`.
        - SingleLinkageNullable
          - `data` Resource, required: A JSON:API resource identifier object containing the resource type and ID.
            - `id` string, required: The unique identifier of the resource.
            - `type` string, required: The resource type name (e.g. `tasks`, `people`, `deals`).
        - NotIncluded: Placeholder for a relationship that was not sideloaded in this response.
          - `meta` object, required: Metadata indicating the sideload status of this relationship.
            - `included` false, required: Whether the related resource was included in the sideloaded data. Always `false` for this variant.
      - `updater` union: A JSON:API single relationship — links to one related resource or `null`.
        - SingleLinkageNullable
          - `data` Resource, required: A JSON:API resource identifier object containing the resource type and ID.
            - `id` string, required: The unique identifier of the resource.
            - `type` string, required: The resource type name (e.g. `tasks`, `people`, `deals`).
        - NotIncluded: Placeholder for a relationship that was not sideloaded in this response.
          - `meta` object, required: Metadata indicating the sideload status of this relationship.
            - `included` false, required: Whether the related resource was included in the sideloaded data. Always `false` for this variant.
  - `included` unknown[]: Sideloaded related resources.
    - unknown
  - `meta` Meta: Pagination and response metadata returned with every collection endpoint.
    - `current_page` integer: The current page number in this paginated response (1-based).
    - `max_page_size` integer: Maximum number of records allowed per page for this endpoint.
    - `organization_features` object: Feature flags and capabilities enabled for the current organization, used for UI rendering.
    - `page_size` integer: Number of records returned per page in this response.
    - `settings` object: Organization or user settings relevant to this resource's display.
    - `total_count` integer: Total number of records matching the current query across all pages.
    - `total_pages` integer: Total number of pages available for the current query and page size.

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden
- `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-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
- **2026-10-29** `2eb527b17709`: 3 info
  - the request property `data/attributes/ended_on` became optional
  - the request property `data/attributes/scenario_item_id` became optional
  - the request property `data/attributes/started_on` became optional

[Operation history](https://skmtc.dev/productive/apis/api-documentation/changes/api/v2/scenario_bookings/:id/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)
