diff --git a/Controller/PremiumSongsController.php b/Controller/PremiumSongsController.php
new file mode 100644
index 0000000000000000000000000000000000000000..e49df91abb9a96499925ae7b7ab5a926da6637dd
--- /dev/null
+++ b/Controller/PremiumSongsController.php
@@ -0,0 +1,66 @@
+<?php
+
+namespace Controller;
+
+use Exception;
+use Lib\Enums\Request\HttpStatus;
+use Lib\Interfaces\Routing\IRequest;
+use Lib\Interfaces\Routing\IResponse;
+use Model\Relations\Subscription;
+use Lib\Service\Api\FetchAPI;
+use Service\Soap\SubscribeSoap;
+
+class PremiumSongsController
+{
+
+    static function getPremiumSongs(IRequest $req, IResponse $res)
+    {
+        //data ada
+        $user_id = $req->auth ? $req->auth->user_id : -1;
+        $page = $req->getQuery("page") ?
+            ($req->getQuery("page") > 0 ? $req->getQuery("page") : SubsciberController::DEFAULT_PAGE)
+            : SubsciberController::DEFAULT_PAGE;
+        $limit = $req->getQuery("limit") ?
+            ($req->getQuery("limit") > 0 ? $req->getQuery("limit") : SubsciberController::DEFAULT_LIMIT)
+            : SubsciberController::DEFAULT_LIMIT;
+        $data = SubsciberController::fetchSubscriptions($page, $limit, $user_id, $req->db);
+        if ($data === false) {
+            // return $res->json([
+            //   "status"=>"failed",
+            //   "message"=>"fetch operations failed",
+            //   "data"=>[],
+            //   "errors"=>curl_error($ch)
+            // ]);      
+            return $res->redirect("/", 500);
+        }
+
+        //   $data = json_decode($output,true)["data"];
+        //fetch max page
+        $fetcher = new FetchAPI(getenv("REST_API"));
+        $param = [
+            "page-size" => $limit,
+        ];
+        $rest_key = getenv("REST_KEY");
+        $headers = [
+            "X-API-KEY" => $rest_key
+        ];
+        $output  = $fetcher->get("/singers/max-page", $param, $headers);
+        $total_page = 1;
+        if ($output) {
+            $total_page = json_decode($output, true)["data"];
+        }
+        return $res->view("Pages/PremiumSongs", [
+            "singers" => $data,
+            "page" => $page,
+            "limit" => $limit,
+            "next_page" => $page < $total_page ? $page + 1 : null,
+            "prev_page" => $page > 1 ? $page - 1 : null,
+            "auth" => $req->auth,
+        ]);
+        // return $res->json([
+        //   "status"=>"success",
+        //   "message"=>"premium singers successfully fetched",
+        //   "data"=>$data
+        // ]);
+    }
+};
diff --git a/Controller/TestController.php b/Controller/TestController.php
index 544075ca4029e3714b81e421998cfb4dda877d27..5781af9aff6ca9f16ab42ee59a3a97ea236c8d8c 100644
--- a/Controller/TestController.php
+++ b/Controller/TestController.php
@@ -5,13 +5,30 @@ namespace Controller;
 use Lib\Interfaces\Routing\IRequest;
 use Lib\Interfaces\Routing\IResponse;
 use Service\Soap\TestSoap;
+use Lib\Service\Api\FetchApi;
 
