Developer Program Transition Guide

In 2015, we made a series of changes to LinkedIn's self-serve developer program. If your LinkedIn API access is being adjusted to align with the APIs that are currently available through the self-serve developer program, please review this guide for more technical information about how your application will be impacted and how to prepare for the changes to your API access.

Please read through this guide for more information about what has changed and some helpful troubleshooting tips if you are experiencing errors with your LinkedIn API integration.

What's changed

API availability

Several REST API endpoints are no longer available for self-serve use.  The following endpoints and corresponding member permissions are the only ones that remain available for self-serve use:

  • Profile API: /v1/people/~ - r_basicprofile, r_emailaddress
  • Share API: /v1/people/~/shares - w_share
  • Companies API: /v1/companies/{id} - rw_company_admin

To access any other APIs (Full Profile, Connections, Groups, People Search, Messaging, Jobs, Network Updates), developers must apply and be accepted to a specific Partner Program. The following member permissions are no longer available through the self-serve developer program: r_fullprofile, r_network, r_contactinfo, rw_nus, rw_groups, w_messages.

New sharing permission

The rw_nus member permission is no longer available via the self-serve developer program. Going forward, to share content on behalf of a LinkedIn member, your application must use the w_share member permission.

Thew_share permission will grant your application permission to post content on LinkedIn, but you will not be able to read shared content from a user's LinkedIn feed using this API.  We suggest you transition to w_share as soon as possible if you currently use rw_nus and want to share content on behalf of LinkedIn members.

Note that users with existing OAuth grants will have to re-authenticate due to the change in requested permissions.

New requirement for Companies API

All calls to Companies API endpoints will require the authenticated user to be flagged as an administrator of the LinkedIn Company Page that is the target of the API call.  You become the administrator of a page when you create it.  If the page already exists, you will have to contact the existing administrator to grant admin access to other LinkedIn members.

Your API call will return a 403 Forbidden error if you do not have the appropriate admin permission to interact with the target company.

API Terms of Use

Please review LinkedIn's API Terms of Use to ensure you comply with any continued usage of LinkedIn's self-serve APIs.

Miscellany, errata, etc.

The id field is now returned by default in a default Profile API request.

Troubleshooting

If you have not yet adjusted your application to work around these changes, you will begin to see critical errors occuring now, or in the near future when your authentication tokens next expire.  Here are some tips for resolving common potential issues:

  1. The most common problem that will occur as a result of the API changes is that your authentication workflow will fail because your app is attempting to request member permissions that you no longer have access to.

    To correct this issue, ensure that the scope parameter in your authorization workflow is no longer requesting any of the following member permissions:

    r_fullprofile, r_network, r_contactinfo, rw_nus, rw_groups, w_messages.

    Alternatively, if you rely on the default scope rather than explicitly passing your own scope values, go into the "Authentication" tab of your application's configuration and ensure you've unchecked all of the member permissions listed above from the Default Application Permissions section of the configuration.

    Pay special attention to any 3rd party libraries that you are using for authenticating with LinkedIn, as they may be asking for more member permissions than you realize!

    Note that by removing member permissions, you may also be required to remove API calls that depend on those permissions being present, so you will need to thoroughly review your application and ensure that all of the API calls that it makes can be done under the remaining member permissions.
  2. A common issue that can occur is that you are attempting to make a call to the Companies API to retrieve data for a company that the user is not an administrator of.  Since this call was not previously restricted in this way, it is probable that even though you or your users believe that you are administrators of your company, that this is not actually the case and you are now restricted from making Companies API calls that you believe you should be able to.

    To work around this issue, first ensure that LinkedIn identifies you or your application's users as administrators of a Company Page.  Second, code your application defensively by programmatically checking that the current user is a valid administrator, before attempting to make a Companies API call.
  3. Over the default access token lifecycle, even after your LinkedIn API access changes, your application may still have some users with an access token that allows them to call APIs that are no longer available to you.
    When your API access changes, your application may not immediately expierence the impact of the changes until your current user access tokens start to expire and you are forced to refresh them to continue making API calls. Please ensure your application is prepared to handle access tokens that were granted before your API access was changed so that they do not request unavailable permissions upon refresh.