diff --git a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.html b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.html
index 21ee076..a1a5c02 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.html
+++ b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.html
@@ -20,6 +20,7 @@
 <link rel="import" href="../../shared/gr-button/gr-button.html">
 <link rel="import" href="../../shared/gr-overlay/gr-overlay.html">
 <link rel="import" href="../../shared/gr-request/gr-request.html">
+<link rel="import" href="../../shared/gr-rest-api-interface/gr-rest-api-interface.html">
 
 <link rel="import" href="../gr-diff-preferences/gr-diff-preferences.html">
 <link rel="import" href="../gr-diff-side/gr-diff-side.html">
@@ -57,11 +58,6 @@
         border-right: 1px solid #ddd;
       }
     </style>
-    <gr-ajax id="diffXHR"
-        url="[[_computeDiffPath(changeNum, patchRange.patchNum, path)]]"
-        params="[[_computeDiffQueryParams(patchRange.basePatchNum)]]"
-        last-response="{{_diffResponse}}"
-        loading="{{_loading}}"></gr-ajax>
     <gr-ajax id="baseCommentsXHR"
         url="[[_computeCommentsPath(changeNum, patchRange.basePatchNum)]]"></gr-ajax>
     <gr-ajax id="commentsXHR"
@@ -118,6 +114,7 @@
             on-remove-thread="_handleRemoveThread"></gr-diff-side>
       </div>
     </div>
+    <gr-rest-api-interface id="restAPI"></gr-rest-api-interface>
   </template>
   <script src="gr-diff.js"></script>
 </dom-module>
diff --git a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.js b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.js
index 485e2cc..f91785d 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.js
+++ b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.js
@@ -126,7 +126,8 @@
       this.$.rightDiff.scrollToPreviousCommentThread();
     },
 
-    reload: function(changeNum, patchRange, path) {
+    reload: function() {
+      this._loading = true;
       // If a diff takes a considerable amount of time to render, the previous
       // diff can end up showing up while the DOM is constructed. Clear the
       // content on a reload to prevent this.
@@ -135,9 +136,17 @@
         rightSide: [],
       };
 
+      var diffLoaded = this.$.restAPI.getDiff(
+        this.changeNum,
+        this.patchRange.basePatchNum,
+        this.patchRange.patchNum,
+        this.path).then(function(diff) {
+          this._diffResponse = diff;
+        }.bind(this));
+
       var promises = [
         this._prefsReady,
-        this.$.diffXHR.generateRequest().completes
+        diffLoaded,
       ];
 
       var basePatchNum = this.patchRange.basePatchNum;
@@ -146,11 +155,13 @@
         promises.push(this._getCommentsAndDrafts(basePatchNum, app.loggedIn));
         this._diffRequestsPromise = Promise.all(promises).then(function() {
           this._render();
+          this._loading = false;
         }.bind(this)).catch(function(err) {
+          this._loading = false;
           alert('Oops. Something went wrong. Check the console and bug the ' +
               'PolyGerrit team for assistance.');
           throw err;
-        });
+        }.bind(this));
       }.bind(this));
     },
 
@@ -225,11 +236,6 @@
       return Promise.all(promises);
     },
 
-    _computeDiffPath: function(changeNum, patchNum, path) {
-      return this.changeBaseURL(changeNum, patchNum) + '/files/' +
-          encodeURIComponent(path) + '/diff';
-    },
-
     _computeCommentsPath: function(changeNum, patchNum) {
       return this.changeBaseURL(changeNum, patchNum) + '/comments';
     },
@@ -238,17 +244,6 @@
       return this.changeBaseURL(changeNum, patchNum) + '/drafts';
     },
 
-    _computeDiffQueryParams: function(basePatchNum) {
-      var params =  {
-        context: 'ALL',
-        intraline: null
-      };
-      if (basePatchNum != 'PARENT') {
-        params.base = basePatchNum;
-      }
-      return params;
-    },
-
     _handlePrefsTap: function(e) {
       e.preventDefault();
 
diff --git a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff_test.html b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff_test.html
index 9a8cb81..c7f12e6 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff_test.html
+++ b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff_test.html
@@ -36,6 +36,7 @@
   suite('gr-diff tests', function() {
     var element;
     var server;
+    var getDiffStub;
 
     setup(function() {
       element = fixture('basic');
@@ -46,56 +47,50 @@
         tab_size: 8,
       };
 
+      getDiffStub = sinon.stub(element.$.restAPI, 'getDiff', function() {
+        return Promise.resolve({
+          change_type: 'MODIFIED',
+          content: [
+            {
+              ab: [
+                '<!DOCTYPE html>',
+                '<meta charset="utf-8">',
+                '<title>My great page</title>',
+                '<style>',
+                '  *,',
+                '  *:before,',
+                '  *:after {',
+                '    box-sizing: border-box;',
+                '  }',
+                '</style>',
+                '<header>',
+              ]
+            },
+            {
+              a: [
+                '  Welcome ',
+                '  to the wooorld of tomorrow!',
+              ],
+              b: [
+                '  Hello, world!',
+              ],
+            },
+            {
+              ab: [
+                '</header>',
+                '<body>',
+                'Leela: This is the only place the ship can’t hear us, so ',
+                'everyone pretend to shower.',
+                'Fry: Same as every day. Got it.',
+              ]
+            },
+          ]
+        });
+      });
+
       server = sinon.fakeServer.create();
       server.respondWith(
         'GET',
-        /\/changes\/42\/revisions\/(1|2)\/files\/sieve\.go\/diff(.*)/,
-        [
-          200,
-          {'Content-Type': 'application/json'},
-          ')]}\'\n' +
-          JSON.stringify({
-            change_type: 'MODIFIED',
-            content: [
-              {
-                ab: [
-                  '<!DOCTYPE html>',
-                  '<meta charset="utf-8">',
-                  '<title>My great page</title>',
-                  '<style>',
-                  '  *,',
-                  '  *:before,',
-                  '  *:after {',
-                  '    box-sizing: border-box;',
-                  '  }',
-                  '</style>',
-                  '<header>',
-                ]
-              },
-              {
-                a: [
-                  '  Welcome ',
-                  '  to the wooorld of tomorrow!',
-                ],
-                b: [
-                  '  Hello, world!',
-                ],
-              },
-              {
-                ab: [
-                  '</header>',
-                  '<body>',
-                  'Leela: This is the only place the ship can’t hear us, so ',
-                  'everyone pretend to shower.',
-                  'Fry: Same as every day. Got it.',
-                ]
-              },
-            ]
-          }),
-        ]
-      );
-      server.respondWith(
-        'GET',
         '/changes/42/revisions/1/comments',
         [
           200,
