API to know if bitcoin-core has the private key (in the wallet.dat file) of a certain Bitcoin address? Does the bitcoin-core client have any RPC API to query the key pool? I have certain bitcoin address which I want to check if the wallet has access to (either via private key or via HD-private key derivation).

Is there a way to programmatically check this? I was going to use signmessage but that would need me to unlock the wallet with the passphrase first.
Use validateaddress [address].

It will give you all information about that address, including whether it has the private key (it will "ismine" : true and "iswatchonly" : false.