diff --git a/apps/files_sharing/api/local.php b/apps/files_sharing/api/local.php
index 308965192b9a6c49717e117a0264f4d374aab28c..84a789f26e4f3eaf2a3c7ab9b879f64b95b6a4a5 100644
--- a/apps/files_sharing/api/local.php
+++ b/apps/files_sharing/api/local.php
@@ -71,6 +71,10 @@ class Local {
 					}
 					$share['icon'] = substr(\OC_Helper::mimetypeIcon($share['mimetype']), 0, -3) . 'svg';
 				}
+
+				if (!is_null($share['token'])) {
+					$share['url'] = \OC::$server->getURLGenerator()->linkToRouteAbsolute('files_sharing.sharecontroller.showShare', ['token' => $share['token']]);
+				}
 			}
 			return new \OC_OCS_Result($shares);
 		}
@@ -143,6 +147,12 @@ class Local {
 		if ($shares === null || empty($shares)) {
 			return new \OC_OCS_Result(null, 404, 'share doesn\'t exist');
 		} else {
+			foreach ($shares as &$share) {
+				if (!is_null($share['token'])) {
+					$share['url'] = \OC::$server->getURLGenerator()->linkToRouteAbsolute('files_sharing.sharecontroller.showShare', ['token' => $share['token']]);
+				}
+			}
+
 			return new \OC_OCS_Result($shares);
 		}
 	}
diff --git a/apps/files_sharing/tests/api.php b/apps/files_sharing/tests/api.php
index d5a6fd5b657f55623a6a2c70b3f08c464f91e6bf..af441b38ff20fc0fb8c2271dff56418d719991ce 100644
--- a/apps/files_sharing/tests/api.php
+++ b/apps/files_sharing/tests/api.php
@@ -307,6 +307,51 @@ class Test_Files_Sharing_Api extends TestCase {
 				\Test_Files_Sharing_Api::TEST_FILES_SHARING_API_USER2);
 	}
 
+	/**
+	 * @medium
+	 * @depends testCreateShare
+	 */
+	function testPublicLinkUrl() {
+		// simulate a post request
+		$_POST['path'] = $this->folder;
+		$_POST['shareType'] = \OCP\Share::SHARE_TYPE_LINK;
+
+		$result = \OCA\Files_Sharing\API\Local::createShare([]);
+		$this->assertTrue($result->succeeded());
+		$data = $result->getData();
+
+		// check if we have a token
+		$this->assertTrue(is_string($data['token']));
+		$id = $data['id'];
+
+		// check for correct link
+		$url = \OC::$server->getURLGenerator()->getAbsoluteURL('/index.php/s/' . $data['token']);
+		$this->assertEquals($url, $data['url']);
+
+		// check for link in getall shares
+		$result = \OCA\Files_Sharing\API\Local::getAllShares([]);
+		$this->assertTrue($result->succeeded());
+		$data = $result->getData();
+		$this->assertEquals($url, current($data)['url']);
+
+		// check for path
+		$_GET['path'] = $this->folder;
+		$result = \OCA\Files_Sharing\API\Local::getAllShares([]);
+		$this->assertTrue($result->succeeded());
+		$data = $result->getData();
+		$this->assertEquals($url, current($data)['url']);
+
+		// check in share id
+		$result = \OCA\Files_Sharing\API\Local::getShare(['id' => $id]);
+		$this->assertTrue($result->succeeded());
+		$data = $result->getData();
+		$this->assertEquals($url, current($data)['url']);
+
+		//Clean up share
+		$fileinfo = $this->view->getFileInfo($this->folder);
+		\OCP\Share::unshare('folder', $fileinfo['fileid'], \OCP\Share::SHARE_TYPE_LINK, null);
+	}
+
 	/**
 	 * @medium
 	 * @depends testCreateShare