diff --git a/reviewboard/webapi/base.py b/reviewboard/webapi/base.py
index 3c7e8e76dfcd64036f115f5c3ba535ffe87dc667..76e130a18e2d50fe21635f31ffaad441f3e6929e 100644
--- a/reviewboard/webapi/base.py
+++ b/reviewboard/webapi/base.py
@@ -14,6 +14,8 @@ from djblets.webapi.decorators import (SPECIAL_PARAMS,
 from djblets.webapi.errors import PERMISSION_DENIED
 from djblets.webapi.resources.base import \
     WebAPIResource as DjbletsWebAPIResource
+from djblets.webapi.resources.mixins.api_ratelimit import \
+    WebAPIResourceRateLimitMixin
 from djblets.webapi.resources.mixins.api_tokens import ResourceAPITokenMixin
 from djblets.webapi.resources.mixins.queries import APIQueryUtilsMixin
 
@@ -84,7 +86,7 @@ class CallbackRegistry(Registry):
 
 
 class WebAPIResource(ResourceAPITokenMixin, APIQueryUtilsMixin,
-                     DjbletsWebAPIResource):
+                     DjbletsWebAPIResource, WebAPIResourceRateLimitMixin):
     """A specialization of the Djblets WebAPIResource for Review Board."""
 
     autogenerate_etags = True
@@ -103,6 +105,29 @@ class WebAPIResource(ResourceAPITokenMixin, APIQueryUtilsMixin,
 
         self.extra_data_access_callbacks = CallbackRegistry()
 
+    def should_check_ratelimit(self, request, user):
+        """Return whether the rate limit should be checked.
+
+        This method overrides the should_get_ratelimit() from the
+        WebAPIResourceRateLimitMixin class to provide the option to check if a
+        user has exceeded the maximum number of API calls. The default
+        behaviour woud return true so that the rate limit can be calculated
+        in WebAPIResourceRateLimitMixin's __call__() method.
+
+        Args:
+            request (django.http.HttpRequest):
+                The HTTP request from the client.
+
+            user (django.contrib.auth.models.User):
+                The user who has made the request.
+
+        Returns:
+            boolean:
+                Return True if the rate limit should be checked, otherwise
+                False.
+        """
+        return False
+
     def has_access_permissions(self, *args, **kwargs):
         # By default, raise an exception if this is called. Specific resources
         # will have to explicitly override this and opt-in to access.
diff --git a/reviewboard/webapi/tests/test_base.py b/reviewboard/webapi/tests/test_base.py
index 4542673a867ad28c49ee5de2e6e076dceab3a6d4..77478e8a3eac31809ec435f5a5d65fd74c9b227a 100644
--- a/reviewboard/webapi/tests/test_base.py
+++ b/reviewboard/webapi/tests/test_base.py
@@ -4,9 +4,11 @@ from __future__ import unicode_literals
 
 import json
 
+from django.contrib.auth.models import User
 from django.test.client import RequestFactory
 from djblets.features import Feature, get_features_registry
 from djblets.testing.decorators import add_fixtures
+from djblets.testing.testcases import TestCase
 from djblets.webapi.errors import PERMISSION_DENIED
 
 from reviewboard.site.models import LocalSite
@@ -55,6 +57,20 @@ class BaseDummyResource(WebAPIResource):
     def delete(self, request, dummy=None, *args, **kwargs):
         return 418, {'dummy': dummy}
 
+class WebAPIResourceRateLimitTests(TestCase):
+    """Tests for overriding WebAPIResourceRateLimitMixin"""
+
+    def setUp(self):
+        self.request = RequestFactory().request()
+        self.resource = WebAPIResource()
+
+    def test_should_check_ratelimit(self):
+        """Testing override test_should_check_ratelimit() method from
+        WebAPIResourceRateLimitMixin.
+        """
+        self.request.user = User()
+        result = self.resource.should_check_ratelimit(self.request, self.request.user)
+        self.assertEqual(result, False)
 
 class WebAPIResourceFeatureTests(BaseWebAPITestCase):
     """Tests for Web API Resources with required features"""
