---
title: "Approve AI sample suggestions"
method: POST
path: "/samples/suggestions/approve"
tags: ["Samples"]
---

# Approve AI sample suggestions

`POST /samples/suggestions/approve`

Approve suggested sample requests on TikTok Shop — this ships real samples. Pass `suggestion_ids` (max 50) or `all_qualifying: true` (optionally with `automation_id`). Only suggestions with `status='suggested'` and `verdict='qualifies'` are approved; everything else comes back in `skipped` with a reason. Monthly sample quotas are enforced exactly as in the dashboard, and the automation's weekly approval caps (per product and shop total) apply as they do to its own approvals; over-cap suggestions stay `suggested`. A request TikTok no longer lists as pending becomes `expired`. Use `X-Dry-Run: true` first to preview. Requires `read_write` scope and `Idempotency-Key`.

## Headers

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

## Request body

- SuggestionApproveRequest
  - `suggestion_ids` integer[], nullable — Suggestions to approve (max 50). Omit when using `all_qualifying`.
  - `all_qualifying` boolean — Approve every `suggested` + `qualifies` suggestion (best-ranked first, up to 50 per call — call again for more). Mutually exclusive with `suggestion_ids`.
  - `automation_id` integer, nullable — Restrict `all_qualifying` to one automation.

## Response `200`

Successful Response

- SuggestionDecisionResponse
  - `data` SuggestionDecisionResult, required
    - `approved` integer — Approved on TikTok (or would be, on a dry run).
    - `dismissed` integer — Dismissed (or would be, on a dry run).
    - `suggestion_ids` integer[] — Suggestions that were (or would be) actioned.
    - `skipped` SuggestionSkipped[]
      - `suggestion_id` integer, required
      - `reason` string, required
    - `failed` SuggestionFailed[]
      - `suggestion_id` integer, required
      - `error` string, required
  - `dry_run` boolean, required

## Other responses

- `422` — Validation Error

## Changes

> 29 revisions in range; 1 not diffed.

- **2026-09-30** `67663b32ec24` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/reacherapp/apis/reacher-data-api/changes/samples/suggestions/approve/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/881910053958?raw)
