diff --git a/doc/api/projects.md b/doc/api/projects.md
index e27f0c0226bf05108fccac8ebf9a3f3fcf21d9b0..b8876e8e104bd3ed707e7b4b2c2de23145f65ab7 100644
--- a/doc/api/projects.md
+++ b/doc/api/projects.md
@@ -8,6 +8,10 @@ Get a list of projects accessible by the authenticated user.
 GET /projects
 ```
 
+Parameters:
+
++ `archived` (optional) - if passed, limit by archived status
+
 ```json
 [
   {
@@ -250,7 +254,7 @@ Parameters:
 + `description` (optional) - short project description
 + `issues_enabled` (optional)
 + `merge_requests_enabled` (optional)
-+ `wiki_enabled` (optional) 
++ `wiki_enabled` (optional)
 + `snippets_enabled` (optional)
 + `public` (optional) - if `true` same as setting visibility_level = 20
 + `visibility_level` (optional)
@@ -273,7 +277,7 @@ Parameters:
 + `default_branch` (optional) - 'master' by default
 + `issues_enabled` (optional)
 + `merge_requests_enabled` (optional)
-+ `wiki_enabled` (optional) 
++ `wiki_enabled` (optional)
 + `snippets_enabled` (optional)
 + `public` (optional) - if `true` same as setting visibility_level = 20
 + `visibility_level` (optional)
diff --git a/lib/api/helpers.rb b/lib/api/helpers.rb
index d7d209e16f7c09aab26cff84075ae1cb6df68c1f..8189e433789541d6647fb2074c659df3a83b7e83 100644
--- a/lib/api/helpers.rb
+++ b/lib/api/helpers.rb
@@ -5,6 +5,10 @@ module API
     SUDO_HEADER ="HTTP_SUDO"
     SUDO_PARAM = :sudo
 
+    def parse_boolean(value)
+      [ true, 1, '1', 't', 'T', 'true', 'TRUE', 'on', 'ON' ].include?(value)
+    end
+
     def current_user
       private_token = (params[PRIVATE_TOKEN_PARAM] || env[PRIVATE_TOKEN_HEADER]).to_s
       @current_user ||= User.find_by(authentication_token: private_token)
diff --git a/lib/api/projects.rb b/lib/api/projects.rb
index 88c73bff32d76dc0ea075eae791ac3413545e288..4c0766482f3f10ec621ab1143bbe4a3689af063c 100644
--- a/lib/api/projects.rb
+++ b/lib/api/projects.rb
@@ -7,7 +7,7 @@ module API
       helpers do
         def map_public_to_visibility_level(attrs)
           publik = attrs.delete(:public)
-          publik = [ true, 1, '1', 't', 'T', 'true', 'TRUE', 'on', 'ON' ].include?(publik)
+          publik = parse_boolean(publik)
           attrs[:visibility_level] = Gitlab::VisibilityLevel::PUBLIC if !attrs[:visibility_level].present? && publik == true
           attrs
         end
@@ -15,10 +15,18 @@ module API
 
       # Get a projects list for authenticated user
       #
+      # Parameters:
+      #   archived (optional) - if passed, limit by archived status
+      #
       # Example Request:
       #   GET /projects
       get do
-        @projects = paginate current_user.authorized_projects
+        @query = current_user.authorized_projects
+        # If the archived parameter is passed, limit results accordingly
+        if params[:archived].present?
+          @query = @query.where(archived: parse_boolean(params[:archived]))
+        end
+        @projects = paginate @query
         present @projects, with: Entities::Project
       end