---
title: "Change a session's budget or schedule"
method: PATCH
path: "/gmv-max/campaigns/{campaign_id}/sessions/{session_id}"
tags: ["GMV Max"]
---

# Change a session's budget or schedule

`PATCH /gmv-max/campaigns/{campaign_id}/sessions/{session_id}`

## Request

- Base URL: `https://api.reacherapp.com/public/v1`
- URL: `https://api.reacherapp.com/public/v1/gmv-max/campaigns/{campaign_id}/sessions/{session_id}`
- Auth: API key in header `x-api-key` and API key in header `x-shop-id`

TikTok's `campaign/gmv_max/session/update`: a new daily budget, start (max delivery only) or end. The session must be on this campaign, which must be on this shop's store; a session a Reacher automation runs is refused (409). Requires `read_write` scope. Idempotent via `Idempotency-Key`; `X-Dry-Run: true` runs the checks and echoes the TikTok body. Single shop only.

## Path parameters

- `campaign_id` string, required
- `session_id` string, required

## Headers

- `Idempotency-Key` string, nullable
- `X-Dry-Run` string, nullable
- `X-Created-Via` string, nullable

## Request body

- GmvMaxSessionUpdateRequest: ``PATCH /public/v1/gmv-max/campaigns/{campaign_id}/sessions/{session_id}`` — a session's budget or schedule. TikTok cannot change its product or post.
  - `daily_budget` number, nullable: New daily budget.
  - `schedule_type` 'from_now' | 'start_end', nullable: `from_now` removes the end; `start_end` needs `schedule_end_time`.
  - `schedule_start_time` string, nullable: Max delivery only: new start, UTC, at least 5 minutes from now.
  - `schedule_end_time` string, nullable: New end, `YYYY-MM-DD HH:MM:SS` UTC.

## Response `200`

Successful Response

- GmvMaxSessionWriteResponse: Session create, update and delete. With ``X-Dry-Run: true`` nothing is sent and ``would`` holds the TikTok body.
  - `campaign_id` string, required
  - `session_id` string, nullable: The session written (TikTok's id, on create).
  - `action` 'created' | 'updated' | 'deleted', required
  - `dry_run` boolean, nullable: True when nothing was sent to TikTok.
  - `would` object, nullable: Dry run only: the TikTok request body.

## Other responses

- `400`: Invalid request / shop not connected to GMV Max.
- `403`: API key lacks `read_write` scope (`FORBIDDEN`), or the shop's TikTok authorization lacks this permission (`TIKTOK_PERMISSION_MISSING`).
- `404`: Campaign or session not found in this shop.
- `409`: Idempotency-Key conflict, or a Reacher automation runs the session.
- `422`: TikTok rejected the write; the message says why.
- `429`: Write rate limit exceeded, or TikTok is throttling.
- `502`: TikTok failed transiently; safe to retry.

## Changes

> 76 revisions in range; 1 not diffed.

- **2026-10-18** `17e0890869d5`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/reacherapp/apis/reacher-data-api/changes/gmv-max/campaigns/:campaign_id/sessions/:session_id/patch.md)

---

[API](https://skmtc.dev/reacherapp/apis/reacher-data-api.md) - [All operations](https://skmtc.dev/reacherapp/apis/reacher-data-api/llms.txt) - [OpenAPI document](https://skmtc.dev/reacherapp/apis/reacher-data-api/revisions/63ce74b30b5a?raw)
