Talent Hub Background Check Integration

Important

The use of this API is restricted to those developers approved by LinkedIn and subject to applicable data restrictions in their agreements.

This document can be referred for both Background Check and Reference Check partner integrations.

This integration requires a partnership; please reach out to your LinkedIn Relationship Manager or Business Development contact as you will need to meet certain criteria and sign an API agreement to use this integration.

If you are not yet a LinkedIn Talent Solutions Partner, please complete the LinkedIn Talent Solutions Partner Request Form.

Configure Customer Integration

To configure customer background check integrations, use your application credentials to call the following API:

POST https://api.linkedin.com/v2/hireThirdPartyExtensions/hiringContext={hiringContext}&extensionType={extensionType}&extensionProvider=THIRD_PARTY

Talent Hub customer integration is uniquely identified by a combination of the fields below:

Field Name Description Type
hiringContext Hiring context of the customer in the format of "urn:li:contract:123" URN
extensionType Enum indicating type of integration, in this case "BACKGROUND_CHECK" Enum
extensionProvider You should always supply "THIRD_PARTY" for this field. Enum

Request Body Fields

Field Name Description Type Required
availablePackages Background check packages available for the customer to choose.
Default is empty array.
Use empty array if this is not applicable to your extension.
Array of Background Check Packages No

Background Check Package Fields

Field Name Description Type Required
displayName Multi locale string of the display name of the package. Object Yes
packageId Unique identifier of the package within your system. String Yes

Sample Request

Headers:
Authorization: Bearer {access_token}
x-restli-method: partial_update

Request Body:
{
   "patch": {
      "$set": {
         "providerConfiguration": {
            "backgroundCheckConfiguration": {
               "availablePackages": [
                  {
                     "packageId": "PKG_1305",
                     "displayName": {
                        "localized": {
                           "en_US": "Lorem Ipsum 1"
                        }
                     }
                  },
                  {
                     "packageId": "PKG_1401",
                     "displayName": {
                        "localized": {
                           "en_US": "Lorem Ipsum 2"
                        }
                     }
                  }
               ]
            }
         }
      }
   }
}

Note

A successful request will return a 204 response code.

Receive a Push Event from LinkedIn

When a customer creates a background check request on LinkedIn with your integration, LinkedIn will send a push notification to your callback URL registered during the onboarding process, discussed in the Getting Started documentation. See Receiving Push Notifications for how to validate the request.

POST https://{your application’s registered callback URL}
Field Name Description Type Required
type Type of the push event: CREATE_THIRD_PARTY_BACKGROUND_CHECK in this case. Enum Yes
hiringContext Hiring context of the customer in the format of urn:li:contract:123 URN Yes
backgroundCheckId Unique identifier of the third party background check created within the domain of the hiring context. String Yes
candidateEmailAddress Email address of the candidate being checked. String Yes
packageIds Ids of the background check package selected. Empty if no package is available. String Yes
candidateFirstName First name of the candidate being checked. String Yes
candidateLastName Last name of the candidate being checked. String Yes
requesterFirstName First name of the requester. String Yes
requesterLastName Last name of the requester. String Yes
requesterEmailAddress Email address of the requester. String Yes

Note

The requester fields (requesterFirstName, requesterLastName and requesterEmailAddress) provided by LinkedIn can be used by the provider to validate if the requester has the access rights to create background check request. These requester details can also be embedded by the provider in customer communications.

Sample Request

"Content-Type": "application/json",
"X-LI-Signature": "5a1c2fdbd16fbba7e3816fa3ac3f05835d6bef9364b5c",
"Content-Length": "186",
"Connection": "Keep-Alive",
"Accept-Encoding": "gzip,deflate"

{  
  "type": "CREATE_THIRD_PARTY_BACKGROUND_CHECK",
  "hiringContext": "urn:li:contract:123",
  "backgroundCheckId": "ODE1OGNkNzItYzUxNi00MjBkLTlhMT",
  "candidateEmailAddress": "test-candidate@outlook.com",
  "configuration":{"packageIds":["PKG_1305", "PKG_1401"]},
  "candidateFirstName": "test",
  "candidateLastName": "candidate",
  "requesterEmailAddress": "test-requester@outlook.com",
  "requesterFirstName": "test",
  "requesterLastName": "requester"
}

Note

If a push event sent to the registered callback URL receives an unsuccessful response (something other than “200 OK”), LinkedIn will retry sending the request up to six times.

Update Third Party Background Check Information

After generating a background check entity in your system, use your application credentials to call the following API to update the third party background check link and status in LinkedIn:

POST https://api.linkedin.com/v2/hireThirdPartyBackgroundChecks/hiringContext={hiringContext}&backgroundCheckId={backgroundCheckId}&extensionProvider=THIRD_PARTY

Any third-party Background check request is uniquely identified by a combination of the fields below:

