Endorsement API
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.
Feedback
Submit and view feedback for