diff --git a/bin/dbus/cx.ring.Ring.PluginManagerInterface.xml b/bin/dbus/cx.ring.Ring.PluginManagerInterface.xml
index e47f8c582238b0a7ed7a4f68231444c854c91d22..271d8e94d7fa48631b0bb16bb8a4fd821010b405 100644
--- a/bin/dbus/cx.ring.Ring.PluginManagerInterface.xml
+++ b/bin/dbus/cx.ring.Ring.PluginManagerInterface.xml
@@ -107,6 +107,12 @@
             </arg>
         </method>
 
+        <method name="getPlatformInfo" tp:name-for-bindings="getPlatformInfo">
+            <tp:added version="9.2.0"/>
+            <arg type="a{ss}" name="info" direction="out" tp:type="String_String_Map">
+            </arg>
+        </method>
+
        <method name="getCallMediaHandlers" tp:name-for-bindings="getCallMediaHandlers">
             <tp:added version="9.9.0"/>
             <arg type="as" name="getCallMediaHandlers" direction="out">
diff --git a/bin/dbus/dbuspluginmanagerinterface.hpp b/bin/dbus/dbuspluginmanagerinterface.hpp
index 370438221ed3a03dd21a8902b02556153b4cb23b..a8555c7f71cf89c72b196184cc4d6495ea243911 100644
--- a/bin/dbus/dbuspluginmanagerinterface.hpp
+++ b/bin/dbus/dbuspluginmanagerinterface.hpp
@@ -87,6 +87,12 @@ public:
         return libjami::resetPluginPreferencesValues(path, accountId);
     }
 
