diff --git a/src/api/newcallmodel.h b/src/api/newcallmodel.h
index 4e497f0e390913940dd0ec153a667762bad7fd5d..c885f9165ff50c616e46ee293567d09e72e9b6da 100644
--- a/src/api/newcallmodel.h
+++ b/src/api/newcallmodel.h
@@ -263,6 +263,13 @@ public:
      */
     void muteParticipant(const QString& confId, const QString& peerId, const bool& state);
 
+    /**
+     * Hangup participant
+     * @param confId        The call to change
+     * @param participant   Use contact URI
+     */
+    void hangupParticipant(const QString& confId, const QString& participant);
+
 Q_SIGNALS:
     /**
      * Emitted when a call state changes
diff --git a/src/newcallmodel.cpp b/src/newcallmodel.cpp
index 11302651d3d8c21154174ea601e1d836fce2ef1f..ce2dbeeb3d0dcd95dcb05febe53a7e72d8bdac83 100644
--- a/src/newcallmodel.cpp
+++ b/src/newcallmodel.cpp
@@ -780,6 +780,12 @@ NewCallModel::muteParticipant(const QString& confId, const QString& peerId, cons
     CallManager::instance().muteParticipant(confId, peerId, state);
 }
 
+void
+NewCallModel::hangupParticipant(const QString& confId, const QString& participant)
+{
+    CallManager::instance().hangupParticipant(confId, participant);
+}
+
 void
 NewCallModel::sendSipMessage(const QString& callId, const QString& body) const
 {
diff --git a/src/qtwrapper/callmanager_wrap.h b/src/qtwrapper/callmanager_wrap.h
index b50119dd2e63b14c8ee6384b3bb3401d8a9f1fae..6f5e818a47013ba92b0e86fa264f847fa7fb4d8d 100644
--- a/src/qtwrapper/callmanager_wrap.h
+++ b/src/qtwrapper/callmanager_wrap.h
@@ -396,6 +396,11 @@ public Q_SLOTS: // METHODS
         DRing::muteParticipant(confId.toStdString(), peerId.toStdString(), state);
     }
 
+    void hangupParticipant(const QString& confId, const QString& participant)
+    {
+        DRing::hangupParticipant(confId.toStdString(), participant.toStdString());
+    }
+
 Q_SIGNALS: // SIGNALS
     void callStateChanged(const QString& callID, const QString& state, int code);
     void transferFailed();