Showing results for 
Search instead for 
Did you mean: 
Sign up Log in
It's not the same without you

Join the community to find out what other Atlassian users are discussing, debating and creating.

Atlassian Community Hero Image Collage

How to download a file from private repository using curl



Is there a way to download a file from a private repository using curl or wget?

I'm getting a 401 when hitting below URL. The app password got only read permissions to Repository and I wonder if this is enough or the URL is correct. I can't use the RAW file as the URL to RAW version is changing unless there is URL to always get the RAW version of the file?

curl -s -S --user username:apppassword -L -O<ORG_NAME>/<REPO>/src/master/<FOLDER>/file.txt

In a browser this will display the file and the website itself so it might not be a good way of doing it but I can't find a correct API URL.

Update: I found a correct URL for the latest RAW file but I always get 401 with curl/wget and an apppassword. What permissions app password needs to get this file?

3 answers

Ok found a "correct" way to do it. "Correct" as you shouldn't use passwords in a bash like that.

curl -s -S --user username:apppassword -L -O<ORGANISATION>/<REPO>/src/master/<FOLDER>/<FILE>

Thanks! I have the same question. This worked for me, as well. 

One way to import passwords to a bash script is from an external file.


source passwords.txt

curl -s -S --user ${USER}:${APP_PASSWORD} -L -O<ORGANISATION>/<REPO>/src/master/<FOLDER>/<FILE>





As this thread comes up when trying to research this issue at the end of 2021, here is and example line that works for me, when trying to pull down a file in a public repository


curl -s -L{workspace)/{repo_name}/src/main/bin/OneLineRoot


This pulls down the file /bin/OneLineRoot within the main branch, from repository {repo_name} within the {workspace}.


Bitbucket's interface needs to be a lot more exact than say the one presented by github.

Just letting anyone who's curious. Don't use, at least every time I did I was just getting an error. Instead, I've opted to just copy the link to the download from the "Download's" Tab in the repository. Below is my example. 


curl -H "Cache-Control: no-cache" --user <Username>:<Password> -L -O<orgname>/<Repository>/get/<filename>.zip

You'll need to add -H "Cache-Control: no-cache" don't ask me why but setting a custom header seems to solve the problem.

I also removed the silence, just because I like to know I'm not just sitting on a dead page.


And if anyone is looking to streamline this. I'm using this as a deployment system via an script built into a custom ISO with a redirect link to a custom domain that points to the BitBucket download link. Meaning all I need to do is update my URL redirect. I've put below my .sh code in case anyone is curious. It's a neat little trick to save some time in the future.  

Obviously, this will also work within the normal terminal. 

url=$(curl -Ls -o /dev/null -w %{url_effective} <redirect url>)

echo $url

curl -H "Cache-Control: no-cache" --user <Username>:<Password> -L -O $url

Suggest an answer

Log in or Sign up to answer
Community showcase
Published in Bitbucket

⭐ Calling all Bitbucket and DevOps experts: Special showcase opportunity ⭐

Hi, Bitbucket community! Are you a DevOps practitioner (or know one in your network)? Do you have DevOps tips, tricks, or learnings you'd like to share with the community? If so, we'd love to hea...

1,477 views 4 7
Read article

Community Events

Connect with like-minded Atlassian users at free events near you!

Find an event

Connect with like-minded Atlassian users at free events near you!

Unfortunately there are no Community Events near you at the moment.

Host an event

You're one step closer to meeting fellow Atlassian users at your local event. Learn more about Community Events

Events near you