diff --git a/res/ari/resource_channels.c b/res/ari/resource_channels.c
index 6027a8059a9d80c56fe6168235d9f824fbc419d8..6b4f26c25a86bb86e69f6aae7d689339ff5eb07d 100644
--- a/res/ari/resource_channels.c
+++ b/res/ari/resource_channels.c
@@ -99,9 +99,13 @@ static int channel_state_invalid(struct stasis_app_control *control,
 		|| snapshot->state == AST_STATE_RINGING) {
 		ast_ari_response_error(response, 412, "Precondition Failed",
 			"Channel in invalid state");
+		ao2_ref(snapshot, -1);
+
 		return -1;
 	}
 
+	ao2_ref(snapshot, -1);
+
 	return 0;
 }