Docs
API reference

Preview merging duplicate jobs

POST
/api/v1/jobs/{id}/merge-preview

Shows exactly what POST /v1/jobs/{id}/merge would do with the same body, and changes nothing: what moves to the kept job (reports, interviews, hiring decisions, talent history), the fields it gains or keeps, two reports for the same candidate (every report is kept), clashing decisions (the more recent stays), and blockers that would stop a merge right now.

Required scope: jobs:read (jobs:write also works).

Errors

  • 400: invalid_content_type, invalid_json, request_body_too_large, unknown_field
  • 401: authentication_required, invalid_api_key
  • 403: api_access_disabled, insufficient_scope
  • 404: job_not_found
  • 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 job's ID.

Length1 <= length <= 200

Request Body

application/json
  1. body
mergeIds*array<>

The duplicate jobs to fold into this one, at most 10. List each once, and not the one you keep.

Items1 <= items <= 10

Response Body

Success.

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

The record that stays.

keeperName*string
mergeable*boolean

False while blockers is not empty: a merge now answers merge_work_in_progress or merge_not_ready.

blockers*array<>
sources*array<>
totals*
irreversible*boolean

A merge deletes the merged records and cannot be undone. Nothing is refunded.

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 POST "$PROBB_URL/api/v1/jobs/ID_VALUE/merge-preview" \  -H "Authorization: Bearer $PROBB_API_KEY" \  -H 'Content-Type: application/json' \  --data-binary '{  "mergeIds": [    "job_duplicate_1"  ]}'
Example Response
{  "object": "job_merge_preview",  "keeperId": "string",  "keeperName": "string",  "mergeable": true,  "blockers": [    {      "id": "string",      "name": "string",      "reason": "active_work",      "message": "string"    }  ],  "sources": [    {      "id": "string",      "name": "string",      "fieldChanges": [        {          "field": "string",          "kept": "string",          "dropped": "string"        }      ],      "inheritsExternalId": true,      "reports": -9007199254740991,      "interviews": -9007199254740991,      "decisions": -9007199254740991,      "decisionConflicts": [        {          "counterpart": "string",          "kept": "string",          "merged": "string",          "winner": "kept"        }      ],      "duplicateReportsFor": [        "string"      ],      "matchAssessments": -9007199254740991,      "talentSearches": -9007199254740991    }  ],  "totals": {    "reports": -9007199254740991,    "interviews": -9007199254740991,    "decisions": -9007199254740991  },  "irreversible": true}