diff --git a/lib/api/triggers.rb b/lib/api/triggers.rb
index 3cb7810241fed55ee63e08bd497ae1696b143e4a..38cf1e9a2e0f94a49c99af300f977b55d231703e 100644
--- a/lib/api/triggers.rb
+++ b/lib/api/triggers.rb
@@ -62,6 +62,22 @@ module API
         present triggers, with: Entities::Trigger
       end
 
+      # Create trigger
+      #
+      # Parameters:
+      #   id (required) - The ID of a project
+      # Example Request:
+      #   POST /projects/:id/triggers
+      post ':id/triggers' do
+        authenticate!
+        authorize_admin_project
+
+        trigger = user_project.triggers.new
+        trigger.save
+
+        present trigger, with: Entities::Trigger
+      end
+
       # Delete trigger
       #
       # Parameters:
diff --git a/spec/requests/api/triggers_spec.rb b/spec/requests/api/triggers_spec.rb
index 4e073a55d9cbadbf0a23ccda17ed9319d19ba268..316c2ae958d447975c8322779d3f0d895c918661 100644
--- a/spec/requests/api/triggers_spec.rb
+++ b/spec/requests/api/triggers_spec.rb
@@ -115,6 +115,35 @@ describe API::API do
     end
   end
 
+  describe 'POST /projects/:id/triggets' do
+    context 'authenticated user with valid permissions' do
+      it 'should create trigger' do
+        expect do
+          post api("/projects/#{project.id}/triggers", user)
+        end.to change{project.triggers.count}.by(1)
+
+        expect(response.status).to eq(201)
+        expect(json_response).to be_a(Hash)
+      end
+    end
+
+    context 'authenticated user with invalid permissions' do
+      it 'should not create trigger' do
+        post api("/projects/#{project.id}/triggers", user2)
+
+        expect(response.status).to eq(403)
+      end
+    end
+
+    context 'unauthentikated user' do
+      it 'should not create trigger' do
+        post api("/projects/#{project.id}/triggers")
+
+        expect(response.status).to eq(401)
+      end
+    end
+  end
+
   describe 'DELETE /projects/:id/triggets/:trigger_id' do
     context 'authenticated user with valid permissions' do
       it 'should delete trigger' do