---
title: "Calibrate video screening against feedback (Beta)"
method: GET
path: "/samples/screening-feedback/calibration"
tags: ["Samples"]
---

# Calibrate video screening against feedback (Beta)

`GET /samples/screening-feedback/calibration`

## Request

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

(Beta) Re-judges every creator marked good or bad fit with the automation's current video rules, then tries each hard filter at thresholds 0.1-1.0 with the other rules unchanged. `summary.bad_fit.passes` is how many bad fits the rules still approve; `summary.good_fit.blocked` is how many good fits they would stop. Each filter's `suggested_min_share` is a threshold that lets fewer bad fits through without losing a good fit (none until 3 good fits can be judged). Judged on each creator's latest analysed videos today, not those at decision time; creators at or above `screen_below_gmv_30d` are approved on numbers and not covered by video rules. Covers the newest 2,000 verdicts. Read-only: apply a change with `automation_update`.

## Query parameters

- `automation_id` integer, required: The sample-request automation to calibrate.

## Response `200`

Successful Response

- CalibrationResponse
  - `data` CalibrationReport, required
    - `automation_id` integer, required
    - `rules` CalibrationRules, required
      - `screen_below_gmv_30d` number, nullable: Creators at or above this 30-day GMV are approved on their numbers and never video-screened, so these rules cannot stop them.
      - `latest_videos` integer, required
      - `min_videos` integer, required
      - `hard_filters` CalibrationRuleFilter[], required
        - `field` string, required
        - `min_share` number, required
    - `summary` CalibrationSummary, required
      - `bad_fit` CalibrationTally, required
        - `passes` integer, required
        - `blocked` integer, required
        - `insufficient_data` integer, required
        - `no_creator_id` integer, required
      - `good_fit` CalibrationTally, required
        - `passes` integer, required
        - `blocked` integer, required
        - `insufficient_data` integer, required
        - `no_creator_id` integer, required
    - `filters` CalibrationFilter[], required
      - `filter_index` integer, required: Position of the filter in `rules.hard_filters`.
      - `field` string, required
      - `current_min_share` number, required
      - `thresholds` CalibrationThreshold[], required: This filter at each threshold with every other rule unchanged.
        - `min_share` number, required
        - `bad_fit_passing` integer, required
        - `good_fit_passing` integer, required
        - `current` boolean, required
      - `suggested_min_share` number, nullable: A threshold that lets fewer bad fits through without losing a good fit, closest to today's; null when none does better or fewer than 3 good fits could be judged. A suggestion only: nothing is changed.
    - `creators` CalibrationCreator[], required
      - `creator_username` string, required
      - `verdict` string, required
      - `creator_id` string, nullable
      - `outcome` 'passes' | 'blocked' | 'insufficient_data' | 'no_creator_id', required
      - `videos_analysed` integer, required
      - `shares` CalibrationShare[], required: Empty when too few videos were analysed.
        - `filter_index` integer, required
        - `field` string, required
        - `share` number, required: Share of the creator's screened videos matching this filter.
        - `insufficient_videos` boolean: True for `speaks_on_camera` when fewer than `min_videos` videos were transcribed; `share` is then 0 and the filter fails.
        - `passed` boolean, required
    - `truncated` boolean, required: True when only the newest 2,000 verdicts were judged.

## Other responses

- `422`: Validation Error

## Changes

> 76 revisions in range; 1 not diffed.

- **2026-10-28** `d0aedf264722`: 1 info
  - added the optional property `data/creators/items/shares/items/insufficient_videos` to the response with the `200` status
- **2026-10-23** `9cc1ee8af6ae`: 1 info
  - endpoint added

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