diff --git a/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/IImsMediaSession.aidl b/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/IImsMediaSession.aidl
index 7fab555..ea9f3a4 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/IImsMediaSession.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/IImsMediaSession.aidl
@@ -36,9 +36,6 @@
 interface IImsMediaSession {
   oneway void setListener(in android.hardware.radio.ims.media.IImsMediaSessionListener sessionListener);
   oneway void modifySession(in android.hardware.radio.ims.media.RtpConfig config);
-  oneway void addConfig(in android.hardware.radio.ims.media.RtpConfig config);
-  oneway void deleteConfig(in android.hardware.radio.ims.media.RtpConfig config);
-  oneway void confirmConfig(in android.hardware.radio.ims.media.RtpConfig config);
   oneway void sendDtmf(char dtmfDigit, int duration);
   oneway void startDtmf(char dtmfDigit);
   oneway void stopDtmf();
diff --git a/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/IImsMediaSessionListener.aidl b/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/IImsMediaSessionListener.aidl
index 6159780..f58f43d 100644
--- a/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/IImsMediaSessionListener.aidl
+++ b/radio/aidl/aidl_api/android.hardware.radio.ims.media/current/android/hardware/radio/ims/media/IImsMediaSessionListener.aidl
@@ -36,8 +36,6 @@
 interface IImsMediaSessionListener {
   oneway void onSessionChanged(android.hardware.radio.ims.media.RtpSessionState state);
   oneway void onModifySessionResponse(in android.hardware.radio.ims.media.RtpConfig config, android.hardware.radio.ims.media.RtpError error);
-  oneway void onAddConfigResponse(in android.hardware.radio.ims.media.RtpConfig config, android.hardware.radio.ims.media.RtpError error);
-  oneway void onConfirmConfigResponse(in android.hardware.radio.ims.media.RtpConfig config, android.hardware.radio.ims.media.RtpError error);
   oneway void onFirstMediaPacketReceived(in android.hardware.radio.ims.media.RtpConfig config);
   oneway void onHeaderExtensionReceived(in List<android.hardware.radio.ims.media.RtpHeaderExtension> extensions);
   oneway void notifyMediaInactivity(android.hardware.radio.ims.media.MediaProtocolType packetType);
diff --git a/radio/aidl/android/hardware/radio/ims/media/IImsMediaSession.aidl b/radio/aidl/android/hardware/radio/ims/media/IImsMediaSession.aidl
index d291f44..a8d2161 100644
--- a/radio/aidl/android/hardware/radio/ims/media/IImsMediaSession.aidl
+++ b/radio/aidl/android/hardware/radio/ims/media/IImsMediaSession.aidl
@@ -44,37 +44,6 @@
     void modifySession(in RtpConfig config);
 
     /**
-     * Adds a new remote configuration to a RTP session during early media
-     * scenarios where the IMS network could add more than one remote endpoint.
-     *
-     * @param config provides remote end point info and codec details
-     */
-    void addConfig(in RtpConfig config);
-
-    /**
-     * Deletes a remote configuration from a RTP session during early media
-     * scenarios. A session shall have at least one config so this API shall
-     * not delete the last config.
-     *
-     * @param config remote config to be deleted
-     */
-    void deleteConfig(in RtpConfig config);
-
-    /**
-     * Confirms a remote configuration for a Rtp session for early media scenarios
-     * when there are more than one remote configs. All other early remote configs
-     * (potentially including the config created as part of openSession) are auto
-     * deleted when one config is confirmed.
-     * Confirming a remote configuration is necessary only if additional
-     * configurations were created.
-     * New remote configurations cannot be added after a remote configuration is
-     * confirmed.
-     *
-     * @param config remote config to be confirmed
-     */
-    void confirmConfig(in RtpConfig config);
-
-    /**
      * Send DTMF digit until the duration expires.
      *
      * @param dtmfDigit single char having one of 12 values: 0-9, *, #
diff --git a/radio/aidl/android/hardware/radio/ims/media/IImsMediaSessionListener.aidl b/radio/aidl/android/hardware/radio/ims/media/IImsMediaSessionListener.aidl
index 317aeb7..aa7b3c0 100644
--- a/radio/aidl/android/hardware/radio/ims/media/IImsMediaSessionListener.aidl
+++ b/radio/aidl/android/hardware/radio/ims/media/IImsMediaSessionListener.aidl
@@ -48,30 +48,6 @@
     void onModifySessionResponse(in RtpConfig config, RtpError error);
 
     /**
-     * Notifies the result of IImsMediaSession#addConfig() API.
-     *
-     * @param config The RTP config passed in IImsMediaSession#addConfig() API
-     * @param error RtpError.NONE in case of success else one of the following
-     *   RtpError :INVALID_PARAM
-     *   RtpError :INTERNAL_ERR
-     *   RtpError :NO_MEMORY
-     *   RtpError :NO_RESOURCES
-     *   RtpError :PORT_UNAVAILABLE
-     */
-    void onAddConfigResponse(in RtpConfig config, RtpError error);
-
-    /**
-     * Notifies the result of IImsMediaSession#confirmConfig() API.
-     *
-     * @param config The RtpConfig passed in IImsMediaSession#confirmConfig() API
-     * @param error RtpError.NONE in case of success else one of the following
-     *   RtpError :INVALID_PARAM
-     *   RtpError :INTERNAL_ERR
-     *   RtpError :NO_RESOURCES
-     */
-    void onConfirmConfigResponse(in RtpConfig config, RtpError error);
-
-    /**
      * Indicates when the first Rtp media packet is received by the UE during ring
      * back, call hold or early media scenarios. This is sent only if the packet is
      * received on the active remote configuration.
