diff --git a/lib/api/settings.rb b/lib/api/settings.rb
index 4aa81bf8bab04cce5105642f9b2816eff5877d6a..c885fcd7ea34abe2d8417b7e8fc0eb62e27a8545 100644
--- a/lib/api/settings.rb
+++ b/lib/api/settings.rb
@@ -4,7 +4,8 @@ module API
 
     helpers do
       def current_settings
-        @current_setting ||= ApplicationSetting.current
+        @current_setting ||=
+          (ApplicationSetting.current || ApplicationSetting.create_from_defaults)
       end
     end
 
diff --git a/spec/requests/api/settings_spec.rb b/spec/requests/api/settings_spec.rb
index 2ab31c6a10a9fc3cc369bbb88eb6d2362d747e2b..c815a8e1d738696832cacb1236f2d5c5bbd2bf26 100644
--- a/spec/requests/api/settings_spec.rb
+++ b/spec/requests/api/settings_spec.rb
@@ -7,11 +7,23 @@ describe API::API, 'Settings', api: true  do
   let(:admin) { create(:admin) }
 
 
-  describe "GET /applicaiton/settings" do
-    # TODO: Implement
+  describe "GET /application/settings" do
+    it "should return application settings" do
+      get api("/application/settings", admin)
+      expect(response.status).to eq(200)
+      expect(json_response).to be_an Hash
+      expect(json_response['default_projects_limit']).to eq(42)
+      expect(json_response['signin_enabled']).to be_truthy
+    end
   end
 
-  describe "PUT /applicaiton/settings" do
-    # TODO: Implement
+  describe "PUT /application/settings" do
+    it "should update application settings" do
+      put api("/application/settings", admin),
+        default_projects_limit: 3, signin_enabled: false
+      expect(response.status).to eq(200)
+      expect(json_response['default_projects_limit']).to eq(3)
+      expect(json_response['signin_enabled']).to be_falsey
+    end
   end
 end