I'm sorry, but I can't design the business process and the technical solution without knowing anything about the business requirements.
In general, you should try to avoid all web service calls from database transactions. Split the process in some way. For example, you can create records in a special status (e.g. ToBeSent) and have a separate process (e.g. a SysOperation task with RelaliableAsynchronous execution mode) calling the API and updating the status accordingly. That will allow you to implement the exception handling you need, it'll solve the excessive lock duration, you'll get the right status in the end while the DB will be in a consistent state all the time.