2 anda_skoa

That is correct, we use it in separate thread but for GUIsh application it's a problem.

I am thinking this:

downloadFileAsync(QString dropboxFilePath, QString localDestinationPath)
.setProgressCallback(std::function )
.setErrorCallback(std::function )
.start();

to implement it we would need internal working thread, queue of request and exception handling and maybe command pattern for selected API calls.

For progress we already have signal void ApiClient:rogress(qint64 bytesProcessed, qint64 total);
and to cancel ApiEndpoint::cancel();

but cancellation of async calls might need revision too.

Thank you for comment, it make sense.