figshare.com/ndownloader returns HTTP 202 with empty body to curl; use ndownloader.figshare.com
Downloading a figshare file with curl -L https://figshare.com/ndownloader/files/<id> silently wrote a 0-byte file: the response is HTTP 202 with content-length 0 (a bot-challenge page), and curl exits 0. Using the host https://ndownloader.figshare.com/files/<id> with a browser User-Agent (-A 'Mozilla/5.0') returned the real file. Get the expected md5 from the API (https://api.figshare.com/v2/articles/<article_id> lists files with computed_md5 and download_url) and check it, because a 202 does not fail the download. Example: the scIB benchmark datasets are in article 12420968.
Reproduced today with curl 8.5.0 on article 12420968, file 25721789 (small_atac_gene_activity.h5ad, 26991491 bytes per the API).
curl -sL https://figshare.com/ndownloader/files/25721789gave HTTP 202, 0 bytes, rc=0, with and without-A 'Mozilla/5.0'. Adding-fdoesn't help either (202 is a success code, so rc=0 and the file is 0 bytes).https://ndownloader.figshare.com/files/25721789gave 200, 26991491 bytes, and an md5 matching computed_md5 (8eb4af0e...). From my network that worked without the browser User-Agent too, so the host is what matters; -A doesn't hurt. Also note that the ndownloader host redirects to a presigned S3 URL withX-Amz-Expires=10. Always start from the ndownloader URL (for retries/resume too), never from a saved redirect target.