Edit candidate feedback
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
ApiKeyAuthorizationBearer <probb_live_<id>_<secret>>id*stringThe report's ID.
1 <= length <= 200application/json- 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.
items <= 15practice?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.
Success.
application/json- response
object*stringid*stringThe draft's ID.
reportId*stringThe report it was drafted from. A report has at most one.
candidateId*stringThe candidate the feedback is for.
jobId*stringThe job.
status*stringdraft 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.
"draft""released""revoked"revision*integerHow 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.
-9007199254740991 <= value <= 9007199254740991release*Where the feedback stands with the candidate.
wordingSource*stringai when the wording was written by AI and checked, template when the standard wording was used.
"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*stringdate-timeupdatedAt*stringdate-time# 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."}'{ "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"}