Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
The Candidate Pipeline endpoint represents information about a candidate that is specific to a single pipeline. A candidate’s pipeline information should be synced to the Middleware Platform whenever a candidate is added to, removed from, or updated inside a pipeline in your CRM. When a customer activates CRM Connect for the first time, you must sync all of their historical data to LinkedIn to power the integration.
Throttle Limits
Throttle Limits | Requests Per Day (UTC) | Records Per Minute |
---|---|---|
Candidate Pipelines maximum | 100,000 | 10,000 |
Note
Please submit batch calls grouped with no more than 100 records in sequential order.
Sync Candidate Pipelines API Endpoint
https://api.linkedin.com/v2/tcrmCandidatePipelines
Candidate Pipelines API Query String Parameters
Parameter | Description | Type | Required |
---|---|---|---|
tcrmCandidateId | Candidate identifier within external Talent CRM | String | Required |
tcrmPipelineId | Pipeline identifier within external Talent CRM | String | Required |
integrationContext | LinkedIn company URN provided during customer onboarding, e.g. urn:li:organization:1 |
String | Required |
dataProvider | Hardcoded, this value is always PARTNER |
String | Required |
Sync Candidate Pipelines via Batch Update
Perform HTTP PUT
on the /tcrmCandidatePipelines
endpoint to sync candidate pipeline associations to LinkedIn. Batch requests require the x-restli-method: batch_update
header. Multiple records can be sent in a single API request as indicated in the example below.
Sync Candidate Pipelines API Request Body Fields
Field | Description | Type | Required |
---|---|---|---|
dispositionReason | The reason that the candidate was removed from the pipeline (e.g., “candidate declined,” “not a fit,” etc.) | String | Optional |
sources | Contains sourceDetails and source Category . |
Complex | Required |
sources.sourceCategory | Category of where the candidate originated from. Must be one of these source categories:
|
ENUM | Required |
sources.sourceDetails | Where the candidate originated from (i.e. LinkedIn, Career Event, etc). | String | Required |
tcrmCreatedAt | Time when this candidate was put in this pipeline within external CRM. | Time | Required |
tcrmLastModifiedAt | The timestamp when the content was last modified within external CRM, in milliseconds since Unix Epoch. | Time | Required |
Sample Batch Update Candidate Pipelines API Request
curl -i -X PUT 'https://api.linkedin.com/v2/tcrmCandidatePipelines?ids%5B0%5D.tcrmCandidateId=tcrmCandidateId100&ids%5B0%5D.integrationContext=urn:li:organization:1234567890&ids%5B0%5D.dataProvider=PARTNER&ids%5B0%5D.tcrmPipelineId=tcrmPipeline05&ids%5B1%5D.tcrmCandidateId=tcrmCandidateId100&ids%5B1%5D.integrationContext=urn:li:organization:1234567890&ids%5B1%5D.dataProvider=PARTNER&ids%5B1%5D.tcrmPipelineId=tcrmPipeline06' \
--header 'x-restli-method: batch_update' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer {access_token}' \
--data-raw '
{
"entities": {
"tcrmCandidateId=tcrmCandidateId100&dataProvider=PARTNER&integrationContext=urn:li:organization:1234567890&tcrmPipelineId=tcrmPipeline05": {
"dispositionReason": "Disposition Reason",
"sources": [{
"sourceCategory": "CAREER_SITE",
"sourceDetails": "Applied through career site"
}],
"tcrmCreatedAt": 1640995200000,
"tcrmLastModifiedAt": 1640995200000
},
"tcrmCandidateId=tcrmCandidateId100&dataProvider=PARTNER&integrationContext=urn:li:organization:1234567890&tcrmPipelineId=tcrmPipeline06": {
"dispositionReason": "Disposition Reason",
"sources": [{
"sourceCategory": "CAREER_SITE",
"sourceDetails": "Applied through career site"
}],
"tcrmCreatedAt": 1640995200000,
"tcrmLastModifiedAt": 1640995200000
}
}
}
Sample Batch Update Candidate Pipelines API Response
{
"results": {
"dataProvider=PARTNER&integrationContext=urn%3Ali%3Aorganization%3A1234567890&tcrmCandidateId=tcrmCandidateId100&tcrmPipelineId=tcrmPipeline05": {
"status": 204
},
"dataProvider=PARTNER&integrationContext=urn%3Ali%3Aorganization%3A1234567890&tcrmCandidateId=tcrmCandidateId100&tcrmPipelineId=tcrmPipeline06": {
"status": 204
}
},
"errors": {}
}
Delete Candidate Pipelines
Perform HTTP DELETE
on the /tcrmCandidatePipelines
endpoint when a customer deletes candidate pipeline records.
Sample Delete Candidate Pipelines Request
curl -i -X DELETE "https://api.linkedin.com/v2/tcrmCandidatesPipelines?ids%5B0%5D.tcrmCandidateId=tcrmCandidateId100&ids%5B0%5D.integrationContext=urn:li:organization:1234567890&ids%5B0%5D.dataProvider=PARTNER&ids%5B0%5D.tcrmPipelineId=tcrmPipeline05&ids%5B1%5D.tcrmCandidateId=tcrmCandidateId100&ids%5B1%5D.integrationContext=urn:li:organization:1234567890&ids%5B1%5D.dataProvider=PARTNER&ids%5B1%5D.tcrmPipelineId=tcrmPipeline06" \
--header 'Authorization: Bearer {access_token}' \
-H 'X-RestLi-Protocol-Version:1.0.0' \
-H 'Accept:application/json'
Sample Delete Candidate Pipeline Response
A successful request will return a 200 OK
response code, and you will find the status of each entity in the response body.
{
"results": {
"dataProvider=PARTNER&integrationContext=urn%3Ali%3Aorganization%3A1234567890&tcrmCandidateId=tcrmCandidateId100&tcrmPipelineId=tcrmPipeline05": {
"status": 204
},
"dataProvider=PARTNER&integrationContext=urn%3Ali%3Aorganization%3A1234567890&tcrmCandidateId=tcrmCandidateId100&tcrmPipelineId=tcrmPipeline06": {
"status": 204
}
},
"errors": {}
}