Cross-chain API
Transfer USDC tokens seamlessly across multiple EVM chains (Sepolia, Amoy, Neon) using burn-and-mint mechanism with automated bridge operations.
📋 Complete Network Details: For comprehensive network configurations, USDC contracts, and chain specifications, see USDC and Chains Guide.
Chain Normalization​
The API uses internal chain normalization for processing:
| Input Chain | Normalized Chain | Network | Native Token | Chain ID |
|---|---|---|---|---|
sepolia | Ethereum | Sepolia Testnet | ETH | 11155111 |
amoy | Polygon | Polygon Amoy | POL | 80002 |
neon | Neon | Neon EVM | NEON | 245022926 |
Initiate Cross-chain Transfer​
Initiate Cross-chain Transfer
Start a cross-chain transfer by creating a burn log. This is the first step in the burn-and-mint bridge process.
Parameters
user_idnumberrequiredUser ID initiating the transfer
amountstringrequiredAmount of USDC to transfer
from_chainstringrequiredSource chain (sepolia, amoy, neon)
to_chainstringrequiredDestination chain (sepolia, amoy, neon)
tokenstringrequiredToken symbol (USDC)
recipient_addressstringrequiredRecipient wallet address on destination chain
return_addressstringReturn address on source chain (for failed transfers)
Request Body
{
"user_id": 123,
"amount": "50.00",
"from_chain": "sepolia",
"to_chain": "amoy",
"token": "USDC",
"recipient_address": "0x742d35Cc6834C0532925a3b8D93b3C3e1DEF3e4D",
"return_address": "0x89d24A6b4CcB1B6fAA2625fE562bDD9a23260359"
}Response
{
"success": true,
"data": {
"log_id": "550e8400-e29b-41d4-a716-446655440000",
"nonce": "nonce_1734567890123",
"amount": "50.00",
"from_chain": "Ethereum",
"to_chain": "Polygon",
"token": "USDC",
"recipient_address": "0x742d35Cc6834C0532925a3b8D93b3C3e1DEF3e4D",
"return_address": "0x89d24A6b4CcB1B6fAA2625fE562bDD9a23260359",
"status": "INITIATED",
"created_at": "2024-01-15T10:30:00Z"
},
"message": "Crosschain transfer log created successfully"
}{
"error": "Token USDC is not supported on Polygon."
}curl -X POST https://api.brdz.link/api/crosschain/initiate \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "x-api-key: YOUR_API_KEY" \
-d '{
"user_id": 123,
"amount": "50.00",
"from_chain": "sepolia",
"to_chain": "amoy",
"token": "USDC",
"recipient_address": "0x742d35Cc6834C0532925a3b8D93b3C3e1DEF3e4D",
"return_address": "0x89d24A6b4CcB1B6fAA2625fE562bDD9a23260359"
}'Confirm Transfer (Update Burn Status)​
Confirm Transfer
Update transfer log after burn transaction is completed. Provides transaction hash and status update.
Parameters
log_idstringrequiredTransfer log ID from initiate response
tx_hashstringrequiredTransaction hash of the burn transaction
statusstringrequiredTransaction status (BURNED, FAILED)
Request Body
{
"log_id": "550e8400-e29b-41d4-a716-446655440000",
"tx_hash": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
"status": "BURNED"
}Response
{
"success": true,
"data": {
"log_id": "550e8400-e29b-41d4-a716-446655440000",
"tx_hash": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
"status": "BURNED",
"updated_at": "2024-01-15T10:35:00Z"
},
"message": "Crosschain log updated successfully"
}{
"error": "Missing log_id, tx_hash or status"
}curl -X PATCH https://api.brdz.link/api/crosschain/confirm \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "x-api-key: YOUR_API_KEY" \
-d '{
"log_id": "550e8400-e29b-41d4-a716-446655440000",
"tx_hash": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
"status": "BURNED"
}'Mint Tokens​
Mint Tokens
Mint tokens on the destination chain after successful burn. This completes the cross-chain transfer.
Parameters
noncestringrequiredUnique nonce from the transfer log
Request Body
{
"nonce": "nonce_1734567890123"
}Response
{
"success": true,
"tx_hash": "0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890",
"mint_tx_hash": "0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890",
"log_id": "550e8400-e29b-41d4-a716-446655440000",
"nonce": "nonce_1734567890123",
"status": "MINTED",
"data": {
"log_id": "550e8400-e29b-41d4-a716-446655440000",
"status": "MINTED",
"mint_tx_hash": "0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890",
"updated_at": "2024-01-15T10:38:00Z"
}
}{
"error": "Already minted"
}{
"error": "Bridge log not found"
}curl -X POST https://api.brdz.link/api/crosschain/mint \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "x-api-key: YOUR_API_KEY" \
-d '{"nonce": "nonce_1734567890123"}'Get USDC Balance​
Get USDC Balance
Check USDC balance on a specific chain for a given wallet address.
Parameters
chainstringrequiredChain ID (sepolia, amoy, neon) - path parameter
addressstringrequiredWallet address to check balance for - path parameter
contract_addressstringUSDC contract address (query parameter) - optional, uses environment default if not provided
Response
{
"chain": "sepolia",
"address": "0x742d35Cc6834C0532925a3b8D93b3C3e1DEF3e4D",
"balance": "125.50",
"contract_address": "0x9BF350fBaaA8c7200990B051809334c90778f435",
"source": "environment"
}{
"error": "Invalid wallet address"
}curl -X GET https://api.brdz.link/api/crosschain/balance/sepolia/0x742d35Cc6834C0532925a3b8D93b3C3e1DEF3e4D \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "x-api-key: YOUR_API_KEY"
# With custom contract address
curl -X GET "https://api.brdz.link/api/crosschain/balance/sepolia/0x742d35Cc6834C0532925a3b8D93b3C3e1DEF3e4D?contract_address=0x9BF350fBaaA8c7200990B051809334c90778f435" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "x-api-key: YOUR_API_KEY"Test Mint (Testnet Only)​
Test Mint USDC
Mint test USDC tokens for development and testing purposes. Available on testnets only.
Parameters
chainstringrequiredChain to mint on (sepolia, amoy, neon)
addressstringrequiredRecipient wallet address
amountstringrequiredAmount of USDC to mint
modestringMint mode (manual, metamask) - default: manual
Request Body
{
"chain": "sepolia",
"address": "0x742d35Cc6834C0532925a3b8D93b3C3e1DEF3e4D",
"amount": "100.00",
"mode": "manual"
}Response
{
"success": true,
"tx_hash": "0xtest1234567890abcdef1234567890abcdef1234567890abcdef1234567890",
"mode": "manual",
"address": "0x742d35Cc6834C0532925a3b8D93b3C3e1DEF3e4D",
"chain": "sepolia"
}{
"error": "Invalid wallet address format"
}curl -X POST https://api.brdz.link/api/crosschain/test-mint \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "x-api-key: YOUR_API_KEY" \
-d '{
"chain": "sepolia",
"address": "0x742d35Cc6834C0532925a3b8D93b3C3e1DEF3e4D",
"amount": "100.00",
"mode": "manual"
}'Burn Tokens (Backend/MetaMask)​
Burn Tokens
Execute burn transaction either via backend hot wallet or confirm MetaMask transaction.
Parameters
log_idstringrequiredTransfer log ID from initiate response
noncestringrequiredUnique nonce from transfer log
tx_hashstringTransaction hash (required for metamask mode)
modestringBurn mode (backend, metamask) - default: backend
Request Body
{
"log_id": "550e8400-e29b-41d4-a716-446655440000",
"nonce": "nonce_1734567890123",
"mode": "backend"
}Response
{
"success": true,
"data": {
"log_id": "550e8400-e29b-41d4-a716-446655440000",
"tx_hash": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
"status": "BURNED",
"updated_at": "2024-01-15T10:35:00Z"
}
}{
"error": "Invalid status. Burn already executed or failed."
}# Backend mode
curl -X POST https://api.brdz.link/api/crosschain/burn \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "x-api-key: YOUR_API_KEY" \
-d '{
"log_id": "550e8400-e29b-41d4-a716-446655440000",
"nonce": "nonce_1734567890123",
"mode": "backend"
}'
# MetaMask mode
curl -X POST https://api.brdz.link/api/crosschain/burn \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "x-api-key: YOUR_API_KEY" \
-d '{
"log_id": "550e8400-e29b-41d4-a716-446655440000",
"nonce": "nonce_1734567890123",
"tx_hash": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
"mode": "metamask"
}'Burn Tokens (Frontend Wallet)​
Burn Tokens with Frontend Wallet
Execute burn transaction using frontend wallet private key. Use with caution - private keys should be handled securely.
Parameters
log_idstringrequiredTransfer log ID from initiate response
noncestringrequiredUnique nonce from transfer log
private_keystringrequiredPrivate key of the wallet to execute burn transaction
Request Body
{
"log_id": "550e8400-e29b-41d4-a716-446655440000",
"nonce": "nonce_1734567890123",
"private_key": "0x..."
}Response
{
"success": true,
"tx_hash": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
"log_id": "550e8400-e29b-41d4-a716-446655440000",
"nonce": "nonce_1734567890123",
"status": "BURNED",
"data": {
"log_id": "550e8400-e29b-41d4-a716-446655440000",
"tx_hash": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
"status": "BURNED",
"updated_at": "2024-01-15T10:35:00Z"
}
}{
"error": "Invalid status. Burn already executed or failed."
}curl -X POST https://api.brdz.link/api/crosschain/burn-frontend \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "x-api-key: YOUR_API_KEY" \
-d '{
"log_id": "550e8400-e29b-41d4-a716-446655440000",
"nonce": "nonce_1734567890123",
"private_key": "0x..."
}'Get Cross-chain Transaction History​
Get Cross-chain Transaction History
Retrieve user's cross-chain transaction history with pagination and filtering options.
Parameters
user_idnumberrequiredUser ID to get history for (path parameter)
limitnumberMaximum records to return (1-100, default: 50)
offsetnumberRecords to skip for pagination (default: 0)
from_chainstringFilter by source chain (sepolia, amoy, neon)
to_chainstringFilter by destination chain (sepolia, amoy, neon)
statusstringFilter by status (INITIATED, BURNED, MINTED, FAILED)
Response
{
"success": true,
"message": "Crosschain transaction history retrieved successfully",
"data": {
"user_id": 123,
"transactions": [
{
"log_id": "550e8400-e29b-41d4-a716-446655440000",
"nonce": "nonce_1734567890123",
"user_id": 123,
"amount": "50.00",
"token": "USDC",
"from_chain": "Ethereum",
"to_chain": "Polygon",
"status": "MINTED",
"recipient_address": "0x742d35Cc6834C0532925a3b8D93b3C3e1DEF3e4D",
"burn_tx_hash": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
"mint_tx_hash": "0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890",
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-15T10:38:00Z"
}
],
"pagination": {
"total_count": 15,
"limit": 50,
"offset": 0,
"has_more": false
},
"filters_applied": {
"from_chain": null,
"to_chain": null,
"status": null
}
},
"timestamp": "2024-01-15T10:40:00Z"
}{
"success": false,
"error": {
"code": "ACCESS_DENIED",
"message": "You can only access your own crosschain transaction history",
"details": "Insufficient permissions"
},
"timestamp": "2024-01-15T10:40:00Z"
}curl -X GET "https://api.brdz.link/api/crosschain/history/123?limit=10&status=MINTED" \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "x-api-key: YOUR_API_KEY"Get Cross-chain Transaction Details​
Get Cross-chain Transaction Details
Get detailed information about a specific cross-chain transfer by log ID.
Parameters
log_idstringrequiredTransfer log ID (UUID) - path parameter
Response
{
"success": true,
"message": "Crosschain transaction details retrieved successfully",
"data": {
"transaction": {
"log_id": "550e8400-e29b-41d4-a716-446655440000",
"nonce": "nonce_1734567890123",
"user_id": 123,
"amount": "50.00",
"token": "USDC",
"from_chain": "Ethereum",
"to_chain": "Polygon",
"status": "MINTED",
"recipient_address": "0x742d35Cc6834C0532925a3b8D93b3C3e1DEF3e4D",
"return_address": "0x89d24A6b4CcB1B6fAA2625fE562bDD9a23260359",
"burn_tx_hash": "0x1234567890abcdef1234567890abcdef1234567890abcdef1234567890abcdef",
"mint_tx_hash": "0xabcdef1234567890abcdef1234567890abcdef1234567890abcdef1234567890",
"created_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-15T10:38:00Z"
},
"requested_by": 123,
"access_level": "user"
},
"timestamp": "2024-01-15T10:40:00Z"
}{
"success": false,
"error": {
"code": "TRANSACTION_NOT_FOUND",
"message": "Crosschain transaction not found or access denied",
"details": "Transaction may not exist or you may not have permission to view it"
},
"timestamp": "2024-01-15T10:40:00Z"
}curl -X GET https://api.brdz.link/api/crosschain/details/550e8400-e29b-41d4-a716-446655440000 \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "x-api-key: YOUR_API_KEY"Supported Chains & Tokens​
Blockchain Networks​
| Chain ID | Normalized | Network | Native Token | Chain ID | USDC Contract |
|---|---|---|---|---|---|
sepolia | Ethereum | Sepolia Testnet | ETH | 11155111 | 0x9BF350fBaaA8c7200990B051809334c90778f435 |
amoy | Polygon | Polygon Amoy | POL | 80002 | 0xC15239B6B9012F3225f9ebC091C7CE85FF31b983 |
neon | Neon | Neon EVM | NEON | 245022926 | 0xB5234C0418402775bCA3f73c4B0B5bDd906FCA11 |
Bridge Contracts​
| Network | Bridge Contract |
|---|---|
| Sepolia | 0x432a3Ab53BEe8657cD5E26Bd9A7251Bbd19B3Fb1 |
| Polygon Amoy | 0xb04EBd1cE956E5576c5A7A02f74E3DdCFeee564AF |
| Neon EVM | 0xF0E6D21447281D3a858B6Bfee045D5c48D2E6065 |
Transfer Routes​
All chains support bidirectional transfers:
- Sepolia ↔ Amoy - ETH ecosystem ↔ Polygon ecosystem
- Sepolia ↔ Neon - ETH ecosystem ↔ Solana-compatible EVM
- Amoy ↔ Neon - Polygon ecosystem ↔ Solana-compatible EVM
Cross-chain Transfer Flow​
Complete Transfer Process​
- Initiate: Call
/crosschain/initiatewith transfer details - Burn: Execute burn transaction (backend, MetaMask, or frontend wallet)
- Mint: Call
/crosschain/mintwith nonce to complete transfer
Transfer States​
| Status | Description | Next Action |
|---|---|---|
INITIATED | Transfer initiated, waiting for burn | Execute burn transaction |
BURNED | Burn transaction confirmed | Call mint endpoint |
MINTED | Transfer successfully completed | None |
FAILED | Transfer failed at some step | Contact support |
Burn Modes​
| Mode | Description | Use Case |
|---|---|---|
backend | Backend executes burn with hot wallet | Automated transfers |
metamask | User burns via MetaMask, confirms with tx hash | User-controlled transfers |
frontend | Frontend executes burn with provided private key | Advanced wallet integration |
Estimated Times​
- Sepolia → Amoy: ~5-8 minutes
- Amoy → Neon: ~3-6 minutes
- Sepolia → Neon: ~6-10 minutes
Times may vary based on network congestion
Use /crosschain/test-mint to get test USDC tokens for development and testing cross-chain transfers.
- Minimum transfer: 1.00 USDC
- Maximum transfer: 10,000.00 USDC per transaction
- Daily limit: 50,000.00 USDC per user
- Platform fee: 0.1% of transfer amount
- Network fees: Paid in native tokens (ETH, POL, NEON)
- Minimum fee: $0.10 USD equivalent
For comprehensive network configurations, RPC URLs, explorers, and additional chain information, see the USDC and Chains Guide.