At first, my plan was to process the charge from the run and then send the results from my server. This way, if a user aborted after being billed but before the results were delivered, a webhook would notify my API. My server could then check the run endpoint to verify the charges against the number of results/pages sent, and if there was a mismatch, it would upload the missing data to keep everything consistent. However, I’ve decided it’s simpler to just send the data directly from the run instead.