diff --git a/CHANGELOG b/CHANGELOG
index 70eee44b6793969821a94219210d3c9f9dcceac8..b539e20f5d93c08cfa7042df31ca3c9d382d9b3c 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,4 +1,6 @@
 Please view this file on the master branch, on stable branches it's out of date.
+v 8.13.0 (unreleased)
+  - Expose expires_at field when sharing project on API
 
 v 8.12.0 (unreleased)
   - Update the rouge gem to 2.0.6, which adds highlighting support for JSX, Prometheus, and others. !6251
diff --git a/doc/api/projects.md b/doc/api/projects.md
index 750ce1508df3ba99ecb2ed26301d2824390c9cbb..869907b0dd70fd72ab9493e7aee09d7549625b1c 100644
--- a/doc/api/projects.md
+++ b/doc/api/projects.md
@@ -899,6 +899,7 @@ Parameters:
 - `id` (required) - The ID or NAMESPACE/PROJECT_NAME of the project to be forked
 - `group_id` (required) - The ID of a group
 - `group_access` (required) - Level of permissions for sharing
+- `expires_at` - Share expiration date in ISO 8601 format: 2016-09-26
 
 ## Hooks
 
diff --git a/lib/api/entities.rb b/lib/api/entities.rb
index 92a6f29adb0b7840611ee1e8d802e4085ee61e2a..29ad9f3565a6709a6c89a6de910584b023d88b46 100644
--- a/lib/api/entities.rb
+++ b/lib/api/entities.rb
@@ -343,7 +343,7 @@ module API
     end
 
     class ProjectGroupLink < Grape::Entity
-      expose :id, :project_id, :group_id, :group_access
+      expose :id, :project_id, :group_id, :group_access, :expires_at
     end
 
     class Todo < Grape::Entity
diff --git a/lib/api/projects.rb b/lib/api/projects.rb
index 6d99617b56ffa84d60149470d13bce26be06bf28..680055c95ebf655180c59e2a54b559e12b05eff1 100644
--- a/lib/api/projects.rb
+++ b/lib/api/projects.rb
@@ -393,23 +393,24 @@ module API
       # Share project with group
       #
       # Parameters:
-      #   id (required) - The ID of a project
-      #   group_id (required) - The ID of a group
+      #   id (required)           - The ID of a project
+      #   group_id (required)     - The ID of a group
       #   group_access (required) - Level of permissions for sharing
+      #   expires_at (optional)   - Share expiration date
       #
       # Example Request:
       #   POST /projects/:id/share
       post ":id/share" do
         authorize! :admin_project, user_project
         required_attributes! [:group_id, :group_access]
+        attrs = attributes_for_keys [:group_id, :group_access, :expires_at]
 
         unless user_project.allowed_to_share_with_group?
           return render_api_error!("The project sharing with group is disabled", 400)
         end
 
-        link = user_project.project_group_links.new
-        link.group_id = params[:group_id]
-        link.group_access = params[:group_access]
+        link = user_project.project_group_links.new(attrs)
+
         if link.save
           present link, with: Entities::ProjectGroupLink
         else
diff --git a/spec/requests/api/projects_spec.rb b/spec/requests/api/projects_spec.rb
index 192c7d14c13a9d6def0965777d839d1f98e07b01..4a0d727faeaf7535fd43f99933f3437b84b845c2 100644
--- a/spec/requests/api/projects_spec.rb
+++ b/spec/requests/api/projects_spec.rb
@@ -761,13 +761,16 @@ describe API::API, api: true  do
     let(:group) { create(:group) }
 
     it "shares project with group" do
+      expires_at = 10.days.from_now.to_date
+
       expect do
-        post api("/projects/#{project.id}/share", user), group_id: group.id, group_access: Gitlab::Access::DEVELOPER
+        post api("/projects/#{project.id}/share", user), group_id: group.id, group_access: Gitlab::Access::DEVELOPER, expires_at: expires_at
       end.to change { ProjectGroupLink.count }.by(1)
 
       expect(response.status).to eq 201
-      expect(json_response['group_id']).to eq group.id
-      expect(json_response['group_access']).to eq Gitlab::Access::DEVELOPER
+      expect(json_response['group_id']).to eq(group.id)
+      expect(json_response['group_access']).to eq(Gitlab::Access::DEVELOPER)
+      expect(json_response['expires_at']).to eq(expires_at.to_s)
     end
 
     it "returns a 400 error when group id is not given" do