-class TestController {
-  static function soapPing(IRequest $req, IResponse $res) {
+class TestController
+{
+  static function soapPing(IRequest $req, IResponse $res)
+  {
     $test = new TestSoap();
 
     return $res->json([
       "result" => $test->ping(),
     ]);
   }
+
+  static function restExample(IRequest $req, IResponse $res)
+  {
+    $api = new FetchApi(getenv("REST_API"));
+    $key = getenv("REST_KEY");
+
+    $arr = [
+      "name" => "Bayu"
+    ];
+
+    $result = $api->post("/songs/3", json_encode($arr), [
+      "X-API-KEY: $key"
+    ]);
+  }
 }
diff --git a/Lib/Service/Api/FetchAPI.php b/Lib/Service/Api/FetchAPI.php
index 33cd4e1d521e54f6018ea8cd734df325515452cf..96c12fb774dc5d3ff724986875860c7e9cbed05f 100644
--- a/Lib/Service/Api/FetchAPI.php
+++ b/Lib/Service/Api/FetchAPI.php
@@ -35,7 +35,7 @@ class FetchAPI{
         return $output;
     }
 
-    public function post(string $endpoint,array $param, array $headers){
+    public function post(string $endpoint, string $payload, array $headers){
         $url = $this->host . $endpoint;
         //add param
         $ch = curl_init($url);
@@ -47,10 +47,8 @@ class FetchAPI{
         curl_setopt( $ch , CURLOPT_TIMEOUT, 10000);
         //set post payload
         curl_setopt($ch, CURLOPT_POST, 1);
-        $post_payload = "";
-        foreach($param as $key=>$value){
-            $post_payload = $post_payload . $key . "=" . $value . "&";
-        }
+        $post_payload = $payload;
+
         curl_setopt($ch, CURLOPT_POSTFIELDS, $post_payload);
         //set http header
         curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
diff --git a/Router/AppRoutes.php b/Router/AppRoutes.php
index 8bbea5242983a4346aabbcbf151aa77f84439470..4bcd4ee366eb01601616144e1f632dd72d7c1264 100644
--- a/Router/AppRoutes.php
+++ b/Router/AppRoutes.php
@@ -50,7 +50,8 @@ class AppRoutes
     // Admin routes
     $route->groupRoute("/admin", AdminRoutes::getRoutes());
     //premium features
-    $route->groupRoute("/premium",PremiumRouter::getRoutes());
+    $route->groupRoute("/premium", PremiumRouter::getRoutes());
+    $route->groupRoute("/premium/songs", PremiumRouter::getRoutes());
 
     return $route;
   }
diff --git a/Router/PremiumRouter.php b/Router/PremiumRouter.php
index 0e1ae4969f9a17bcb36fe28418af70e0de86bdac..a5e166b3655e892bf50c1336e91da6ab70d51819 100644
--- a/Router/PremiumRouter.php
+++ b/Router/PremiumRouter.php
@@ -1,17 +1,22 @@
 <?php
+
 namespace Router;
 
+use Controller\PremiumSongsController;
 use Controller\SubsciberController;
 use Lib\Dependency;
 use Lib\Enums\Request\HttpMethod;
 use Lib\Interfaces\Routing\IRoute;
 
-class PremiumRouter{
-    static function getRoutes(){
+class PremiumRouter
+{
+    static function getRoutes()
+    {
         $route = new (Dependency::get_dependency(IRoute::class));
         //dapetin list penyanyi permium
-        $route->route(HttpMethod::Get,"/premium",[SubsciberController::class,"getPremiumSinger"]);
-        $route->route(HttpMethod::Post,"/premium/subscribe",[SubsciberController::class,"subscribeSinger"]);
+        $route->route(HttpMethod::Get, "/premium", [SubsciberController::class, "getPremiumSinger"]);
+        $route->route(HttpMethod::Post, "/premium/subscribe", [SubsciberController::class, "subscribeSinger"]);
+        $route->route(HttpMethod::Get, "/premium/songs", [PremiumSongsController::class, "getPremiumSongs"]);
 
         return $route;
     }
diff --git a/View/Pages/PremiumSongs.php b/View/Pages/PremiumSongs.php
new file mode 100644
index 0000000000000000000000000000000000000000..65ce21b80d05a13f890b22f7ba7d31469262c09d
--- /dev/null
+++ b/View/Pages/PremiumSongs.php
@@ -0,0 +1,60 @@
+<?php
+$this->layout("Templates/PageTemplate", [
+    "title" => "Premium Songs | Webtune",
+    "auth" => $auth,
+    "page" => "premium-songs",
+    "styles" => [
+        "/static/css/user.css",
+        "/static/css/pagination.css",
+        "/static/css/premium-singer.css",
+        "/static/css/form.css"
+    ],
+    "scripts" => [
+        "/static/js/premium-singer.js",
+        "/static/js/http.js"
+    ],
+]);
+?>
+
+<h2>Daftar Lagu Premium</h2>
+
+<table>
+    <thead>
+        <tr>
+            <th>No</th>
+            <th>Judul</th>
+            <th>Penyanyi</th>
+            <?php if (isset($auth)) { ?>
+                <th>Putar Lagu</th>
+            <?php } ?>
+        </tr>
+    </thead>
+    <tbody>
+        <?php
+        foreach ($singers as $number => $singer) {
+        ?>
+            <tr>
+                <td><?= (10 * ($page - 1)) + ($number + 1) ?></td>
+                <td><?= $singer["name"] ?></td>
+                <?php if (isset($auth)) { ?>
+                    <td>
+                        <div>
+                            bambank
+                        </div>
+                    </td>
+                    <!--  <input type="hidden" value="<?= $singer["singer_id"] ?>"> -->
+                <?php } ?>
+            </tr>
+        <?php
+        }
+        ?>
+    </tbody>
+</table>
+
+<?php
+$this->component("Component/Pagination", [
+    "page_number" => $page,
+    "next_page" => isset($next_page) && !is_null($next_page) ? "/premium?page=$next_page&limit=$limit" : null,
+    "prev_page" => isset($prev_page) && !is_null($prev_page) ? "/premium?page=$prev_page&limit=$limit" : null,
+])
+?>
\ No newline at end of file
diff --git a/View/Templates/PageTemplate.php b/View/Templates/PageTemplate.php
index 99d827385467fc3a1027beb67d12b46b46ce0d14..da0b5dc55346564b596e3031d0e2ff96fa3fdb3b 100644
--- a/View/Templates/PageTemplate.php
+++ b/View/Templates/PageTemplate.php
@@ -92,6 +92,58 @@ $this->partial("Partials/Header");
           </div>
         </a>
       </li>
+      <li <?= isset($page) && $page === "premium-songs" ? 'class="active"' : "" ?>>
+        <a href="/premium/songs">
+          <div class="navigation__icon">
+            <svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
+	 viewBox="0 0 450.541 450.541" style="enable-background:new 0 0 450.541 450.541;" xml:space="preserve">
+            <path id="XMLID_171_" d="M84.003,62.628c-1.666,2.887-4.692,4.502-7.803,4.502c-1.526,0-3.073-0.39-4.491-1.208l-19.903-11.49
+	c-4.305-2.484-5.779-7.989-3.294-12.294c2.483-4.304,7.985-5.781,12.294-3.294l19.903,11.49
+	C85.014,52.818,86.488,58.323,84.003,62.628z M71.709,222.455l-19.903,11.49c-4.305,2.484-5.779,7.989-3.294,12.294
+	c1.667,2.888,4.691,4.502,7.803,4.502c1.526,0,3.073-0.39,4.491-1.208l19.903-11.49c4.305-2.484,5.779-7.989,3.294-12.294
+	C81.52,221.446,76.018,219.97,71.709,222.455z M62.149,144.188c0-4.971-4.029-9-9-9H30.166c-4.971,0-9,4.029-9,9s4.029,9,9,9h22.983
+	C58.12,153.188,62.149,149.158,62.149,144.188z M374.341,67.129c1.526,0,3.074-0.39,4.491-1.208l19.903-11.491
+	c4.305-2.485,5.779-7.989,3.294-12.294c-2.484-4.304-7.988-5.779-12.294-3.294l-19.903,11.491
+	c-4.305,2.485-5.779,7.989-3.294,12.294C368.205,65.515,371.229,67.129,374.341,67.129z M225.271,37.318c-4.971,0-9,4.029-9,9
+	s4.029,9,9,9c16.063,0,29.131,13.068,29.131,29.131c0,4.971,4.029,9,9,9s9-4.029,9-9C272.402,58.461,251.26,37.318,225.271,37.318z
+	 M284.683,407.301c-0.854,18.946-15.87,33.787-34.185,33.787h-5.627c0.007,0.15,0.011,0.301,0.011,0.453c0,4.971-4.029,9-9,9
+	h-21.221c-4.971,0-9-4.029-9-9c0-0.152,0.004-0.303,0.012-0.453h-5.63c-18.315,0-33.331-14.841-34.186-33.787l-9.599-212.985
+	c-9.218-6.729-17.377-14.736-24.3-23.852c-1.189-1.565-1.833-3.478-1.833-5.443v-38.385c0-4.971,4.029-9,9-9h0.614V85.53
+	C139.74,38.369,178.109,0,225.271,0c47.161,0,85.53,38.369,85.53,85.53v32.105h0.613c4.971,0,9,4.029,9,9v38.385
+	c0,1.966-0.644,3.878-1.832,5.443c-6.921,9.112-15.081,17.12-24.301,23.851l-1.059,23.504c-0.224,4.965-4.407,8.793-9.396,8.586
+	c-4.965-0.224-8.81-4.431-8.586-9.396l0.813-18.045H174.487l3.505,77.786h15.304c4.971,0,9,4.029,9,9s-4.029,9-9,9h-14.492
+	l5.036,111.741c0.419,9.307,7.537,16.598,16.203,16.598h50.455c8.666,0,15.783-7.291,16.202-16.598
+	c0.224-4.966,4.436-8.807,9.396-8.586C281.063,398.129,284.906,402.335,284.683,407.301z M157.74,117.636h135.062V85.53
+	c0-37.236-30.294-67.53-67.53-67.53c-37.237,0-67.531,30.294-67.531,67.53V117.636z M168.532,180.963h113.477
+	c7.679-5.37,14.527-11.763,20.406-19.045v-26.046c-0.926,0.062-153.36,0.063-154.289,0v26.045
+	C154.007,169.202,160.855,175.595,168.532,180.963z M362.924,296.563c5.789,18.314-9.17,27.178-19.068,33.043
+	c-2.071,1.227-5.265,3.119-6.945,4.461c0.589,2.031,2.063,5.341,3.021,7.489c4.7,10.558,11.803,26.511-4.106,37.876
+	c-15.633,11.164-28.672-0.313-37.301-7.908c-1.807-1.59-4.593-4.042-6.389-5.226c-1.749,1.188-4.443,3.614-6.191,5.188
+	c-5.983,5.387-14.097,12.69-23.787,12.692c-4.218,0-8.731-1.383-13.501-4.907c-15.451-11.414-8.567-27.357-4.013-37.907
+	c0.956-2.214,2.429-5.627,3.005-7.707c-1.676-1.299-4.815-3.111-6.855-4.288c-0.172-0.101-0.339-0.202-0.502-0.305
+	c-9.286-5.363-24.567-14.324-18.421-32.739c6.077-18.205,23.362-16.586,34.798-15.519c2.409,0.225,6.106,0.566,8.266,0.472
+	c0.717-1.993,1.47-5.541,1.959-7.844c1.276-6.015,2.597-12.234,5.739-17.45c4.245-7.047,11.018-10.767,19.597-10.767
+	c0.08,0,0.16,0.001,0.24,0.001c19.21,0.151,23.015,17.1,25.531,28.315c0.527,2.35,1.341,5.974,2.099,7.985
+	c2.114,0.066,5.732-0.31,8.079-0.556C339.674,279.756,357.034,277.927,362.924,296.563z M345.761,301.988
+	c-1.111-3.511-2.111-4.554-15.688-3.124c-7.533,0.789-15.302,1.604-20.794-2.382c-5.468-3.976-7.183-11.615-8.842-19.004
+	c-2.878-12.823-4.188-14.229-8.109-14.259c-0.066,0.001-0.145-0.001-0.216-0.001c-3.526,0-4.832,0.857-7.612,13.955
+	c-1.569,7.391-3.192,15.032-8.672,19.012c-5.485,3.981-13.284,3.251-20.827,2.544c-3.712-0.347-6.51-0.53-8.643-0.53
+	c-5.384,0-6.527,1.169-7.414,3.826c-1.139,3.412-0.949,4.929,10.521,11.553c0.139,0.081,0.276,0.165,0.411,0.253
+	c6.464,3.729,13.234,7.638,15.328,14.092c2.084,6.4-1.027,13.607-4.036,20.577c-5.206,12.059-4.973,13.964-1.816,16.295
+	c2.971,2.196,4.397,2.454,14.543-6.681c5.615-5.056,11.418-10.28,18.202-10.28c6.754,0,12.634,5.175,18.319,10.179
+	c9.869,8.687,11.754,9.052,14.946,6.772c3.001-2.144,3.685-3.418-1.875-15.906c-3.072-6.896-6.249-14.028-4.148-20.485
+	c2.081-6.416,8.822-10.41,15.341-14.272C346.008,307.408,346.942,305.728,345.761,301.988z M221.31,228.856c-4.971,0-9,4.029-9,9
+	s4.029,9,9,9h7.923c4.971,0,9-4.029,9-9s-4.029-9-9-9H221.31z M398.735,233.946l-19.903-11.49c-4.309-2.486-9.811-1.01-12.294,3.294
+	c-2.485,4.305-1.011,9.81,3.294,12.294l19.903,11.49c1.418,0.818,2.965,1.208,4.491,1.208c3.11,0,6.137-1.615,7.803-4.502
+	C404.515,241.936,403.04,236.431,398.735,233.946z M420.375,135.188h-22.983c-4.971,0-9,4.029-9,9s4.029,9,9,9h22.983
+	c4.971,0,9-4.029,9-9S425.346,135.188,420.375,135.188z" fill="#4F514F" fill-opacity="1"/>
+            </svg>
+          </div>
+          <div class="navigation__content">
+            Premium Songs
+          </div>
+        </a>
+      </li>
       <?php if (isset($auth) && $auth->is_admin) { ?>
         <li <?= isset($page) && $page === "add-album" ? 'class="active"' : "" ?>>
           <a href="/admin/add-album">