diff --git a/bundle.go b/bundle.go
index 43f243e..b2206ea 100644
--- a/bundle.go
+++ b/bundle.go
@@ -15,6 +15,7 @@
 
 import (
 	"encoding/base64"
+	"encoding/json"
 	"fmt"
 	"io"
 	"io/ioutil"
@@ -28,7 +29,7 @@
 )
 
 const (
-	blobStoreUri = "/v1/blobs/{blobId}/signedurl"
+	blobStoreUri = "/blobs/{blobId}"
 )
 
 type bundleManagerInterface interface {
@@ -55,6 +56,14 @@
 	workers                   []*BundleDownloader
 }
 
+type blobServerResponse struct {
+	Id                       string `json:"id"`
+	Kind                     string `json:"kind"`
+	Self                     string `json:"self"`
+	SignedUrl                string `json:"signedurl"`
+	SignedUrlExpiryTimestamp string `json:"signedurlexpirytimestamp"`
+}
+
 func (bm *bundleManager) initializeBundleDownloading() {
 	atomic.StoreInt32(bm.isClosed, 0)
 	bm.workers = make([]*BundleDownloader, bm.concurrentDownloads)
@@ -211,7 +220,6 @@
 	blobUri.Path += strings.Replace(blobStoreUri, "{blobId}", blobId, 1)
 	parameters := url.Values{}
 	parameters.Add("action", "GET")
-	parameters.Add("key", blobId)
 	blobUri.RawQuery = parameters.Encode()
 
 	uri := blobUri.String()
@@ -221,13 +229,21 @@
 		log.Errorf("Unable to get signed URL from BlobServer %s: %v", uri, err)
 		return "", err
 	}
+	defer surl.Close()
 
-	signedURL, err := ioutil.ReadAll(surl)
+	body, err := ioutil.ReadAll(surl)
 	if err != nil {
 		log.Errorf("Invalid response from BlobServer for {%s} error: {%v}", uri, err)
 		return "", err
 	}
-	return string(signedURL), nil
+	res := blobServerResponse{}
+	err = json.Unmarshal(body, &res)
+	if err != nil {
+		log.Errorf("Invalid response from BlobServer for {%s} error: {%v}", uri, err)
+		return "", err
+	}
+
+	return res.SignedUrl, nil
 }
 
 // downloadFromURI involves retrieving the signed URL for the blob, and storing the resource locally
diff --git a/bundle_test.go b/bundle_test.go
index e848cec..0b8b535 100644
--- a/bundle_test.go
+++ b/bundle_test.go
@@ -18,6 +18,7 @@
 	"net/http"
 
 	"bytes"
+	"encoding/json"
 	"github.com/gorilla/mux"
 	. "github.com/onsi/ginkgo"
 	. "github.com/onsi/gomega"
@@ -166,7 +167,18 @@
 
 	uriString := strings.Replace(bundleTestUrl+b.signedEndpoint, "{blobId}", blobId, 1)
 	log.Debug("dummyBlobServer returnSigned: " + uriString)
-	_, err := io.Copy(w, bytes.NewReader([]byte(uriString)))
+
+	res := blobServerResponse{
+		Id:                       blobId,
+		Kind:                     "Blob",
+		Self:                     r.RequestURI,
+		SignedUrl:                uriString,
+		SignedUrlExpiryTimestamp: time.Now().Add(3 * time.Hour).Format(time.RFC3339),
+	}
+
+	resBytes, err := json.Marshal(res)
+	Expect(err).Should(Succeed())
+	_, err = io.Copy(w, bytes.NewReader(resBytes))
 	Expect(err).Should(Succeed())
 	w.Header().Set("Content-Type", headerSteam)
 }
