Quickstart
Deploy V3 Custody and make your first API call in under 5 minutes to query balances or initiate a transaction.
const response = await fetch('http://localhost:3000/v1/accounts/0x742d35Cc6634C0532925a3b8D7c406D7247C748/page-balances?chain=ethereum', {
headers: {
'Authorization': `Bearer ${YOUR_API_KEY}`,
'Content-Type': 'application/json',
},
});
const balances = await response.json();
console.log(balances);
curl -X GET \
http://localhost:3000/v1/accounts/0x742d35Cc6634C0532925a3b8D7c406D7247C748/balances?chain=ethereum \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json'
import requests
response = requests.get(
'http://localhost:3000/v1/accounts/0x742d35Cc6634C0532925a3b8D7c406D7247C748/balances?chain=ethereum',
headers={
'Authorization': f'Bearer {YOUR_API_KEY}',
'Content-Type': 'application/json',
}
)
balances = response.json()
print(balances)
{
"account": "0x742d35Cc6634C0532925a3b8D7c406D7247C748",
"chain": "ethereum",
"balances": [
{
"token": "0xA0b86a33... native ETH",
"balance": "1.234 ETH",
"usdValue": 2500.50
}
],
"timestamp": "2024-01-15T10:30:00Z"
}
{
"error": "Invalid account address",
"code": 400
}
Prerequisites
Before deploying V3 Custody, ensure you have the following ready:
- Docker installed and running (version
>=20.10) - Node.js
>=18for local development - A supported wallet seed phrase for MPC key generation
- Basic familiarity with REST APIs and JSON
Reserve at least 4GB RAM for the self-hosted instance. Access to 20+ chains requires configuring RPC endpoints during setup.
Deploy V3 Custody
Deploy your self-hosted instance using Docker for quick setup.
Pull the Image
Fetch the latest V3 Custody image from the registry.
docker pull v3finance/custody:latest
Run the Container
Start the service with your configuration. Replace YOUR_SEED_PHRASE with a secure 12-24 word mnemonic.
docker run -d \
-p 3000:3000 \
-e SEED_PHRASE="YOUR_SEED_PHRASE" \
-e RPC_ETHEREUM="https://mainnet.infura.io/v3/YOUR_INFURA_KEY" \
v3finance/custody:latest
Verify Deployment
Check the logs and access the web interface at http://localhost:3000.
docker logs $(docker ps --filter ancestor=v3finance/custody:latest -q)
Your instance is now running MPC custody on your infrastructure.
Generate API Credentials
Create your first API key for programmatic access.
Access Admin Panel
Open http://localhost:3000/admin in your browser and log in with the generated admin credentials from the Docker logs.
Create API Key
Navigate to API Keys > Generate New Key.
Copy the key (format: v3c_...). Store it securely as YOUR_API_KEY.
API keys support granular permissions. For production, create role-based keys with policy restrictions.
Fetch Account Balances
Make your first API call to query balances for an account.
The EVM account address (e.g., 0x742d35Cc6634C0532925a3b8D7c406D7247C748).
Blockchain network (e.g., ethereum, polygon, arbitrum).
Initiate a Transaction with Policy Approval
Test the full flow: propose a transaction, trigger policy review, and approve.
const tx = await fetch('http://localhost:3000/v1/transactions', {
method: 'POST',
headers: {
'Authorization': `Bearer ${YOUR_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
account: '0x742d35Cc6634C0532925a3b8D7c406D7247C748',
chain: 'ethereum',
to: '0x1234567890123456789012345678901234567890',
value: '0.1',
data: '0x',
reason: 'Test transfer'
}),
});
The transaction enters Reserved status and awaits policy approval.
- Open
http://localhost:3000/approvals(web) or the mobile app. - Review details: amount (
0.1 ETH), recipient, reason. - Sign with MPC threshold (e.g., 2-of-3 signers).
Transaction broadcasts on approval.
Next Steps
Policy Engine
Configure rules, limits, and multi-party approvals for secure operations.
Ledger Explorer
Dive into double-entry postings and historical balances.
Reports
Generate reproducible financial reports from on-chain data.
Supported Chains
Add RPCs for 20+ chains like Ethereum, Polygon, and Solana.
Congratulations! You've deployed V3 Custody and made your first API call. Customize policies and scale to production.