diff --git a/fpdfsdk/fpdf_edit_embeddertest.cpp b/fpdfsdk/fpdf_edit_embeddertest.cpp
index ee80f3a..800fc70 100644
--- a/fpdfsdk/fpdf_edit_embeddertest.cpp
+++ b/fpdfsdk/fpdf_edit_embeddertest.cpp
@@ -560,10 +560,10 @@
         EXPECT_EQ(L"Factor", key);
 
         EXPECT_EQ(FPDF_OBJECT_NUMBER,
-                  FPDFPageObjMark_GetParamValueTypeByKey(mark, "Factor"));
+                  FPDFPageObjMark_GetParamValueType(mark, "Factor"));
         int square_root;
-        EXPECT_TRUE(FPDFPageObjMark_GetParamIntValueByKey(mark, "Factor",
-                                                          &square_root));
+        EXPECT_TRUE(
+            FPDFPageObjMark_GetParamIntValue(mark, "Factor", &square_root));
         EXPECT_EQ(expected_square, square_root * square_root);
       } else if (name == L"GreaterThanTen") {
         greater_than_ten_count++;
@@ -583,10 +583,10 @@
         EXPECT_EQ(object_count - 1, i);
 
         EXPECT_EQ(FPDF_OBJECT_STRING,
-                  FPDFPageObjMark_GetParamValueTypeByKey(mark, "Position"));
+                  FPDFPageObjMark_GetParamValueType(mark, "Position"));
         unsigned long length;
-        EXPECT_TRUE(FPDFPageObjMark_GetParamStringValueByKey(
-            mark, "Position", buffer, 256, &length));
+        EXPECT_TRUE(FPDFPageObjMark_GetParamStringValue(mark, "Position",
+                                                        buffer, 256, &length));
         ASSERT_GT(length, 0u);
         EXPECT_EQ((4u + 1u) * 2u, length);
         std::wstring value =
@@ -2183,17 +2183,16 @@
 
   // Check the two parameters can be retrieved.
   EXPECT_EQ(FPDF_OBJECT_NUMBER,
-            FPDFPageObjMark_GetParamValueTypeByKey(mark, "IntKey"));
+            FPDFPageObjMark_GetParamValueType(mark, "IntKey"));
   int int_value;
-  EXPECT_TRUE(
-      FPDFPageObjMark_GetParamIntValueByKey(mark, "IntKey", &int_value));
+  EXPECT_TRUE(FPDFPageObjMark_GetParamIntValue(mark, "IntKey", &int_value));
   EXPECT_EQ(42, int_value);
 
   EXPECT_EQ(FPDF_OBJECT_STRING,
-            FPDFPageObjMark_GetParamValueTypeByKey(mark, "StringKey"));
+            FPDFPageObjMark_GetParamValueType(mark, "StringKey"));
   unsigned long out_buffer_len;
-  EXPECT_TRUE(FPDFPageObjMark_GetParamStringValueByKey(
-      mark, "StringKey", buffer, 256, &out_buffer_len));
+  EXPECT_TRUE(FPDFPageObjMark_GetParamStringValue(mark, "StringKey", buffer,
+                                                  256, &out_buffer_len));
   EXPECT_GT(out_buffer_len, 0u);
   name = GetPlatformWString(reinterpret_cast<unsigned short*>(buffer));
   EXPECT_EQ(L"StringValue", name);
diff --git a/fpdfsdk/fpdf_editpage.cpp b/fpdfsdk/fpdf_editpage.cpp
index 968d857..2ace03c 100644
--- a/fpdfsdk/fpdf_editpage.cpp
+++ b/fpdfsdk/fpdf_editpage.cpp
@@ -375,10 +375,9 @@
       WideString::FromUTF8(param_pair->first.AsStringView()), buffer, buflen);
 }
 
-
 FPDF_EXPORT FPDF_OBJECT_TYPE FPDF_CALLCONV
