---
title: "Check fit on a list"
method: POST
path: "/contacts/fit-check"
tags: ["contacts"]
---

# Check fit on a list

`POST /contacts/fit-check`

## Request

- Base URL: `https://api.bereach.ai`
- URL: `https://api.bereach.ai/contacts/fit-check`
- Auth: HTTP bearer

Scores each person on a list 0 to 100 against an ideal customer and its personas, with the persona each reads as and one line of why, and saves the setup on the list. Informative only: it hides and blocks nobody.

## Request body

- object
  - `campaignId` string, required: The list to check.
  - `icp` string: Who the ideal customer is, in the user's words. Left out, the setup saved on this list is reused, else the one its search was read as; a list with neither needs it.
  - `personas` string[]: The personas targeted, one per entry, used with icp.
  - `rescore` boolean: Check everybody again, not only the people unchecked since the setup changed.

## Response `200`

How many people were scored

- object
  - `success` true, required
  - `checked` integer, required
  - `scored` integer, required
  - `failedBatches` integer, required
  - `skipped` integer, required: People past the most one check reads.
  - `setup` object, required: What the people were checked against.
    - `icp` string, required
    - `personas` string[], required
  - `started` boolean
  - `running` boolean
  - `run` object, nullable
    - `id` string, required
    - `kind` 'reasons' | 'fit', required
    - `state` 'running' | 'done' | 'stopped' | 'failed', required
    - `stoppedReason` 'user' | 'credits' | 'vendor' | 'lost'
    - `total` integer, required
    - `done` integer, required
    - `found` integer, required
    - `none` integer, required
    - `failed` integer, required
    - `skipped` integer, required
    - `credits` number, required
    - `creditsMax` number, required
    - `startedAt` string, required
    - `endedAt` string
    - `announcedAt` string
    - `stopRequestedAt` string
    - `contactIds` string[]
    - `extra` object
  - `quote` object
    - `kind` 'reasons' | 'fit', required
    - `people` integer, required
    - `alreadyDone` integer, required
    - `credits` number, required
    - `creditsLeft` number, nullable, required
    - `confirm` boolean, required
    - `affordable` boolean, required
    - `affordablePeople` integer, required
    - `extra` object
  - `refused` 'credits'
  - `stopping` boolean
  - `list_url` string: The list in the app, to give the user.

## Other responses

- `400`: The server cannot or will not process the request due to something that is perceived to be a client error.
- `401`: Although HTTP specifies "unauthorized", this response means "unauthenticated". Authenticate to continue. NOTE: 401 is also returned with code "linkedin_not_connected" on an endpoint that acts from your account (invitations, messages, your own network or inbox) when the caller IS authenticated but has no connected LinkedIn account: connect LinkedIn (not re-authenticate) to continue. Every other read never returns it.
- `403`: The caller is authenticated but not allowed. Read error.code: subscription_required (API key or connector whose plan is not active), free_draft_limit (a free-plan limit was reached), sales_nav_seat_inactive (no active Sales Navigator seat), or forbidden (not permitted).
- `404`: The server cannot find the requested resource.
- `409`: The request conflicts with the current state of the server.
- `410`: The requested content has been permanently deleted from the server.
- `422`: The request was well-formed but was unable to be followed due to semantic errors.
- `429`: Rate limit exceeded. Read error.retryAfter for the wait time in seconds.
- `500`: The server encountered a situation it does not know how to handle.
- `502`: An upstream service returned an error. Retry after a few seconds.
- `503`: Capacity is temporarily exceeded. Retry after a few seconds.

## Changes

> 39 revisions in range; 1 not diffed.

- **2026-10-22** `549f4adbbfcf`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/berea/apis/bereach-api/changes/contacts/fit-check/post.md)

---

[API](https://skmtc.dev/berea/apis/bereach-api.md) · [All operations](https://skmtc.dev/berea/apis/bereach-api/llms.txt) · [OpenAPI document](https://skmtc.dev/berea/apis/bereach-api/revisions/b657f915ce03?raw)
