---
title: "Record sample screening feedback (Beta)"
method: POST
path: "/samples/screening-feedback"
tags: ["Samples"]
---

# Record sample screening feedback (Beta)

`POST /samples/screening-feedback`

## Request

- Base URL: `https://api.reacherapp.com/public/v1`
- URL: `https://api.reacherapp.com/public/v1/samples/screening-feedback`
- Auth: API key in header `x-api-key` and API key in header `x-shop-id`

(Beta) Mark creators a sample-request automation approved or screened out as `good_fit` or `bad_fit`, with optional reasons and a note (max 50 per call). A `bad_fit` is added to the automation's excluded creators at once, so it is never auto-approved again (from the automation's next run); a `good_fit` is recorded only, and removes an exclusion this feedback had added. A creator's latest verdict replaces the earlier one. Nothing is sent to TikTok. Approve automations only. Supports `X-Dry-Run: true`. Requires `read_write` scope and `Idempotency-Key`.

## Headers

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

## Request body

- FeedbackRecordRequest
  - `automation_id` integer, required: The sample-request automation the verdicts are about.
  - `items` FeedbackItem[], required
    - `creator_username` string, required: TikTok handle, with or without '@'.
    - `verdict` 'good_fit' | 'bad_fit', required: `bad_fit` adds the creator to the automation's excluded creators, so it never auto-approves them again. `good_fit` is recorded only; if this feedback had excluded the creator, the exclusion is removed.
    - `reasons` string[]: Why, from a fixed list: music_only (no one speaks, just music), ai_generated, low_quality, weak_hook, poor_pacing, no_product_selling, wrong_audience, other.
    - `note` string, nullable

## Response `200`

Successful Response

- FeedbackRecordResponse
  - `data` FeedbackRecordResult, required
    - `automation_id` integer, required
    - `recorded` FeedbackRecorded[], required
      - `creator_username` string, required
      - `verdict` 'good_fit' | 'bad_fit', required
      - `change` 'created' | 'updated' | 'unchanged', required
      - `excluded` boolean, required: Whether the creator is on the automation's exclusion list afterwards.
    - `exclusions_added` string[], required
    - `exclusions_removed` string[], required
    - `skipped` FeedbackSkipped[], required
      - `creator_username` string, required
      - `reason` string, required
  - `dry_run` boolean, required

## Other responses

- `422`: Validation Error

## Changes

> 76 revisions in range; 1 not diffed.

- **2026-10-23** `9cc1ee8af6ae`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/reacherapp/apis/reacher-data-api/changes/samples/screening-feedback/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)
