diff --git a/Gemfile.lock b/Gemfile.lock
index 268e33cf..8ea3401f 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -23,7 +23,7 @@ GIT
 
 GIT
   remote: git://github.com/travis-ci/travis-core.git
-  revision: 183d8f10c78eaf0fc08fe24fb3fcc0445ddd96e1
+  revision: a17a9b90adb5567c7d6ef6e5bb796018a1b371c0
   specs:
     travis-core (0.0.1)
       actionmailer (~> 3.2.12)
@@ -83,12 +83,12 @@ PATH
 GEM
   remote: https://rubygems.org/
   specs:
-    actionmailer (3.2.16)
-      actionpack (= 3.2.16)
+    actionmailer (3.2.17)
+      actionpack (= 3.2.17)
       mail (~> 2.5.4)
-    actionpack (3.2.16)
-      activemodel (= 3.2.16)
-      activesupport (= 3.2.16)
+    actionpack (3.2.17)
+      activemodel (= 3.2.17)
+      activesupport (= 3.2.17)
       builder (~> 3.0.0)
       erubis (~> 2.7.0)
       journey (~> 1.0.4)
@@ -96,20 +96,20 @@ GEM
       rack-cache (~> 1.2)
       rack-test (~> 0.6.1)
       sprockets (~> 2.2.1)
-    activemodel (3.2.16)
-      activesupport (= 3.2.16)
+    activemodel (3.2.17)
+      activesupport (= 3.2.17)
       builder (~> 3.0.0)
-    activerecord (3.2.16)
-      activemodel (= 3.2.16)
-      activesupport (= 3.2.16)
+    activerecord (3.2.17)
+      activemodel (= 3.2.17)
+      activesupport (= 3.2.17)
       arel (~> 3.0.2)
       tzinfo (~> 0.3.29)
-    activesupport (3.2.16)
+    activesupport (3.2.17)
       i18n (~> 0.6, >= 0.6.4)
       multi_json (~> 1.0)
     addressable (2.3.5)
     arel (3.0.3)
-    atomic (1.1.14)
+    atomic (1.1.15)
     avl_tree (1.1.3)
     backports (2.8.2)
     builder (3.0.4)
@@ -171,13 +171,13 @@ GEM
     mime-types (1.25.1)
     mocha (0.14.0)
       metaclass (~> 0.0.1)
-    multi_json (1.8.4)
+    multi_json (1.9.0)
     multipart-post (2.0.0)
-    net-http-persistent (2.9)
+    net-http-persistent (2.9.4)
     net-http-pipeline (1.0.1)
     newrelic_rpm (3.6.9.171)
     pg (0.13.2)
-    polyglot (0.3.3)
+    polyglot (0.3.4)
     proxies (0.2.1)
     pry (0.9.12.4)
       coderay (~> 1.0)
@@ -197,9 +197,9 @@ GEM
       rack
     rack-test (0.6.2)
       rack (>= 1.0)
-    railties (3.2.16)
-      actionpack (= 3.2.16)
-      activesupport (= 3.2.16)
+    railties (3.2.17)
+      actionpack (= 3.2.17)
+      activesupport (= 3.2.17)
       rack-ssl (~> 1.3.2)
       rake (>= 0.8.7)
       rdoc (~> 3.4)
@@ -214,7 +214,7 @@ GEM
     rdoc (3.12.2)
       json (~> 1.4)
     redcarpet (2.3.0)
-    redis (3.0.6)
+    redis (3.0.7)
     redis-namespace (1.3.2)
       redis (~> 3.0.4)
     rerun (0.8.2)
@@ -228,7 +228,7 @@ GEM
     rspec-expectations (2.14.4)
       diff-lcs (>= 1.1.3, < 2.0)
     rspec-mocks (2.14.4)
-    s3 (0.3.18)
+    s3 (0.3.21)
       proxies (~> 0.2.0)
     sidekiq (2.5.4)
       celluloid (~> 0.12.0)
@@ -237,7 +237,7 @@ GEM
       redis (~> 3)
       redis-namespace
     signature (0.1.7)
-    simple_states (1.0.0)
+    simple_states (1.0.1)
       activesupport
       hashr (~> 0.0.10)
     sinatra (1.4.4)
diff --git a/lib/travis/api/app/endpoint.rb b/lib/travis/api/app/endpoint.rb
index 47799354..c4ef62f1 100644
--- a/lib/travis/api/app/endpoint.rb
+++ b/lib/travis/api/app/endpoint.rb
@@ -17,7 +17,17 @@ class Travis::Api::App
     after { content_type :json unless content_type }
 
     error(ActiveRecord::RecordNotFound, Sinatra::NotFound) { not_found }
-    not_found { content_type =~ /json/ ? { 'file' => 'not found' } : 'file not found' }
+    not_found {
+      if content_type =~ /json/
+        if body && !body.empty?
+          body
+        else
+          { 'file' => 'not found' }
+        end
+      else
+        'file not found'
+      end
+    }
 
     private
 
diff --git a/lib/travis/api/app/endpoint/requests.rb b/lib/travis/api/app/endpoint/requests.rb
index a3cd39a1..08dc8fcd 100644
--- a/lib/travis/api/app/endpoint/requests.rb
+++ b/lib/travis/api/app/endpoint/requests.rb
@@ -8,6 +8,15 @@ class Travis::Api::App
         Metriks.meter("api.request.restart").mark
         respond_with service(:reset_model, params)
       end
+
+      get '/' do
+        begin
+          respond_with(service(:find_requests, params).run)
+        rescue Travis::RepositoryNotFoundError => e
+          status 404
+          { "error" => "Repository could not be found" }
+        end
+      end
     end
   end
 end
diff --git a/spec/integration/v2/requests_spec.rb b/spec/integration/v2/requests_spec.rb
new file mode 100644
index 00000000..01a928d3
--- /dev/null
+++ b/spec/integration/v2/requests_spec.rb
@@ -0,0 +1,18 @@
+require 'spec_helper'
+
+describe 'Requests' do
+  let(:headers) { { 'HTTP_ACCEPT' => 'application/vnd.travis-ci.2+json' } }
+
+  it 'fetches requests' do
+    repo =    Factory.create(:repository)
+    request = Factory.create(:request, repository: repo)
+
+    response = get '/requests', { repository_id: repo.id }, headers
+    response.should deliver_json_for(repo.requests, version: 'v2', type: 'requests')
+  end
+
+  it 'returns an error response if repo can\'t be found' do
+    response = get '/requests', { repository_id: 0 }, headers
+    JSON.parse(response.body)['error'].should == "Repository could not be found"
+  end
+end