+    std::map<std::string, std::string>
+    getPlatformInfo()
+    {
+        return libjami::getPlatformInfo();
+    }
+
     auto
     getInstalledPlugins() -> decltype(libjami::getInstalledPlugins())
     {
diff --git a/bin/jni/plugin_manager_interface.i b/bin/jni/plugin_manager_interface.i
index bd7c972ca6245fb9651b093bf0117bd3e40c13ba..25cf481d09a8337d998bb770223a697b46238566 100644
--- a/bin/jni/plugin_manager_interface.i
+++ b/bin/jni/plugin_manager_interface.i
@@ -27,6 +27,7 @@ namespace libjami {
 bool loadPlugin(const std::string& path);
 bool unloadPlugin(const std::string& path);
 std::map<std::string,std::string> getPluginDetails(const std::string& path);
+std::map<std::string, std::string> getPlatformInfo();
 std::vector<std::map<std::string,std::string>> getPluginPreferences(const std::string& path, const std::string& accountId);
 bool setPluginPreference(const std::string& path, const std::string& accountId, const std::string& key, const std::string& value);
 std::map<std::string,std::string> getPluginPreferencesValues(const std::string& path, const std::string& accountId);
diff --git a/src/client/plugin_manager_interface.cpp b/src/client/plugin_manager_interface.cpp
index f02d0e3578976a32a311827ac9c645bd72e059e5..1c3c4010cfd3ebd284c974a6ecce980c627bf2a2 100644
--- a/src/client/plugin_manager_interface.cpp
+++ b/src/client/plugin_manager_interface.cpp
@@ -147,6 +147,14 @@ uninstallPlugin(const std::string& pluginRootPath)
     return -1;
 }
 
+std::map<std::string, std::string>
+getPlatformInfo() {
+#ifdef ENABLE_PLUGIN
+    return jami::Manager::instance().getJamiPluginManager().getPlatformInfo();
+#endif
+    return {};
+}
+
 std::vector<std::string>
 getCallMediaHandlers()
 {
diff --git a/src/jami/plugin_manager_interface.h b/src/jami/plugin_manager_interface.h
index b7f9dbd0904d674e5b2ba902e73d533d07d13f8c..240f00db1e5e661305e756a9ef867b7f207b4d71 100644
--- a/src/jami/plugin_manager_interface.h
+++ b/src/jami/plugin_manager_interface.h
@@ -49,6 +49,7 @@ LIBJAMI_PUBLIC bool resetPluginPreferencesValues(const std::string& path,
                                                const std::string& accountId);
 LIBJAMI_PUBLIC std::vector<std::string> getInstalledPlugins();
 LIBJAMI_PUBLIC std::vector<std::string> getLoadedPlugins();
+LIBJAMI_PUBLIC std::map<std::string, std::string> getPlatformInfo();
 LIBJAMI_PUBLIC int installPlugin(const std::string& jplPath, bool force);
 LIBJAMI_PUBLIC int uninstallPlugin(const std::string& pluginRootPath);
 LIBJAMI_PUBLIC std::vector<std::string> getCallMediaHandlers();
diff --git a/src/plugin/jamipluginmanager.cpp b/src/plugin/jamipluginmanager.cpp
index ed0ffa1c5888ed577998bb0bd8bba70a783b0a26..b2566af0223d644bd8bb9969510ce6505a8eceab 100644
--- a/src/plugin/jamipluginmanager.cpp
+++ b/src/plugin/jamipluginmanager.cpp
@@ -22,17 +22,16 @@
 #include "pluginsutils.h"
 #include "fileutils.h"
 #include "archiver.h"
-
 #include "logger.h"
-
-#include <fstream>
-#include <stdexcept>
-#include <msgpack.hpp>
 #include "manager.h"
 #include "preferences.h"
 #include "jami/plugin_manager_interface.h"
 #include "store_ca_crt.cpp"
 
+#include <fstream>
+#include <stdexcept>
+#include <msgpack.hpp>
+
 #define SUCCESS                         0
 #define PLUGIN_ALREADY_INSTALLED        100 /* Plugin already installed with the same version */
 #define PLUGIN_OLD_VERSION              200 /* Plugin already installed with a newer version */
@@ -126,6 +125,12 @@ JamiPluginManager::checkPluginCertificateValidity(dht::crypto::Certificate* cert
     return cert && *cert && trust_.verify(*cert);
 }
 
+std::map<std::string, std::string>
+JamiPluginManager::getPlatformInfo()
+{
+    return PluginUtils::getPlatformInfo();
+}
+
 bool
 JamiPluginManager::checkPluginSignatureFile(const std::string& jplPath)
 {
diff --git a/src/plugin/jamipluginmanager.h b/src/plugin/jamipluginmanager.h
index aaa10eba81592fbfeb815304a5b7014990fc7d8d..a1c8001e98cb0c69f58b1b2328c4ce949b1cd5f8 100644
--- a/src/plugin/jamipluginmanager.h
+++ b/src/plugin/jamipluginmanager.h
@@ -168,6 +168,11 @@ public:
     std::map<std::string, std::string> getPluginPreferencesValuesMap(const std::string& rootPath,
                                                                      const std::string& accountId);
 
+    /**
+     * @brief Returns a Map of platform system.
+     */
+    std::map<std::string, std::string> getPlatformInfo();
+
     /**
      * @brief Modifies a preference value by saving it to a preferences.msgpack.
      * Plugin is reloaded only if the preference cannot take effect immediately.
diff --git a/src/plugin/pluginsutils.cpp b/src/plugin/pluginsutils.cpp
index cdb67f167ab21715b36106352bc634cbdb129d4d..9ab00890f679c89c51dd54d68393876d17ebc2b7 100644
--- a/src/plugin/pluginsutils.cpp
+++ b/src/plugin/pluginsutils.cpp
@@ -75,6 +75,14 @@ manifestPath(const std::string& rootPath)
     return rootPath + DIR_SEPARATOR_CH + "manifest.json";
 }
 
+std::map<std::string, std::string>
+getPlatformInfo()
+{
+    std::map<std::string, std::string> platformInfo = {};
+    platformInfo["os"] = ABI;
+    return platformInfo;
+}
+
 std::string
 getRootPathFromSoPath(const std::string& soPath)
 {
diff --git a/src/plugin/pluginsutils.h b/src/plugin/pluginsutils.h
index f5df57757b9e49ad06fee98b3c2d1227151ca1da..ca96282caae695e05752fb496de63fe1c111aaca 100644
--- a/src/plugin/pluginsutils.h
+++ b/src/plugin/pluginsutils.h
@@ -76,6 +76,12 @@ std::map<std::string, std::string> checkManifestValidity(std::istream& stream);
  */
 std::map<std::string, std::string> checkManifestValidity(const std::vector<uint8_t>& vec);
 
+/**
+ * @brief Returns a map with platform information.
+ * @return Map with platform information
+*/
+std::map<std::string, std::string> getPlatformInfo();
+
 /**
  * @brief Parses the manifest file of an installed plugin if it's valid.
  * @param manifestFilePath