> ## Documentation Index
> Fetch the complete documentation index at: https://docs.revcenter.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Record a verdict and notes

> Record your team's verdict on someone a search found (accept, reject, maybe, or null to clear) with reason codes and private notes, e.g. "Ask about work authorization". The same judgement the candidate panel in the app records. Verdicts, reason codes and notes are private to your workspace: they never appear on the share link, the client portal, a shortlist email or any export. Each call is kept (get_candidate_verdicts reads the latest per person) and lands with review_state pending: Revcenter reviews verdicts to calibrate scoring, so recording one does not move the shortlist; to take someone off, use remove_shortlist_member. reason_codes are keys from list_decline_reasons. Send an Idempotency-Key to make a retry safe: the same key and body return the first verdict. Does not use credits.

Needs scope `shortlists:write`.



## OpenAPI

````yaml /openapi.json post /searches/{searchId}/candidates/{candidateId}/verdict
openapi: 3.1.0
info:
  title: Revcenter API
  version: v1
  description: >-
    Projects, searches, scored candidates and shortlists. Generated from the
    agent API's registry.
servers:
  - url: https://api.revcenter.ai/v1
security:
  - bearer: []
tags:
  - name: Login
  - name: Account
  - name: Actions
  - name: Reference
  - name: Projects
  - name: Searches
  - name: Scoring
  - name: Shortlists
  - name: Candidates
  - name: Webhooks
  - name: Health
paths:
  /searches/{searchId}/candidates/{candidateId}/verdict:
    post:
      tags:
        - Candidates
      summary: Record a verdict and notes
      description: >-
        Record your team's verdict on someone a search found (accept, reject,
        maybe, or null to clear) with reason codes and private notes, e.g. "Ask
        about work authorization". The same judgement the candidate panel in the
        app records. Verdicts, reason codes and notes are private to your
        workspace: they never appear on the share link, the client portal, a
        shortlist email or any export. Each call is kept (get_candidate_verdicts
        reads the latest per person) and lands with review_state pending:
        Revcenter reviews verdicts to calibrate scoring, so recording one does
        not move the shortlist; to take someone off, use
        remove_shortlist_member. reason_codes are keys from
        list_decline_reasons. Send an Idempotency-Key to make a retry safe: the
        same key and body return the first verdict. Does not use credits.


        Needs scope `shortlists:write`.
      operationId: set_candidate_verdict
      parameters:
        - name: searchId
          in: path
          required: true
          description: A search id
          schema:
            type: string
        - name: candidateId
          in: path
          required: true
          description: A candidate id
          schema:
            type: string
        - name: Idempotency-Key
          in: header
          required: false
          description: >-
            Optional, 8-160 printable characters: a retry with the same key and
            body records nothing new.
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - verdict
              properties:
                verdict:
                  type:
                    - string
                    - 'null'
                  enum:
                    - accept
                    - reject
                    - maybe
                    - null
                  description: null clears the verdict.
                reason_codes:
                  type: array
                  items:
                    type: string
                    maxLength: 120
                  maxItems: 30
                  description: Keys from list_decline_reasons, e.g. wrong_seniority.
                notes:
                  type:
                    - string
                    - 'null'
                  maxLength: 4000
                  description: Private notes for your team.
            example:
              verdict: maybe
              reason_codes:
                - tenure_concern
              notes: 'Ask about work authorization: contract via staffing vendor.'
      responses:
        '200':
          description: OK
          headers:
            X-RateLimit-Limit:
              description: >-
                Requests allowed this minute (the tighter of the key's and the
                workspace's).
              schema:
                type: integer
            X-RateLimit-Remaining:
              description: Requests left this minute.
              schema:
                type: integer
            X-RateLimit-Reset:
              description: When the minute resets, in Unix seconds.
              schema:
                type: integer
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: object
                    properties:
                      id:
                        type: string
                      search_id:
                        type: string
                      candidate_id:
                        type: string
                      verdict:
                        type:
                          - string
                          - 'null'
                      reason_codes:
                        type: array
                        items:
                          type: string
                      notes:
                        type:
                          - string
                          - 'null'
                      review_state:
                        type: string
                        description: pending until Revcenter reviews it.
                  meta:
                    $ref: '#/components/schemas/Meta'
              example:
                data:
                  id: 9c8b7a6d-5e4f-4a3b-8c2d-1e0f9a8b7c6e
                  search_id: 0b9e7d6c-5a4f-4e3d-8c2b-1a0f9e8d7c61
                  candidate_id: 3c2b1a09-8f7e-4d6c-9b5a-4e3d2c1b0a99
                  verdict: maybe
                  reason_codes:
                    - tenure_concern
                  notes: 'Ask about work authorization: contract via staffing vendor.'
                  review_state: pending
                meta:
                  request_id: req_01JABCDEF
        '400':
          $ref: '#/components/responses/Error'
        '401':
          $ref: '#/components/responses/Error'
        '402':
          $ref: '#/components/responses/Error'
        '403':
          $ref: '#/components/responses/Error'
        '404':
          $ref: '#/components/responses/Error'
        '409':
          $ref: '#/components/responses/Error'
        '429':
          $ref: '#/components/responses/Error'
        '500':
          $ref: '#/components/responses/Error'
        '503':
          $ref: '#/components/responses/Error'
components:
  schemas:
    Meta:
      type: object
      properties:
        request_id:
          type: string
        total:
          type: integer
          description: On lists that count everything that matched.
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: object
          required:
            - code
            - message
            - request_id
          properties:
            code:
              type: string
              description: 'Stable: every code is on the Errors page.'
            message:
              type: string
            details:
              type:
                - object
                - 'null'
              description: >-
                Structured specifics, when there are any (for example
                retry_after_seconds).
            request_id:
              type: string
        meta:
          $ref: '#/components/schemas/Meta'
      example:
        error:
          code: search_not_found
          message: No search with that id in this workspace.
          details: null
          request_id: req_01JABCDEF
        meta:
          request_id: req_01JABCDEF
  responses:
    Error:
      description: 'An error: one envelope everywhere. A 429 carries Retry-After.'
      headers:
        X-RateLimit-Limit:
          description: >-
            Requests allowed this minute (the tighter of the key's and the
            workspace's).
          schema:
            type: integer
        X-RateLimit-Remaining:
          description: Requests left this minute.
          schema:
            type: integer
        X-RateLimit-Reset:
          description: When the minute resets, in Unix seconds.
          schema:
            type: integer
        Retry-After:
          description: Seconds to wait (on 429 and 503).
          schema:
            type: integer
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    bearer:
      type: http
      scheme: bearer
      description: An API key from Settings → Usage → API (rvc_live_…).

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.