---
title: "Record good-fit decisions and enroll"
method: POST
path: "/people/reviews/{batchId}/decisions"
tags: ["People search"]
---

# Record good-fit decisions and enroll

`POST /people/reviews/{batchId}/decisions`

## Request

- Base URL: `https://app.pumpgtm.com/api/v1`
- URL: `https://app.pumpgtm.com/api/v1/people/reviews/{batchId}/decisions`
- Auth: HTTP bearer

Record the customer's good-fit decisions on a review batch. 1-100 decisions per call; good_fit approves, not_a_fit rejects. Partial decisions persist. finish: true requires every candidate decided and queues the good fits into their sequence (the call's sequenceId, a per-decision override, or the Play's default); summary, addedLeadIds, addedLeads and sequences are present only on that finishing call, and reviewUrl is then present. Nothing is sent in this call. 409 all_candidates_require_a_decision when finishing with undecided people.

## Path parameters

- `batchId` string, uuid, required

## Headers

- `X-PumpGTM-Client` string, uuid
- `X-PumpGTM-User` string

## Request body

- object
  - `decisions` object[], required
    - `candidateId` string, uuid, required
    - `decision` 'good_fit' | 'not_a_fit', required
    - `sequenceId` string, uuid: Optional per-person override of the sequence this good fit goes into.
    - `feedbackReason` string
    - `feedbackNote` string
  - `sequenceId` string, uuid: Applies to every good fit in this call.
  - `finish` boolean
  - `requestId` string: Optional idempotency key; reuse it only to retry this exact request. Omitted means a fresh request.

## Response `200`

Successful response. Read outcome fields; success does not imply delivery.

- object: { batch, candidates: [{ ..., decision: undecided | approved | rejected }], reviewUrl?, contacted: false } plus, only when finish is true: summary: { approvedCount, rejectedCount, addedCount, duplicatesSkipped, alreadyInvitedCount }, addedLeadIds, addedLeads, sequences

## Other responses

- `400`: Invalid input; for partner keys also user_header_required when the account requires X-PumpGTM-User
- `401`: Missing, invalid or revoked key
- `403`: Workspace mismatch, channel or feature disabled; for partner keys also enterprise_required and user_disabled
- `404`: Resource unavailable in this workspace
- `409`: Revision, identity or state conflict: { error, message } and nothing changed
- `429`: Rate limit; respect Retry-After when provided
- `500`: internal_error: an unexpected failure on our side; retry, then contact PumpGTM
- `503`: Dependency unavailable; identity may be unknown

## Changes

- **2026-10-12** `06d2e4d0e84b`: 8 info
  - the response property `error` became required for the status `400`
  - the response property `error` became required for the status `401`
  - the response property `error` became required for the status `403`
  - the response property `error` became required for the status `404`
  - …4 more
- **2026-10-12** `08c80059d483`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/pumpgtm/apis/pumpgtm-api/changes/people/reviews/:batchId/decisions/post.md)

---

[API](https://skmtc.dev/pumpgtm/apis/pumpgtm-api.md) - [All operations](https://skmtc.dev/pumpgtm/apis/pumpgtm-api/llms.txt) - [OpenAPI document](https://skmtc.dev/pumpgtm/apis/pumpgtm-api/revisions/06d2e4d0e84b?raw)
