You won't be charged in case something goes wrong during an API call (e.g. a network issue or any response code other than 200). A charge is only triggered when a report is successfully delivered.
You are charged in 2 cases:
When requesting a new report that you don't have in your database yet
When updating expired reports