How can I hide custom field from users used for caching response from external api?

Using a leading underscore will hide the field’s value from the default WordPress Custom Fields section, not the meta box you create via the plugin.

If you don’t want the field visible in your custom meta box, don’t add the field to the meta box at all, it really serves no purpose there anyway. You can manage the field’s value in your code directly via update_post_meta and get_post_meta.