Docs
API reference

Revoke candidate feedback

POST
/api/v1/reports/{id}/candidate-kit/revoke

Withdraws the candidate's link at once: it stops working, and anyone opening it sees the same not-available page as for an unknown or expired link. The released revisions are kept as the record of what the candidate was sent. Releasing again makes a new link. Revoking feedback that is already revoked changes nothing. The key's owner must be a member or admin. Answers candidate_kit_not_released for feedback that was never released.

Required scope: candidate_feedback:write.

Errors

  • 400: invalid_idempotency_key, unknown_field
  • 401: authentication_required, invalid_api_key
  • 403: api_access_disabled, insufficient_scope, permission_denied
  • 404: candidate_kit_not_found, report_not_found
  • 409: candidate_kit_not_released, idempotency_key_reused, idempotency_request_in_progress
  • 422: 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

Header Parameters

Idempotency-Key?string

Makes retries safe. Repeating a request with the same key and body within 24 hours returns the original response with Idempotent-Replayed: true. The same key with a different body, or from a different API key, returns idempotency_key_reused.

Length1 <= length <= 255

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.# Idempotency-Key is optional. Reuse the same key and body when retrying one logical write.curl --fail-with-body -X POST "$PROBB_URL/api/v1/reports/ID_VALUE/candidate-kit/revoke" \  -H "Authorization: Bearer $PROBB_API_KEY" \  -H "Idempotency-Key: $REQUEST_KEY"
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"}