diff --git a/lib/travis/api/app/endpoint/requests.rb b/lib/travis/api/app/endpoint/requests.rb
index cf67b9a7..590ec331 100644
--- a/lib/travis/api/app/endpoint/requests.rb
+++ b/lib/travis/api/app/endpoint/requests.rb
@@ -28,10 +28,20 @@ class Travis::Api::App
           #
           # I think we need to properly deprecate this by publishing a blog post.
           Metriks.meter("api.request.restart").mark
-          respond_with service(:reset_model, params)
+
+          service = Travis::Enqueue::Services::RestartModel.new(current_user, { build_id: params[:build_id] })
+          repository_owner = service.target.repository.owner
+
+          if !Travis::Features.enabled_for_all?(:enqueue_to_hub) && !Travis::Features.owner_active?(:enqueue_to_hub, repository_owner)
+            respond_with service(:reset_model, params)
+          elsif service.respond_to?(:push)
+            payload = {id: params[:build_id], user_id: current_user.id}
+            service.push("job:restart", payload)
+            status 202
+            true
+          end
         end
       end
     end
   end
 end
-
diff --git a/spec/integration/v2/requests_spec.rb b/spec/integration/v2/requests_spec.rb
index 0ed0b43f..cd023599 100644
--- a/spec/integration/v2/requests_spec.rb
+++ b/spec/integration/v2/requests_spec.rb
@@ -3,6 +3,7 @@ require 'json'
 describe 'Requests', set_app: true do
   let(:repo)    { Factory.create(:repository) }
   let(:request) { Factory.create(:request, repository: repo) }
+  let(:build)   { Factory.create(:build, repository: repo) }
   let(:user)    { Factory.create(:user) }
   let(:token)   { Travis::Api::App::AccessToken.create(user: user, app_id: -1) }
   let(:headers) { { 'HTTP_ACCEPT' => 'application/vnd.travis-ci.2+json', 'HTTP_AUTHORIZATION' => "token #{token}" } }
@@ -25,4 +26,18 @@ describe 'Requests', set_app: true do
       response.should deliver_json_for(request, version: 'v2', type: 'request')
     end
   end
+
+  describe 'POST /requests' do
+    it 'triggers a build request using Core code' do
+      response = post "/requests", { build_id: build.id }, headers
+      response.status.should be(200)
+    end
+
+    it 'triggers a build request using Hub' do
+      Travis::Features.activate_owner(:enqueue_to_hub, repo.owner)
+
+      response = post "/requests", { build_id: build.id }, headers
+      response.status.should be(202)
+    end
+  end
 end