diff --git a/integrations/api_issue_reaction_test.go b/integrations/api_issue_reaction_test.go
index abbc6429fb..1906b8d090 100644
--- a/integrations/api_issue_reaction_test.go
+++ b/integrations/api_issue_reaction_test.go
@@ -11,25 +11,11 @@ import (
 	"time"
 
 	"code.gitea.io/gitea/models"
-	"code.gitea.io/gitea/modules/setting"
 	api "code.gitea.io/gitea/modules/structs"
 
 	"github.com/stretchr/testify/assert"
 )
 
-func TestAPIAllowedReactions(t *testing.T) {
-	defer prepareTestEnv(t)()
-
-	a := new(api.GeneralUISettings)
-
-	req := NewRequest(t, "GET", "/api/v1/settings/ui")
-	resp := MakeRequest(t, req, http.StatusOK)
-
-	DecodeJSON(t, resp, &a)
-	assert.Len(t, a.AllowedReactions, len(setting.UI.Reactions))
-	assert.ElementsMatch(t, setting.UI.Reactions, a.AllowedReactions)
-}
-
 func TestAPIIssuesReactions(t *testing.T) {
 	defer prepareTestEnv(t)()
 
diff --git a/integrations/api_settings_test.go b/integrations/api_settings_test.go
new file mode 100644
index 0000000000..3eb8e93044
--- /dev/null
+++ b/integrations/api_settings_test.go
@@ -0,0 +1,49 @@
+// Copyright 2020 The Gitea Authors. All rights reserved.
+// Use of this source code is governed by a MIT-style
+// license that can be found in the LICENSE file.
+
+package integrations
+
+import (
+	"net/http"
+	"testing"
+
+	"code.gitea.io/gitea/modules/setting"
+	api "code.gitea.io/gitea/modules/structs"
+
+	"github.com/stretchr/testify/assert"
+)
+
+func TestAPIExposedSettings(t *testing.T) {
+	defer prepareTestEnv(t)()
+
+	ui := new(api.GeneralUISettings)
+	req := NewRequest(t, "GET", "/api/v1/settings/ui")
+	resp := MakeRequest(t, req, http.StatusOK)
+
+	DecodeJSON(t, resp, &ui)
+	assert.Len(t, ui.AllowedReactions, len(setting.UI.Reactions))
+	assert.ElementsMatch(t, setting.UI.Reactions, ui.AllowedReactions)
+
+	apiSettings := new(api.GeneralAPISettings)
+	req = NewRequest(t, "GET", "/api/v1/settings/api")
+	resp = MakeRequest(t, req, http.StatusOK)
+
+	DecodeJSON(t, resp, &apiSettings)
+	assert.EqualValues(t, &api.GeneralAPISettings{
+		MaxResponseItems:       setting.API.MaxResponseItems,
+		DefaultPagingNum:       setting.API.DefaultPagingNum,
+		DefaultGitTreesPerPage: setting.API.DefaultGitTreesPerPage,
+		DefaultMaxBlobSize:     setting.API.DefaultMaxBlobSize,
+	}, apiSettings)
+
+	repo := new(api.GeneralRepoSettings)
+	req = NewRequest(t, "GET", "/api/v1/settings/repository")
+	resp = MakeRequest(t, req, http.StatusOK)
+
+	DecodeJSON(t, resp, &repo)
+	assert.EqualValues(t, &api.GeneralRepoSettings{
+		MirrorsDisabled: setting.Repository.DisableMirrors,
+		HTTPGitDisabled: setting.Repository.DisableHTTPGit,
+	}, repo)
+}
diff --git a/modules/structs/settings.go b/modules/structs/settings.go
index 4a6e0ce5a8..f1ff1344ea 100644
--- a/modules/structs/settings.go
+++ b/modules/structs/settings.go
@@ -14,3 +14,11 @@ type GeneralRepoSettings struct {
 type GeneralUISettings struct {
 	AllowedReactions []string `json:"allowed_reactions"`
 }
+
+// GeneralAPISettings contains global api settings exposed by it
+type GeneralAPISettings struct {
+	MaxResponseItems       int   `json:"max_response_items"`
+	DefaultPagingNum       int   `json:"default_paging_num"`
+	DefaultGitTreesPerPage int   `json:"default_git_trees_per_page"`
+	DefaultMaxBlobSize     int64 `json:"default_max_blob_size"`
+}
diff --git a/routers/api/v1/api.go b/routers/api/v1/api.go
index ab7ef6d6f7..027c6abc97 100644
--- a/routers/api/v1/api.go
+++ b/routers/api/v1/api.go
@@ -521,6 +521,7 @@ func RegisterRoutes(m *macaron.Macaron) {
 		m.Post("/markdown/raw", misc.MarkdownRaw)
 		m.Group("/settings", func() {
 			m.Get("/ui", settings.GetGeneralUISettings)
+			m.Get("/api", settings.GetGeneralAPISettings)
 			m.Get("/repository", settings.GetGeneralRepoSettings)
 		})
 
diff --git a/routers/api/v1/settings/settings.go b/routers/api/v1/settings/settings.go
index 8403a51d3e..7ec0d74c83 100644
--- a/routers/api/v1/settings/settings.go
+++ b/routers/api/v1/settings/settings.go
@@ -27,6 +27,24 @@ func GetGeneralUISettings(ctx *context.APIContext) {
 	})
 }
 
+// GetGeneralAPISettings returns instance's global settings for api
+func GetGeneralAPISettings(ctx *context.APIContext) {
+	// swagger:operation GET /settings/api settings getGeneralAPISettings
+	// ---
+	// summary: Get instance's global settings for api
+	// produces:
+	// - application/json
+	// responses:
+	//   "200":
+	//     "$ref": "#/responses/GeneralAPISettings"
+	ctx.JSON(http.StatusOK, api.GeneralAPISettings{
+		MaxResponseItems:       setting.API.MaxResponseItems,
+		DefaultPagingNum:       setting.API.DefaultPagingNum,
+		DefaultGitTreesPerPage: setting.API.DefaultGitTreesPerPage,
+		DefaultMaxBlobSize:     setting.API.DefaultMaxBlobSize,
+	})
+}
+
 // GetGeneralRepoSettings returns instance's global settings for repositories
 func GetGeneralRepoSettings(ctx *context.APIContext) {
 	// swagger:operation GET /settings/repository settings getGeneralRepositorySettings
diff --git a/routers/api/v1/swagger/settings.go b/routers/api/v1/swagger/settings.go
index 45266e51df..ad0d891dde 100644
--- a/routers/api/v1/swagger/settings.go
+++ b/routers/api/v1/swagger/settings.go
@@ -19,3 +19,10 @@ type swaggerResponseGeneralUISettings struct {
 	// in:body
 	Body api.GeneralUISettings `json:"body"`
 }
+
+// GeneralAPISettings
+// swagger:response GeneralAPISettings
+type swaggerResponseGeneralAPISettings struct {
+	// in:body
+	Body api.GeneralAPISettings `json:"body"`
+}
diff --git a/templates/swagger/v1_json.tmpl b/templates/swagger/v1_json.tmpl
index 4d6333ac4e..86dd817ede 100644
--- a/templates/swagger/v1_json.tmpl
+++ b/templates/swagger/v1_json.tmpl
@@ -8672,6 +8672,23 @@
         }
       }
     },
