---
title: "Deactivate an activity"
method: POST
path: "/promotions/activities/{activity_id}/deactivate"
tags: ["Promotions"]
---

# Deactivate an activity

`POST /promotions/activities/{activity_id}/deactivate`

## Request

- Base URL: `https://api.reacherapp.com/public/v1`
- URL: `https://api.reacherapp.com/public/v1/promotions/activities/{activity_id}/deactivate`
- Auth: API key in header `x-api-key` and API key in header `x-shop-id`

Ends the activity on TikTok. Cannot be undone except by `republish` with a new window. A lost answer is re-read: if TikTok already shows DEACTIVATED the call succeeds.

## Path parameters

- `activity_id` string, required

## Headers

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

## Response `200`

Successful Response

- PromotionMutationResponse
  - `data` PromotionMutationOut, required
    - `activity_id` string, required
    - `status` string, nullable
    - `title` string, nullable
    - `total_count` integer, nullable: TikTok's count of products on the activity, when it says.

## Other responses

- `400`: Validation error, multi-shop key, missing `Idempotency-Key`, or TikTok rejected the request (`PROMOTION_REJECTED`; `PROMOTION_CONFLICT`, `FLASH_SALE_ONGOING`, `PROMOTION_PERIOD_TOO_LONG` for those causes).
- `403`: API key lacks `read_write` scope, or the shop's TikTok grant lacks the promotion scopes (`SCOPE_NOT_GRANTED`).
- `404`: No such activity for this shop, or TikTok does not allow this authorization to access it.
- `409`: `Idempotency-Key` reused with a different body (`IDEMPOTENCY_CONFLICT`), another request is writing to this activity (`CONCURRENT_WRITE`), the record is not in a resumable state (`NOT_RESUMABLE`), or the shop is not connected (`SHOP_NOT_CONNECTED`).
- `422`: Validation Error
- `429`: Write-tier rate limit, or TikTok is rate limiting this shop (`UPSTREAM_RATE_LIMITED`, with `Retry-After`).
- `502`: TikTok's answer was lost and a re-read could not confirm the change (`UPSTREAM_UNCERTAIN`), or TikTok did not complete the request (`UPSTREAM_ERROR`). For a UK shop, `UPSTREAM_ERROR` with `details.reason` and `Retry-After` means its customer-service token could not be renewed in time; retry with the same key.
- `503`: The write limiter (Valkey) is unavailable; no write was attempted.

## Changes

> 76 revisions in range; 1 not diffed.

- **2026-10-25** `84094c04c9fd`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/reacherapp/apis/reacher-data-api/changes/promotions/activities/:activity_id/deactivate/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)
