bannerColor WARNING_YELLOW templateName stackForums

Groups API

The Groups API provides rich access to read and interact with LinkedIn’s groups functionality. The API enables members to view and interact with groups off of LinkedIn.com with the same business rules that apply on the LinkedIn site. Data available includes group profile information, discussion posts, comments on posts, and likes.

Note: The Groups API only works for the currently logged in member. Information about groups for connections or other members is not available.

Overview

Use the Groups API to:

Usage

You must use an access token to make an authenticated call on behalf of a user

Permissions
This API requires the following permissions (see Member Permissions)

Permission Description
rw_groups Required to retrieve and post group discussions as authenticated user
r_fullprofile Required to retrieve group suggestions as authenticated user (not needed for other groups calls)

Throttle Limits
Please reference the limits applied to this API

Data Storage

Caching of LinkedIn data is not allowed, so API calls should be made on behalf of the member viewing data for every view instance or page refresh.

Display Requirements

When displaying group content, it should be made clear that the content is coming from a LinkedIn group.

  • Ensure correct profile attribution to the poster or commenter, including their profile picture, first-name, last-name and headline.
  • Ensure correct attribution to the group itself, including group logo, and group name.
  • When displaying group posts, enable user actions including like, comment, and flag as inappropriate either through the API or through a link back to the post on linkedin.com.
  • When displaying a LinkedIn member, group or post, provide a link back to the linkedin site instance of the object.

See the full set of legal requirements in LinkedIn’s Terms of Use and Platform Guidelines.

Group Resources and Standard Behavior

The Groups API introduces the following new resources into the LinkedIn REST API domain model. Each new resource has a unique identifying key.

Resource Key Description
Group Numeric group ID The unique identifier for a LinkedIn group
Post Post ID The unique identifier for a LinkedIn post
Comment Comment ID The unique identifier for a LinkedIn comment within a group
Group-membership groupid=<>&memberid=<> The relationship between a member and a group

The
Groups Domain Modellists all the fields available for each of these resources.

Field Selectors

Your application should only request the fields it needs when requesting data about resources. Ensure that your application does not rely on the default fields available; instead always specify the fields it needs and expects to receive using inline field selectors. For example:

You can also nest field selectors. For example:

Collections

A collection is a list of resources, with each resource instance accessible by its unique key. You can use a bulk collection lookup to specify multiple keys to look up in a single request.

Single key lookup:

/groups/12345

Multiple key lookup:

/posts::(1234,5678,9012)

Paginating Through Collections

You can write your application to paginate through groups, posts, comments, and group-memberships collections by index, using the start and count parameters. Collections referenced in field selectors can also be paginated using matrix parameters.

Note:Root collections do not have pagination support.

Parameter Description Default Value
count Number of records to return Integer. Default depends on the resource, but is usually 5.
start Record index at which to start pagination Integer. Default is 0.

Paginating Examples

Return 5 Group Memberships Starting at 0
Return 5 Group Posts Starting at 5
Advanced: Return the First 5 Posts of my First 3 Group Memberships

Note:The previous advanced example uses matrix parameters embedded inside of inline field selectors to paginate within selected fields.

Retrieving a Group's Profile Details

You can access details about one or more groups such as the ID, name, settings, and posts from any groups resource path. Some examples include:

Group Resource Full Field List

Input Values

Parameter Required Definition
group-id Y The unique identifier for a group

Group Memberships for a User

Use the group memberships resource to find the groups a member belongs to, to join groups and/or has requested to join.

Input Values

Parameter Required Definition
group-id N The unique identifier for a group
person-id Y The unique identifier for a user

Collection Filters

Parameter Description Default Value
membership-state The state of the caller’s membership to the specified group. Use the value member to retrieve the groups to which a user belongs. Enum. Values are: non-member, awaiting-confirmation, awaiting-parent-group-confirmation, member, moderator, manager, owner.

Group Membership Full Field List

Get Groups I am a Member Of

Show My Group Settings

Change My Group Settings

<group-membership>
<show-group-logo-in-profile>true</show-group-logo-in-profile>
<email-digest-frequency>
<code>daily</code>
</email-digest-frequency>
<email-announcements-from-managers>true</email-announcements-from-managers>
<allow-messages-from-members>true</allow-messages-from-members>
<email-for-every-new-post>true</email-for-every-new-post>
</group-membership>

Join a Group

Using the Groups API, it is possible to request to join any LinkedIn group that is listed in the LinkedIn.com Groups Directory. This can be achieved in one of two ways.

First, you can PUT a simple membership request via:

