diff --git a/res/ari/resource_channels.c b/res/ari/resource_channels.c
index cdf0f88207f5b93866da62427e71cff446ba36f0..bca32f1243439c73bc8392929b0cfd1b8c281727 100644
--- a/res/ari/resource_channels.c
+++ b/res/ari/resource_channels.c
@@ -1748,15 +1748,21 @@ void ast_ari_channels_create(struct ast_variable *headers,
 	struct ast_format_cap *request_cap;
 	struct ast_channel *originator;
 
-	chan_data = ast_calloc(1, sizeof(*chan_data));
-	if (!chan_data) {
-		ast_ari_response_alloc_failed(response);
+	if (!ast_strlen_zero(args->originator) && !ast_strlen_zero(args->formats)) {
+		ast_ari_response_error(response, 400, "Bad Request",
+			"Originator and formats can't both be specified");
 		return;
 	}
 
-	if (!ast_strlen_zero(args->originator) && !ast_strlen_zero(args->formats)) {
+	if (ast_strlen_zero(args->endpoint)) {
 		ast_ari_response_error(response, 400, "Bad Request",
-			"Originator and formats can't both be specified");
+			"Endpoint must be specified");
+		return;
+	}
+
+	chan_data = ast_calloc(1, sizeof(*chan_data));
+	if (!chan_data) {
+		ast_ari_response_alloc_failed(response);
 		return;
 	}