+    "/settings/api": {
+      "get": {
+        "produces": [
+          "application/json"
+        ],
+        "tags": [
+          "settings"
+        ],
+        "summary": "Get instance's global settings for api",
+        "operationId": "getGeneralAPISettings",
+        "responses": {
+          "200": {
+            "$ref": "#/responses/GeneralAPISettings"
+          }
+        }
+      }
+    },
     "/settings/repository": {
       "get": {
         "produces": [
@@ -12977,6 +12994,33 @@
       },
       "x-go-package": "code.gitea.io/gitea/modules/structs"
     },
+    "GeneralAPISettings": {
+      "description": "GeneralAPISettings contains global api settings exposed by it",
+      "type": "object",
+      "properties": {
+        "default_git_trees_per_page": {
+          "type": "integer",
+          "format": "int64",
+          "x-go-name": "DefaultGitTreesPerPage"
+        },
+        "default_max_blob_size": {
+          "type": "integer",
+          "format": "int64",
+          "x-go-name": "DefaultMaxBlobSize"
+        },
+        "default_paging_num": {
+          "type": "integer",
+          "format": "int64",
+          "x-go-name": "DefaultPagingNum"
+        },
+        "max_response_items": {
+          "type": "integer",
+          "format": "int64",
+          "x-go-name": "MaxResponseItems"
+        }
+      },
+      "x-go-package": "code.gitea.io/gitea/modules/structs"
+    },
     "GeneralRepoSettings": {
       "description": "GeneralRepoSettings contains global repository settings exposed by API",
       "type": "object",
@@ -15197,6 +15241,12 @@
         }
       }
     },
+    "GeneralAPISettings": {
+      "description": "GeneralAPISettings",
+      "schema": {
+        "$ref": "#/definitions/GeneralAPISettings"
+      }
+    },
     "GeneralRepoSettings": {
       "description": "GeneralRepoSettings",
       "schema": {