---
title: "Start a max delivery or creative boost session"
method: POST
path: "/gmv-max/campaigns/{campaign_id}/sessions"
tags: ["GMV Max"]
---

# Start a max delivery or creative boost session

`POST /gmv-max/campaigns/{campaign_id}/sessions`

## Request

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

Spends extra daily budget on one product (`max_delivery`, TikTok `NO_BID`) or one post (`creative_boost`, `CREATIVE_NO_BID`) in a Product GMV Max campaign, through TikTok's `campaign/gmv_max/session/create`. The campaign must be on this shop's store, and a post a Reacher creative boost automation is already boosting is refused (409). Requires `read_write` scope. Idempotent via the `Idempotency-Key` header; `X-Dry-Run: true` checks the campaign and echoes the TikTok body without spending anything. Single shop only.

## Path parameters

- `campaign_id` string, required

## Headers

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

## Request body

- GmvMaxSessionCreateRequest: ``POST /public/v1/gmv-max/campaigns/{campaign_id}/sessions`` — spend extra budget on one product (max delivery) or one post (creative boost).
  - `session_type` 'max_delivery' | 'creative_boost', required: `max_delivery` puts extra budget behind a product (TikTok `NO_BID`); `creative_boost` behind one post (`CREATIVE_NO_BID`).
  - `spu_id` string, required: The product (SPU ID); see `gmv_max_store_products`.
  - `item_id` string, nullable: Creative boost only (required): the post (video) ID, from `gmv_max_posts` or the campaign's report.
  - `daily_budget` number, required: Daily budget for the session, on top of the campaign's. TikTok's minimum is 10 USD.
  - `schedule_type` 'from_now' | 'start_end': `from_now` runs until the campaign ends; `start_end` until `schedule_end_time`.
  - `schedule_start_time` string, nullable: Max delivery only: start, `YYYY-MM-DD HH:MM:SS` UTC (default now). Creative boost starts immediately.
  - `schedule_end_time` string, nullable: 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/post.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)
