After some hit & trial and following hints on the API doc page, I realized that supplying values of optional arguments suppresses the error:
$response = $api->post("encryption", "systemEncrypt", array('value' => 'my text', 'key' => 'my key', 'iv' => 'my iv'));
works. Even blank values work:
$response = $api->post("encryption", "systemEncrypt", array('value' => 'my text', 'key' => '', 'iv' => ''));
As per the API and class docs, without the optional arguments, Blesta should encrypt/decrypt using the Blesta.system_key. But omitting these arguments results in an error as shown in the original post. Copy-pasting the system_key from config/blesta.php into 'key' and 'iv' values solves it for me and produces the desired result but this is far from ideal.