From the comment:
This patch implements addCaptchaAPI and removes ConfirmEdit, since
it's unnecessary - it seems it was reimplemented in ReCaptcha to
detect when the captcha had to be shown for the first time and not
show an error message, but a minor change to passCaptcha ( if (
$response === null ) { return false; } ) accomplishes that.
Because the api edit module sets wpCaptchaId and wpCaptchaWord,
those are passed to recaptcha as recaptcha_challenge_field and
recaptcha_response_field if the latter two are not set. The api
returns only the public key and the error message - the client can
use this to ask the recaptcha server for a captcha, it works in
javascript at least.
Will test and comment further.
Left setting of wpCaptchaId and wpCaptchaWord in core. Can't think of a sane way to check and set them via an extension (subclass and override, or a hook). Annoyingly APIEditBeforeSave doesn't pass the params array