diff --git a/Civi/FormProcessor/API/FormProcessor.php b/Civi/FormProcessor/API/FormProcessor.php
index 0e8934488354048dd4404541ee6489d79346e780..0b2de4e923df3c196cf69cf2c8fd81996417bab2 100644
--- a/Civi/FormProcessor/API/FormProcessor.php
+++ b/Civi/FormProcessor/API/FormProcessor.php
@@ -127,9 +127,9 @@
 			if ($input['is_required'] && !isset($params[$input['name']])) {
 				throw new \API_Exception('Parameter '.$input['name'].' is required');
 			}
-			if (!$input['type']->validateValue($params[$input['name']])) {
-				throw new \API_Exception('Parameter '.$input['name'].' is required');
-			}
+			if (isset($params[$input['name']]) && !empty($params[$input['name']]) && !$input['type']->validateValue($params[$input['name']])) {
+        throw new \API_Exception('Parameter '.$input['name'].' is invalid');
+      }
 			// Check the validations on the input.
 			foreach($input['validators'] as $validator) {
 				if (!$validator['validator']->validate($params[$input['name']])) {
diff --git a/Civi/FormProcessor/API/FormProcessorDefaults.php b/Civi/FormProcessor/API/FormProcessorDefaults.php
index 91574cb696a37216c77d30f4a6eb1c33c4f7d90c..1e07e0fb5d4a53d26c646c932b81c7a87b7943d0 100644
--- a/Civi/FormProcessor/API/FormProcessorDefaults.php
+++ b/Civi/FormProcessor/API/FormProcessorDefaults.php
@@ -128,8 +128,8 @@
 			if ($input['is_required'] && !isset($params[$input['name']])) {
 				throw new \API_Exception('Parameter '.$input['name'].' is required');
 			}
-			if (!$input['type']->validateValue($params[$input['name']])) {
-				throw new \API_Exception('Parameter '.$input['name'].' is required');
+			if (isset($params[$input['name']]) && !empty($params[$input['name']]) && !$input['type']->validateValue($params[$input['name']])) {
+				throw new \API_Exception('Parameter '.$input['name'].' is invalid');
 			}
 			// Check the validations on the input.
 			foreach($input['validators'] as $validator) {