<group-membership>
  <membership-state>
    <code>member</code>
  </membership-state>
</group-membership>

The second method involves POSTing additional group settings information with the request, which allows for more control over how the user interacts with the Group on LinkedIn.com. Normally, these settings would need to be adjusted by the user manually in the 'Your Settings' area for each group.

<group-membership>
  <group>
    <id>{group-id}</id>
  </group>
  <show-group-logo-in-profile>true</show-group-logo-in-profile>
  <email-digest-frequency>
    <code>daily</code>
  </email-digest-frequency>
  <email-announcements-from-managers>true</email-announcements-from-managers>
  <allow-messages-from-members>true</allow-messages-from-members>
  <email-for-every-new-post>false</email-for-every-new-post>
  <membership-state>
    <code>member</code>
  </membership-state>
</group-membership>

Note: You can only join groups that are listed in the public directory via the Groups API. In the settings for your group, ensure that 'Display this group in the Groups Directory' is checked.

Leave a Group

Retrieving a Group's Discussion Posts

When the group ID is known, you can access all the posts for the group with optional filters. For example:

/groups/{group-id}/posts
/people/~/group-memberships/{group-id}/posts
/people/~/suggestions/groups/{group-id}/posts

Input Values

Parameter Required Definition
group-id Y The unique identifier for a group

Collection Filters

Parameter Description Default Value
start Record index to start pagination. Supported for posts and post/comments. Positive integer
count Number of records to return. Supported for posts and post/comments. Positive integer
order Sort order for posts. Enum. Valid for: recency, popularity
role Filter for posts related to the caller. Valid only for group-memberships/{id}/posts resource. Enum. Valid for: creator, commenter, follower
category Category of posts. Enum. Valid for: discussion
modified-since Timestamp filter for posts created after the specified value.

Show Latest Discussions for a Group Since a Timestamp

Show Most Popular Discussions for a Group

Show Posts a User has Started for a Group

Show Posts a User has Participated in for a Group

Show Posts a user is Following for a Group

Creating a Group Discussion Post

Sharing content with a post is fairly straight forward. Simply make a POST call to the Groups API:

Passing in the group discussion input

<post>
  <title>New Group Discussion</title>
  <summary>What does everyone think about platform development?</summary>
  <content>
    <submitted-url>https://developer.linkedin.com/forum</submitted-url>
    <submitted-image-url>http:/www.example.com/linkedin.png</submitted-image-url>
    <title>Build the Professional Web with LinkedIn</title>
    <description>A great resource for finding documentation and answers related to developing on the LinkedIn Platform</description>
  </content>
</post>

The 'content' element contains the information of the actual content you're sharing with the group discussion. If we were to view the group on LinkedIn.com, we can see what the post looks like

Interacting with a Discussion Post

When your application needs to drill down into one or more posts directly, you can access the posts resource. The following examples show how to retrieve details about a post, and how to interact with a post.

Input Values

Parameter Required Definition
post-id Y The unique identifier for a post

Post Resource Full Field List

Paginate through all Comments of a Post

Like/Unlike a Post

<is-liked>true</is-liked>

JSON Example:

true
Or:
<is-liked>false</is-liked>

JSON Example:

false

Follow/Unfollow a Post

<is-following>true</is-following>

JSON Example:

true
Or:
<is-following>false</is-following>

JSON Example:

false

Flag a Post as a Promotion or Job

<code>promotion</code>
Or:
<code>job</code>

Delete a Post or Flag as Inappropriate

If the actor is the creator or moderator, this deletes the post. If the actor is a member, this flags the post as inappropriate.

Interacting with Comments

When your application needs to drill down into one or more comments directly, you can access the comments resource. The following examples show how to retrieve details about a comment, and how to interact with a comment.

Input Values

Parameter Required Definition
comment-id Y The unique identifier for a comment

Comment Resource Full Field List

Add a Comment to a Post

<comment>
<text>Comment text</text>
</comment>

Delete a Comment or Flag as Inappropriate

If the actor is the creator or moderator, this deletes the comment. If the actor is a member, this flags the comment as inappropriate.

Suggested Groups for a LinkedIn Member

Get Suggested Groups for a User

Remove a Group Suggestion for a User

Known Issues

The following issues exist for the initial release. Workarounds are available.

  • Comments pagination is inconsistent for bulk fetches of comments for multiple posts.
    Workaround:Comments pagination works as expected for direct access through the root post resource.
  • The post.site-group-post-url parameter uses the incorrect domain.
    Workaround:Replace api.linkedin.com/v1 with www.linkedin.com.