Finesse doesn't have that data available to pass in when using the workflows. I am not aware of a 100% accurate way to get this data.
I am going to assume that you are going to ask me what is the non 100% accurate way and this is the only thing I can think of.
For the call end time. Finesse sends a DELETE event when one of the two parties on the call hang up. That call party (participant) will have a state of DROPPED. As part of that DROPPED state, there is a stateChangeTime, which is the time that the participant hung up. Since it is a two party call, that is the time that the call ends. Again, this is an indirect way to get this timestamp, which is why I say it isn't 100% accurate. Below is an example:
For the call duration. This would be a bit tricky, but the startTime (in the example above) is the time that participant joined the call. If the original party on the call is no longer there by the end of the call, this won't work. But if you take the startTime of one of the original participants and the call end time, you can calculate the duration of the call. Not 100% accurate.
After getting your information, you can send the HTTP POST. Here is an sample gadget for sending an External REST API: finesse-sample-code/ExternalRestApiSampleGadget at master · CiscoDevNet/finesse-sample-code · GitHub
Since you stated that you are on UCCX 10.6, the gadget won't work as is since the version on github is for 11.0. There were some gadget changes between 10.6 and 11.0, so you would have to reverse the steps here: How to convert your existing 10.5.1 custom gadget to work with 10.6.1, 11.0.1/11.5.1/11.6.1
Remember, the full disclaimer is that the data won't be 100% accurate, but I thought I would put it out there just in case they would rather have inaccurate data versus no data.