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.
LinkedIn's Provisioning APIs allow Partners to create and configure developer applications on behalf of their Customers which is an initial step in managing and enabling their integrations.
Getting Started
Requesting Access
In order to access the specialized Provisioning APIs, reach out to a LinkedIn Partner Engineering representative to have a developer application configured with the required permissions.
All API requests require 2-legged tokens for authentication.
Create Application
Use the following endpoint to create a child application:
Method | Endpoint |
---|---|
POST | https://api.linkedin.com/v2/provisionedApplications |
Note
A header with 'Content-Type' set to application/json is required for creating a Child Application.
Create Request Body Fields
Field | Description | Format | Required |
---|---|---|---|
uniqueForeignId | A unique ID that represents the child application being created, as seen from the parent/calling application. This value must be unique across all child applications that belong to the parent application. Attempting to create more than one child with the same uniqueForeignId value will result in a conflict error. Use your customer identifier for this value. | String | Yes |
name | Display name of the child application. This value will be shown to users in the OAuth 2.0 authorization dialog for 3-legged scenarios. Additionally, it will be used by LinkedIn as a reference value. Note: Usage of "LinkedIn" in name is no supported. |
String (max 50 chars) | Yes |
description | A brief description of the child application. This value is only used by LinkedIn administration and is not shown to end-users of the application. | String | Yes |
oauth2AuthorizedCallbackUrls | List of fully qualified OAuth 2.0 redirect URLs to allow. | String[] | No |
validJsSdkDomains | List of fully qualified JavaScript SDK domain names. | String[] | No |
Sample Create Request Body
{
"uniqueForeignId": "07d5284a-d0a1-45a3-93c0-ac69c9c78",
"name": "Name",
"description": "My favorite customer",
"oauth2AuthorizedCallbackUrls": [
"https://www.foo.com/",
"https://www.bar.com/"
],
"validJsSdkDomains": ["https://www.foo.js", "https://www.bar.js"]
}
Create Response Code
A successful request will return a 201 Created
response code.
Create Response Body Fields
Field | Description | Format |
---|---|---|
key | URN representing the application that was created. | String |
credentials.client_id | Client ID value used during OAuth 2.0 token request flow. | String |
credentials.client_secret | Client Secret value used during OAuth 2.0 token request flow. May be up to 256 characters in length and contain non-alphanumeric characters. | String |
Sample Create Response
{
"key": "urn:li:developerApplication:234",
"credentials": {
"client_id": "1234567890",
"client_secret": "ABCDEFGHIJKL"
}
}
Update Application
Use the following endpoint to update a child application:
Method | Endpoint |
---|---|
POST | https://api.linkedin.com/v2/provisionedApplications/{developer application URN} |
Note
This action will write over the existing fields with the request body of this POST call. As such, be sure to take note of what was available previously if you are adding additional validJsSdkDomains or oauth2AuthorizedCallbackUrls.
Update Request Body Fields
Field | Description | Format | Required |
---|---|---|---|
name | Display name of the child application. This value will be shown to users in the OAuth 2.0 auth dialog for 3-legged flows. Additionally, it will be used by LinkedIn as a reference value. Note: Usage of "LinkedIn" in name is no supported. |
String (50 char. max) | No |
description | A brief description of the child application. This value is only used by LinkedIn administration and is not shown to end-users of the application. | String | No |
oauth2AuthorizedCallbackUrls | List of fully qualified OAuth 2.0 redirect URLs to allow. | String | No |
validJsSdkDomains | List of fully qualified JavaScript SDK domain names. | String | No |
Sample Update Request Body
{
"patch": {
"$set": {
"validJsSdkDomains": ["https://www.foo.js", "https://www.bar.js", "https://www.foobar.com/"],
"name": "New Name",
"description": "My most favorite customer",
"oauth2AuthorizedCallbackUrls": [
"https://www.foo.com/",
"https://www.bar.com/",
"https://www.foobar.com/"
]
}
}
}
Update Response Code
A successful request will return a 204 No Content
response code.
Get Application
Use the following endpoint to get attributes of a child application:
Method | Endpoint |
---|---|
GET | https://api.linkedin.com/v2/provisionedApplications?q=credentialsByUniqueForeignId&uniqueForeignId={uniqueForeignId} |
Get Request Parameters
Field | Description | Format | Required |
---|---|---|---|
uniqueForeignId | Unique ID of the child application supplied during the creation of the child application. | String | Yes |
Get Response Code
A successful request will return a 200 OK
response code.
Sample Get Response
{
"elements": [
{
"credentials": {
"client_id": "123abc456defga"
},
"uniqueForeignId": "Unique Foreign ID",
"name": "Test Application",
"description": "This is my test application",
"validJsSdkDomains": ["http://linkedin.com", "https://linkedin.com"],
"key": "urn:li:developerApplication:1234567",
"oauth2AuthorizedCallbackUrls": [
"https://www.linkedin.com.com/oauth2/callback",
"http://www.linkedin.com/oauth2/callback"
]
}
]
}
Delete Application
Use the following endpoint to delete a child application:
Method | Endpoint |
---|---|
DELETE | https://api.linkedin.com/v2/provisionedApplications/{developer application URN} |
Important
If you are deleting an application and re-creating it, use the same Bearer token in each request to avoid propagation issues. Deleting an application will make ALL existing tokens minted by that application unusable.
Delete Response Code
A successful request will return a 204 No Content
response code.
Error Codes
The following error codes can be returned:
Error Code | Description |
---|---|
404: uniqueForeignId not found | In the situation where the requested foreign ID is not found to be associated with an application managed by the parent application making the request, an HTTP 404 response is returned. |
409: uniqueForeignId already exists | In the case where a create call is made and a uniqueForeignID value is provided that is already associated to a child application controlled by the parent calling application, an HTTP 409 - Conflict response code is returned. A parent application will not accept the creation of multiple tenant applications that share the same uniqueForeignId value. |
429: request limit exceeded | If the calling application has exceeded its call throttle limits, an HTTP 429 – Too Many Requests status code is returned. |