Install BitGo Express

Overview

BitGo Express is a light-weight service that runs as a local server daemon in your data center that proxies to our collection of REST APIs. BitGo Express is language agnostic, allowing you the flexibility to choose a language, without having to rewrite any logic.

When you integrate BitGo Express, you can securely run sensitive operations client-side. For example, you can partially sign your transactions before submitting them to BitGo using your own access tokens and wallet keys to prevent exposure risks. Most importantly, your private keys never leave your network and are never seen by BitGo.

Although you can manually develop and deploy the BitGo Express server locally, we recommend running it through our provided Docker container, because this is the most secure way to run the server. We keep our Docker containers up to date, ensuring continuous feature parity with our SDK and REST APIs. When you use Docker, you don't have to upgrade SDK packages directly on your own instance of the server.

Prerequisites

1. Pull the Latest Docker Container

docker pull --platform linux/amd64 bitgo/express:latest

Step Result

latest: Pulling from bitgo/express
Digest: sha256:40d6ac...
Status: Image is up to date for bitgo/express:latest
docker.io/bitgo/express:latest

2. Run the Latest Docker Container

docker run --platform linux/amd64 -it -p 3080:3080 bitgo/express:latest
docker run --platform linux/amd64 -it -p 4000:4000 bitgo/express:latest --port 4000

Note: Use the custom port option if port 3080 is already in use on your machine. Replace 4000 with your preferred port number.

Step Result

...
BitGo-Express running
Environment: test
Base URI: http://0.0.0.0:3080

3. Verify Express Is Running

Endpoint: Ping

curl -X GET "http://localhost:3080/api/v2/ping"

Step Result

{
  "status": "service is ok!",
  "environment": "BitGo Testnet"
}

4. (Optional) Make Your First Authenticated Call

Express proxies your requests to BitGo. Calls are identical to direct API calls, but you point at localhost:3080 instead of app.bitgo-test.com. Confirm your access token is working by fetching your user profile:

Endpoint: Get user

export BITGO_ACCESS_TOKEN="v2x..."
export USER_ID="<YOUR_USER_ID>"

curl -X GET "http://localhost:3080/api/v2/user/$USER_ID" \
  -H "Authorization: Bearer $BITGO_ACCESS_TOKEN"

Step Result

{
  "user": {
    "id": "62ab90e06dfda30007974f0a52a12995",
    "username": "[email protected]",
    "name": { "first": "Your", "last": "Name" },
    "email": { "email": "[email protected]", "verified": true }
  }
}

Next Steps

Get started making Express calls in the testnet environment. For more details, see Wallets Overview.

If you're ready to use BitGo Express in production, see Run Express in Production.

See Also