-FPDFPageObjMark_GetParamValueTypeByKey(FPDF_PAGEOBJECTMARK mark,
-                                       FPDF_BYTESTRING key) {
+FPDFPageObjMark_GetParamValueType(FPDF_PAGEOBJECTMARK mark,
+                                  FPDF_BYTESTRING key) {
   const CPDF_Dictionary* pParams = GetMarkParamDict(mark);
   if (!pParams)
     return FPDF_OBJECT_UNKNOWN;
@@ -391,9 +390,9 @@
 }
 
 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
-FPDFPageObjMark_GetParamIntValueByKey(FPDF_PAGEOBJECTMARK mark,
-                                      FPDF_BYTESTRING key,
-                                      int* out_value) {
+FPDFPageObjMark_GetParamIntValue(FPDF_PAGEOBJECTMARK mark,
+                                 FPDF_BYTESTRING key,
+                                 int* out_value) {
   const CPDF_Dictionary* pParams = GetMarkParamDict(mark);
   if (!pParams)
     return false;
@@ -407,11 +406,11 @@
 }
 
 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
-FPDFPageObjMark_GetParamStringValueByKey(FPDF_PAGEOBJECTMARK mark,
-                                         FPDF_BYTESTRING key,
-                                         void* buffer,
-                                         unsigned long buflen,
-                                         unsigned long* out_buflen) {
+FPDFPageObjMark_GetParamStringValue(FPDF_PAGEOBJECTMARK mark,
+                                    FPDF_BYTESTRING key,
+                                    void* buffer,
+                                    unsigned long buflen,
+                                    unsigned long* out_buflen) {
   const CPDF_Dictionary* pParams = GetMarkParamDict(mark);
   if (!pParams)
     return false;
diff --git a/fpdfsdk/fpdf_view_c_api_test.c b/fpdfsdk/fpdf_view_c_api_test.c
index 6e6d2ce..70db94f 100644
--- a/fpdfsdk/fpdf_view_c_api_test.c
+++ b/fpdfsdk/fpdf_view_c_api_test.c
@@ -139,10 +139,10 @@
     CHK(FPDFImageObj_SetMatrix);
     CHK(FPDFPageObjMark_CountParams);
     CHK(FPDFPageObjMark_GetName);
-    CHK(FPDFPageObjMark_GetParamIntValueByKey);
+    CHK(FPDFPageObjMark_GetParamIntValue);
     CHK(FPDFPageObjMark_GetParamKey);
-    CHK(FPDFPageObjMark_GetParamStringValueByKey);
-    CHK(FPDFPageObjMark_GetParamValueTypeByKey);
+    CHK(FPDFPageObjMark_GetParamStringValue);
+    CHK(FPDFPageObjMark_GetParamValueType);
     CHK(FPDFPageObjMark_SetIntParam);
     CHK(FPDFPageObjMark_SetStringParam);
     CHK(FPDFPageObj_AddMark);
diff --git a/public/fpdf_edit.h b/public/fpdf_edit.h
index 5e3efb5..e7f6cc4 100644
--- a/public/fpdf_edit.h
+++ b/public/fpdf_edit.h
@@ -377,8 +377,8 @@
 //
 // Returns the type of the value, or FPDF_OBJECT_UNKNOWN in case of failure.
 FPDF_EXPORT FPDF_OBJECT_TYPE FPDF_CALLCONV
-FPDFPageObjMark_GetParamValueTypeByKey(FPDF_PAGEOBJECTMARK mark,
-                                       FPDF_BYTESTRING key);
+FPDFPageObjMark_GetParamValueType(FPDF_PAGEOBJECTMARK mark,
+                                  FPDF_BYTESTRING key);
 
 // Experimental API.
 // Get the value of a number property in a content mark by key as int.
@@ -392,9 +392,9 @@
 //
 // Returns TRUE if the key maps to a number value, FALSE otherwise.
 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
-FPDFPageObjMark_GetParamIntValueByKey(FPDF_PAGEOBJECTMARK mark,
-                                      FPDF_BYTESTRING key,
-                                      int* out_value);
+FPDFPageObjMark_GetParamIntValue(FPDF_PAGEOBJECTMARK mark,
+                                 FPDF_BYTESTRING key,
+                                 int* out_value);
 
 // Experimental API.
 // Get the value of a string property in a content mark by key.
@@ -409,11 +409,11 @@
 //
 // Returns TRUE if the key maps to a string value, FALSE otherwise.
 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
-FPDFPageObjMark_GetParamStringValueByKey(FPDF_PAGEOBJECTMARK mark,
-                                         FPDF_BYTESTRING key,
-                                         void* buffer,
-                                         unsigned long buflen,
-                                         unsigned long* out_buflen);
+FPDFPageObjMark_GetParamStringValue(FPDF_PAGEOBJECTMARK mark,
+                                    FPDF_BYTESTRING key,
+                                    void* buffer,
+                                    unsigned long buflen,
+                                    unsigned long* out_buflen);
 
 // Experimental API.
 // Set the value of an int property in a content mark by key. If a parameter
