---
title: "GMV Max campaign settings (normalized)"
method: GET
path: "/gmv-max/campaigns/{campaign_id}/settings"
tags: ["GMV Max"]
---

# GMV Max campaign settings (normalized)

`GET /gmv-max/campaigns/{campaign_id}/settings`

## Request

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

The campaign's current settings, normalized from TikTok's raw `campaign/gmv_max/info` payload into a stable snake_case object: `status`, `target_roas`, `daily_budget`, schedule window, `auto_budget_enabled`, `product_selection`, `roi_protection_enabled`, `affiliate_posts_enabled`, and `placements`. Settings TikTok did not report are null. Single shop only — set `x-shop-id` to the campaign's owning shop. 404 if the campaign is not found in this shop.

`source=synced` (default) reads Reacher's last sync, which can be a few hours old. `source=live` reads the campaign from TikTok on this request — use it to confirm a change (e.g. a new target ROAS) took effect.

## Path parameters

- `campaign_id` string, required

## Query parameters

- `source` 'synced' | 'live': `synced` = Reacher's last sync; `live` = read from TikTok now.

## Response `200`

Successful Response

- GmvMaxCampaignSettingsResponse: GET /gmv-max/campaigns/{id}/settings.
  - `data` GmvMaxCampaignSettings, required: Normalised, snake_case view of a campaign's TikTok settings payload. Every field is derived from the campaign's `raw_data` (the TikTok `campaign/gmv_max/info` response) by a single normalisation boundary; absent keys surface as null.
    - `status` string, nullable: Campaign operation status normalized to lower-case (e.g. `enabled` / `disabled`). From TikTok `operation_status`.
    - `target_roas` number, nullable: Target ROAS bid. From TikTok `roas_bid`.
    - `daily_budget` number, nullable: Campaign budget. From TikTok `budget`.
    - `schedule_type` string, nullable: TikTok schedule type (e.g. `SCHEDULE_FROM_NOW`, `SCHEDULE_START_END`).
    - `schedule_start_time` unknown
    - `schedule_end_time` unknown
    - `promotion_days` unknown
    - `auto_budget_enabled` boolean, nullable: Whether auto-budget is on. From TikTok `auto_budget`.
    - `product_selection` unknown
    - `roi_protection_enabled` boolean, nullable: Whether ROI protection is enabled.
    - `affiliate_posts_enabled` boolean, nullable: Whether affiliate posts are enabled.
    - `placements` unknown
  - `currency` string, required: ISO currency code for the shop's region.
  - `source` 'synced' | 'live': `synced` reads Reacher's last sync (refreshed every few hours); `live` was fetched from TikTok on this request.
  - `fetched_at` string, nullable: When the live settings were read from TikTok.

## Other responses

- `422`: Validation Error

## Changes

> 76 revisions in range; 1 not diffed.

- **2026-10-16** `8c30101a864b`: 3 info
  - added the new optional `query` request parameter `source`
  - added the optional property `fetched_at` to the response with the `200` status
  - added the optional property `source` to the response with the `200` status
- **2026-09-02** `d4fe3e380424`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/reacherapp/apis/reacher-data-api/changes/gmv-max/campaigns/:campaign_id/settings/get.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)
