Docs
API reference

Edit candidate feedback

PATCH
/api/v1/reports/{id}/candidate-kit

Edits the draft: switch sections and the practice link on or off, reword, remove or restore items, and set a personal note. Only fields you send change, and repeating a request changes nothing. An edit cannot add an item: what the feedback says is picked from the report. Wording that reads like a score, a rejection reason or a teammate's name is returned as warnings on the item; it does not block the edit. Only a member or admin can edit. Editing released feedback changes the draft only: the candidate keeps reading the released revision until you release an update with the release endpoint. Answers candidate_feedback_disabled while an admin has turned candidate feedback off in the organization settings.

Required scope: reports:write.

Errors

  • 400: invalid_content_type, invalid_json, request_body_too_large, unknown_field
  • 401: authentication_required, invalid_api_key
  • 403: api_access_disabled, candidate_feedback_disabled, insufficient_scope, permission_denied
  • 404: candidate_kit_not_found, report_not_found
  • 422: candidate_kit_invalid_edit, invalid_parameter
  • 429: rate_limit_exceeded
  • 500: api_error
  • 503: maintenance_mode, service_unavailable

Authorization

ApiKey
headerAuthorizationBearer <probb_live_<id>_<secret>>

Path Parameters

id*string

The report's ID.

Length1 <= length <= 200

Request Body

application/json
  1. body
sections?

Switch sections on or off: strengths, resume, interview, skills.

items?array<>

Reword, remove or restore items already in the draft. An edit cannot add an item.

Itemsitems <= 15
practice?

Switch the practice-interview link on or off.

personalNote?|

A note from the team shown at the top (at most 500 characters). null clears it.

Response Body

Success.

application/json
  1. response
object*string
id*string

The draft's ID.

reportId*string

The report it was drafted from. A report has at most one.

candidateId*string

The candidate the feedback is for.

jobId*string

The job.

status*string

draft until a member releases it: nothing reaches the candidate while it is a draft. released while the candidate's link works, revoked once it was withdrawn.

Value in"draft""released""revoked"
revision*integer

How many times the feedback has been released: 0 until it is, then 1, and one more for each update. The candidate reads the latest released revision, not the draft.

Range-9007199254740991 <= value <= 9007199254740991
release*

Where the feedback stands with the candidate.

wordingSource*string

ai when the wording was written by AI and checked, template when the standard wording was used.

Value in"ai""template"
sections*

strengths (what came across strongly), resume (make it visible in the resume), interview (strengthen interview answers) and skills (skills worth building, off by default).

practice*

Whether the feedback links to a practice interview.

personalNote*|

A note from the team shown at the top, at most 500 characters, or null.

personalNoteWarnings*array<>
createdAt*string
Formatdate-time
updatedAt*string
Formatdate-time
Example Request
# Set PROBB_URL and PROBB_API_KEY. Replace any *_VALUE placeholder and any example ID (such as job_example) with a real one.curl --fail-with-body -X PATCH "$PROBB_URL/api/v1/reports/ID_VALUE/candidate-kit" \  -H "Authorization: Bearer $PROBB_API_KEY" \  -H 'Content-Type: application/json' \  --data-binary '{  "items": [    {      "id": "resume-1k2m3n",      "text": "Add a line under your Fintech role about the Kafka migration you described: what you built and the scale."    },    {      "id": "strengths-9x8y7z",      "removed": true    }  ],  "sections": {    "skills": {      "enabled": true    }  },  "personalNote": "Thank you for the time you put into the interview."}'
Example Response
{  "object": "candidate_kit",  "id": "string",  "reportId": "string",  "candidateId": "string",  "jobId": "string",  "status": "draft",  "revision": -9007199254740991,  "release": {    "channel": "email",    "releasedAt": "2019-08-24T14:15:22Z",    "expiresAt": "2019-08-24T14:15:22Z",    "firstViewedAt": "2019-08-24T14:15:22Z",    "lastViewedAt": "2019-08-24T14:15:22Z",    "delivery": "not_requested",    "hasUnsentChanges": true  },  "wordingSource": "ai",  "sections": {    "strengths": {      "enabled": true,      "items": [        {          "id": "string",          "requirement": "string",          "requirementKey": "string",          "text": "string",          "quote": "string",          "removed": true,          "edited": true,          "warnings": [            {              "code": "banned_phrase",              "match": "string"            }          ]        }      ]    },    "resume": {      "enabled": true,      "items": [        {          "id": "string",          "requirement": "string",          "requirementKey": "string",          "text": "string",          "quote": "string",          "removed": true,          "edited": true,          "warnings": [            {              "code": "banned_phrase",              "match": "string"            }          ]        }      ]    },    "interview": {      "enabled": true,      "items": [        {          "id": "string",          "requirement": "string",          "requirementKey": "string",          "text": "string",          "quote": "string",          "removed": true,          "edited": true,          "warnings": [            {              "code": "banned_phrase",              "match": "string"            }          ]        }      ]    },    "skills": {      "enabled": true,      "items": [        {          "id": "string",          "requirement": "string",          "requirementKey": "string",          "text": "string",          "quote": "string",          "removed": true,          "edited": true,          "warnings": [            {              "code": "banned_phrase",              "match": "string"            }          ]        }      ]    }  },  "practice": {    "enabled": true  },  "personalNote": "string",  "personalNoteWarnings": [    {      "code": "banned_phrase",      "match": "string"    }  ],  "createdAt": "2019-08-24T14:15:22Z",  "updatedAt": "2019-08-24T14:15:22Z"}