Field Name Description Type
hiringContext Hiring context of the customer in the format of urn:li:contract:123 obtained from push event. URN
backgroundCheckId Unique identifier of the third party background check created within the domain of the hiring context obtained from push event. String
extensionProvider You should always supply THIRD_PARTY for this field. Enum

Request Body Fields

Field Name Description Type Required
backgroundCheckUrl URL to view this background check in your system. LinkedIn customers will be able to use this link to redirect to your system to view the progress and results of this background check Url Yes
status Enum indicating the status of the third party background check:
REQUESTED
PROVIDER_READ
PROVIDER_EXCEPTION
STARTED
COMPLETED - You should supply PROVIDER_READY in this case
Enum Yes
providerExceptionType Optional enum representing type of exception happened on provider side if the provide marks the status as PROVIDER_EXCEPTION
Can be ACCOUNT_NOT_ELIGIBLE
Enum No
extensionProvider You should always supply THIRD_PARTY for this field Enum Yes

Request Body Fields

Field Name Description Type Required
backgroundCheckUrl URL to view this background check in your system. LinkedIn customers will be able to use this link to redirect to your system to view the progress and results of this background check Url Yes
status Enum indicating the status of the third party background check: REQUESTED, PROVIDER_READY, PROVIDER_EXCEPTION, STARTED, COMPLETED. You should supply PROVIDER_READY in this case. Enum Yes
providerExceptionType Optional enum representing type of exception which happened on provider side if the provider marks the status as PROVIDER_EXCEPTION. Options are ACCOUNT_NOT_ELIGIBLE, AUTHENTICATION_FAILURE, TEMPORARILY_UNAVAILABLE, and SERVER_ERROR Enum No
Headers:
Authorization: Bearer {access_token}
x-restli-method: partial_update

Request Body:

{
  "patch": {
    "$set": {
      "backgroundCheckUrl": "https://www.provider-url.com/bgc/8204345-45dsg-4fay",
      "status": "PROVIDER_READY"
    }
  }
}

Update Third Party Background Check Status

When a background check is started or completed, use your application credentials to call the same API above to update the third party background check data in LinkedIn.

POST https://api.linkedin.com/v2/hireThirdPartyBackgroundChecks/hiringContext={hiringContext}&backgroundCheckId={backgroundCheckId}&extensionProvider=THIRD_PARTY

A third-party hire assessment is uniquely identified by a combination of the fields below:

Field Name Description Type
hiringContext Hiring context of the customer in the format of urn:li:contract:123 obtained from push event. URN
backgroundCheckId Unique identifier of the third party background check created within the domain of the hiring context obtained from push event. String
extensionProvider You should always supply THIRD_PARTY for this field. Enum

Request Body Fields

Field Name Description Type Required
status Enum indicating the status of the third party background check: STARTED, COMPLETED
You should supply STARTED or COMPLETED in this case.
Enum Yes
providerExceptionType Optional enum representing type of exception happened on provider side if the provide marks the status as PROVIDER_EXCEPTION
Can be ACCOUNT_NOT_ELIGIBLE
Enum No
Headers:
Authorization: Bearer {access_token}
x-restli-method: partial_update

Request Body:

{
  "patch": {
    "$set": {
      "status": "COMPLETED"
    }
  }
}

Delete a Third Party Background Check

When a customer deletes a third party background check, LinkedIn will send a push event to your registered callback URL. See Receiving Push Notifications for how to validate the request.

Note

Currently, the UI support to delete third-party background check is under development. However, LinkedIn encourages partners to support this feature so it can be consumed immediately when available.

POST https://{your application’s registered callback URL}

Payload Fields

Field Name Description Type Required
type Type of the push notification: DELETE_THIRD_PARTY_BACKGROUND_CHECK in this case. Enum Yes
hiringContext Hiring context of the customer in the format of urn:li:contract:123 URN Yes
backgroundCheckId Unique identifier of the third party background check created within the domain of the hiring context. String Yes

Sample Request

"Content-Type": "application/json",
"X-LI-Signature": "f21aba40ab485921448942827b89af30bc3e46ee440bd37",
"Content-Length": "157",
"Connection": "Keep-Alive",
"Accept-Encoding": "gzip,deflate"

{  
  "type": "DELETE_THIRD_PARTY_BACKGROUND_CHECK",
  "hiringContext": "urn:li:contract:123",
  "backgroundCheckId": "ODE1OGNkNzItYzUxNi00MjBkLTlhMT"
}

Note

If a push event sent to the registered callback URL receives an unsuccessful response (something other than “200 OK”), LinkedIn will retry sending the request up to six times.

Rate Limits and Throttling

All of LinkedIn’s API are subject to rate limiting and throttling based on the number of requests made per unit time. The below limits apply to all API endpoints listed in this doc.

Throttle Limits Request Per Day (UTC) Action
Application Maximum (max requests per app.) 5000 Calls will be rejected with a status code of 429