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.
Note
Usage of this API is restricted to approved partners, subject to limitations via API agreement.
All API requests are represented in protocol 2.0.0. Therefore, all API requests require the header X-Restli-Protocol-Version: 2.0.0
With the Endorsement API, you can replicate the full LinkedIn experience around endorsing skills of LinkedIn members.
Create Endorsements
Send an endorsement by issuing a POST that specifies the recipient and his/her skill. You can only send endorsements on behalf of the authenticated user.
POST https://api.linkedin.com/v2/endorsement
Request Body Fields
| Field | Sub-Field | Description | Format | Required |
|---|---|---|---|---|
| recipient | The recipient entity id | Person Urn | Yes | |
| item | Entity for a recipient that can be endorsed. | Yes | ||
| nonStandardEntity. entityPhrase | The value of the entity skill being endorsed. For example: JAVA | String | Yes | |
| nonStandardEntity. entityType | The type of entity. Always the enum PROFILE_SKILL | String | Yes | |
| status | Status of the Endorsement. Can be the following enum values:
|
String | Yes |
sample request body
{
"item": {
"nonStandardEntity": {
"entityPhrase": "JAVA",
"entityType": "PROFILE_SKILL"
}
},
"recipient": "urn:li:person:123ABC",
"status": "ACCEPTED"
}
sample response header
X-RestLi-Id: urn:li:endorsement:(urn:li:person:123ABC,123456)
Retrieve Endorsements
Once an endorsement has been created, you can retrieve that endorsement by taking the endorsement URN (urn:li:endorsement:(personUrn,12345)) value returned in the X-RestLi-Id header.
GET https://api.linkedin.com/v2/endorsement/urn:li:endorsement:(urn:li:person:123ABC,123456)
Above is the API request represented in pretty print. With X-Restli-Protocol-Version: 2.0.0, you will need to do the following:
GET https://api.linkedin.com/v2/endorsement/urn%3Ali%3Aendorsement%3A%28urn%3Ali%3Aperson%3A123ABC%2C123456%29
sample response body
{
"created": 1486746325406,
"endorser": "urn:li:person:456DEF",
"id": 123456,
"item": {
"nonStandardEntity": {
"entityPhrase": "Java",
"entityType": "PROFILE_SKILL"
}
},
"lastModified": 1486746325406,
"recipient": "urn:li:person:123ABC",
"status": "ACCEPTED"
}
For more information, refer to the Endorsement schema.
Alternatively, you can lookup multiple endorsements by doing the following:
GET https://api.linkedin.com/v2/endorsement?ids=List(urn:li:endorsement:(urn:li:person:123ABC,123456),urn:li:endorsement:(urn:li:person:123ABC,456789))
Above is the API request represented in pretty print. With X-Restli-Protocol-Version: 2.0.0, you will need to do the following:
GET https://api.linkedin.com/v2/endorsement?ids=List(urn%3Ali%3Aendorsement%3A%28urn%3Ali%3Aperson%3A123ABC%2C123456%29,urn%3Ali%3Aendorsement%3A%28urn%3Ali%3Aperson%3A123ABC%2C456789%29)
Retrieve Endorsements by Endorser
You can look up an endorser's endorsement by requesting the following API:
GET https://api.linkedin.com/v2/endorsement?q=endorser&statusFilters=List(ACCEPTED,PENDING)
Query Parameters
| Field | Description | Required | Format |
|---|---|---|---|
| statusFilters | Can be of the following endorsement enum status:
|
Yes | List of string |
sample response
{
"elements": [
{
"status": "ACCEPTED",
"created": 1486746325406,
"lastModified": 1486746325406,
"endorser": "urn:li:person:456DEF",
"item": {
"nonStandardEntity": {
"entityType": "PROFILE_SKILL",
"entityPhrase": "Java"
}
},
"recipient": "urn:li:person:123ABC",
"id": 123456
},
{
"status": "ACCEPTED",
"created": 1486746325406,
"lastModified": 1486746325406,
"endorser": "urn:li:person:456DEF",
"item": {
"nonStandardEntity": {
"entityType": "PROFILE_SKILL",
"entityPhrase": "C++"
}
},
"recipient": "urn:li:person:123ABC",
"id": 234567
},
...
],
"paging": {
"count": 5,
"start": 5,
"total": 11,
"links": [
{
"href": "/v2/endorsement?q=endorser&count=5&start=0&statusFilters=List(ACCEPTED)",
"type": "application/json",
"rel": "prev"
},
{
"href": "/v2/endorsement?q=endorser&count=5&start=10&statusFilters=List(ACCEPTED)",
"type": "application/json",
"rel": "next"
}
]
}
}
Note
To paginate through all the endorsement data, please use the href link referenced in the paging section.
Due to performance reasons, we recommend fetching 100 elements per request, hence setting count=100. In addition, please disregard the total number since it is incorrect.
Retrieve Endorsements by Recipient
You can look up an endorser's endorsement by requesting the following API:
GET https://api.linkedin.com/v2/endorsement?q=recipient&statusFilters=List(ACCEPTED,PENDING)
Query Parameters
| Field | Description | Required | Format |
|---|---|---|---|
| statusFilters | Can be of the following endorsement enum status:
|
Yes | List of string |
sample response
{
"elements": [
{
"status": "ACCEPTED",
"created": 1486746325406,
"lastModified": 1486746325406,
"endorser": "urn:li:person:456DEF",
"item": {
"nonStandardEntity": {
"entityType": "PROFILE_SKILL",
"entityPhrase": "Java"
}
},
"recipient": "urn:li:person:123ABC",
"id": 123456
},
{
"status": "ACCEPTED",
"created": 1486746325406,
"lastModified": 1486746325406,
"endorser": "urn:li:person:456DEF",
"item": {
"nonStandardEntity": {
"entityType": "PROFILE_SKILL",
"entityPhrase": "C++"
}
},
"recipient": "urn:li:person:123ABC",
"id": 234567
},
...
],
"paging": {
"count": 5,
"start": 5,
"total": 11,
"links": [
{
"href": "/v2/endorsement?q=recipient&count=5&start=0&statusFilters=List(ACCEPTED)",
"type": "application/json",
"rel": "prev"
},
{
"href": "/v2/endorsement?q=recipient&count=5&start=10&statusFilters=List(ACCEPTED)",
"type": "application/json",
"rel": "next"
}
]
}
}
Note
To paginate through all the endorsement data, please use the href link referenced in the paging section.
Due to performance reasons, we recommend fetching 100 elements per request, hence setting count=100. In addition, please disregard the total number since it is incorrect.
Update Endorsements
You can update an endorsement status of one you have given or received by doing the following:
POST https://api.linkedin.com/v2/endorsement/urn:li:endorsement:(urn:li:person:123ABC,123456)
Above is the API request represented in pretty print. With X-Restli-Protocol-Version: 2.0.0, you will need to do the following:
POST https://api.linkedin.com/v2/endorsement/urn%3Ali%3Aendorsement%3A%28urn%3Ali%3Aperson%3A123ABC%2C123456%29
sample request
{
"patch": {
"$set": {
"status": "HIDDEN"
}
}
}
The only field that can be updated is the status. The updated status can only be ACCEPTED, HIDDEN, or REJECTED for the recipient. The endorser can only update the status to DELETED (unendorse action). The partial update will not succeed for any other type of updates.