Sync Application Notes

Application notes should be sent via the Middleware Platform whenever they are created or updated in your ATS. Use both your application identifier and note identifier when syncing application notes via API.

Note

The latest API version is 202603. Use this version in the LinkedIn-Version header for all API requests to access the most recent features and improvements.

Throttle Limits

Throttle Limits Requests Per Day (UTC) Records Per Minute
Application maximum 100,000 10,000

Note

Please submit batch calls grouped with no more than 100 records in sequential order.

Create and Update Application Notes

Use the following endpoint to create and update application notes:

PUT https://api.linkedin.com/v2/atsApplications/atsJobApplicationId={id1}&dataProvider=ATS&integrationContext={organization URN}/notes?ids={note id 1}&ids={note id 2}

Request Body Fields

Field Description Format Required
atsCreatedAt Date record was created in your ATS UTC Epoch Milliseconds No
author The person who wrote the note Actor No
note A note about the application string No

Actor Schema

Field Description Format Required
firstName The first name of the actor. String Required
lastName The last name of the actor String Required

Sample Request

Headers:

Authorization: Bearer {token}
x-restli-method: batch_update

Request Body:

{
  "entities": {
    "APPL_NOTE123": {
      "atsCreatedAt": 1484864187000,
      "note": "Lorem Ipsum.",
      "author": {
        "firstName": "Angela",
        "lastName": "Smith"
      }
    },
    "APPL_NOTE456": {
      "atsCreatedAt": 1484864187000,
      "note": "Lorem Ipsum moreum.",
      "author": {
        "firstName": "Bobby",
        "lastName": "Hill"
      }
    }
  }
}

Sample Response

A successful request will return a 200 OK response code, and you will find the status of each entity in the response body.

Sample Response Body

{
    "errors": {},
    "results": {
        "APPL_NOTE123": {
            "status": 204
        },
        "APPL_NOTE456": {
            "status": 204
        }
    }
}

Note

  • Be sure to check the response for error statuses corresponding to individual entities you submit.

Delete Application Notes

API Details

Perform HTTP DELETE on the endpoint /atsApplications/{JobApplicationIdentifier}/notes to delete application notes. More information is available here.

Use the following endpoint to create and update application notes:

PUT https://api.linkedin.com/rest/applicationNotes

API Request Parameter

Parameter Description Format Required
integrationContext The integration context specifies who owns the note and identifies the customer who owns the data. The value must be in the format urn:li:organization. String Yes
externalJobApplicationId The unique identifier of the job application to which the note belongs within the partner system. String Yes
externalNoteId The unique identifier of the note within the partner system. String Yes

Request Body Fields

Field Description Format Required
author The person who wrote the note. Actor No
note A note about the application. String Yes
externalCreatedAt The time when the note was created in the partner system, represented as an epoch timestamp in milliseconds (UTC). The value must be positive and cannot be a future time. Epoch in Milliseconds (UTC) Yes
externalLastModifiedAt The time when the note was last modified in the partner system, represented as an epoch timestamp in milliseconds (UTC). The value must be positive and cannot be a future time. Epoch in Milliseconds (UTC) Yes

Actor Schema

Field Description Format Required
firstName The first name of the actor. String Required
lastName The last name of the actor. String Required

Sample Request (with query tunneling)

curl --location --request PUT 'https://api.linkedin.com/rest/applicationNotes' \
--header 'Content-Type: multipart/mixed; boundary=xyz' \
--header 'x-restli-method: batch_update' \
--header 'LinkedIn-Version: 202603' \
--header 'X-HTTP-Method-Override: PUT' \
--header 'Authorization: Bearer {token}' \
--data '--xyz
Content-Type: application/x-www-form-urlencoded

ids[0].externalJobApplicationId=app_2025219_0001&ids[0].integrationContext=urn:li:organization:12345&ids[0].externalNoteId=note_20251219_0002
--xyz
Content-Type: application/json

{
  "entities": {
    "externalJobApplicationId=app_2025219_0001&integrationContext=urn:li:organization:12345&externalNoteId=note_20251219_0002": 
    {
            "author": {
                "firstName": "Angela",
                "lastName": "Smith"
            },
            "note": "interview",           
            "externalLastModifiedAt": 1767735410000,
            "externalCreatedAt":1767735410000
    }
  }
}
--xyz--'

Sample Request (without query tunneling)

curl --location --globoff --request PUT 'https://api.linkedin.com/rest/applicationNotes?ids[0].externalJobApplicationId=app_2025219_0001&ids[0].integrationContext=urn%3Ali%3Aorganization%3A12345&ids[0].externalNoteId=note_20251219_0002' \
--header 'Content-Type: application/json' \
--header 'x-restli-method: batch_update' \
--header 'LinkedIn-Version: 202603' \
--header 'Authorization: Bearer {token}' \
--data '{
  "entities": {
    "externalJobApplicationId=app_2025219_0001&integrationContext=urn:li:organization:12345&externalNoteId=note_20251219_0002": 
    {
            "author": {
                "firstName": "kathy",
                "lastName": "gao"
            },
            "note": "interview",           
            "externalLastModifiedAt": 1766187260000,
            "externalCreatedAt":1766187260000

    }
  }
}'

Sample Response

{
  "results": {
    "externalJobApplicationId=app_20251219_0001&externalNoteId=note_20251219_0002&integrationContext=urn%3Ali%3Aorganization%3A12345": {
      "status": 204
    }
  },
  "errors": {}
}

Delete application notes

Sample Request (with query tunneling)

curl --location --request DELETE 'https://api.linkedin.com/rest/applicationNotes?=null' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--header 'LinkedIn-Version: 202603' \
--header 'X-HTTP-Method-Override: DELETE' \
--header 'Authorization: Bearer {token}' \
--data 'ids[0].externalJobApplicationId=app_2025219_0001&ids[0].integrationContext=urn:li:organization:12345&ids[0].externalNoteId=note_20251219_0002'

Sample Request (without query tunneling)

curl --location --globoff --request DELETE 'https://api.linkedin.com/rest/applicationNotes?ids[0].externalJobApplicationId=app_2025219_0001&ids[0].integrationContext=urn%3Ali%3Aorganization%3A12345&ids[0].externalNoteId=note_20251219_0002' \
--header 'Content-Type: application/json' \
--header 'LinkedIn-Version: 202603' \
--header 'Authorization: Bearer {token}'

Sample Response

{
  "results": {
    "externalJobApplicationId=app_2025219_0001&externalNoteId=note_20251219_0002&integrationContext=urn%3Ali%3Aorganization%3A12345": {
      "status": 204
    }
  },
  "errors": {}
}