binance-auth
Original:🇺🇸 English
Translated
2 scriptsChecked / no sensitive code detected
Binance API authentication and key management for trading skills. Securely stores API keys, validates permissions, supports testnet vs production environments, and provides health checks with balance queries.
6installs
Sourceticruz38/skills
Added on
NPX Install
npx skill4agent add ticruz38/skills binance-authTags
Translated version includes tags in frontmatterSKILL.md Content
View Translation Comparison →Binance Auth Skill
Authentication skill for Binance cryptocurrency exchange API. Built on top of auth-provider for secure API key storage and management. Supports both Binance production and testnet environments.
Features
- Secure API Key Storage: Encrypted storage of API keys and secrets
- Environment Toggle: Switch between production and testnet seamlessly
- Permission Validation: Verify API key permissions (spot, margin, futures)
- Health Checks: Validate API connectivity and key status
- Multi-Profile: Support multiple Binance accounts
- Balance Queries: Check account balances as part of health validation
Installation
bash
npm install
npm run buildEnvironment Variables
No environment variables required - API keys are configured per-profile via CLI.
CLI Usage
View Status
bash
node dist/cli.js statusConnect API Key
bash
# Production environment
node dist/cli.js connect prod \
--key YOUR_API_KEY \
--secret YOUR_API_SECRET \
--env production
# Testnet environment
node dist/cli.js connect test \
--key YOUR_API_KEY \
--secret YOUR_API_SECRET \
--env testnetHealth Check
bash
# Check specific profile
node dist/cli.js health prod
# Check all profiles
node dist/cli.js healthList Profiles
bash
node dist/cli.js listGet Balance
bash
node dist/cli.js balance prodValidate Permissions
bash
node dist/cli.js validate prodDisconnect
bash
node dist/cli.js disconnect prodJavaScript/TypeScript API
Initialize Client
typescript
import { BinanceAuthClient, getBinanceAuth } from '@openclaw/binance-auth';
// Create client for specific profile
const binance = new BinanceAuthClient('prod');
// Or use singleton
const binance = getBinanceAuth('prod');Connect API Key
typescript
const result = await binance.connect({
apiKey: 'your-api-key',
apiSecret: 'your-api-secret',
environment: 'production', // or 'testnet'
});
if (result.success) {
console.log('Connected! Permissions:', result.permissions);
}Check Connection
typescript
const isConnected = await binance.isConnected();
console.log('Connected:', isConnected);Get API Credentials
typescript
const credentials = await binance.getCredentials();
if (credentials) {
console.log('API Key:', credentials.apiKey);
console.log('Environment:', credentials.environment);
}Health Check
typescript
const health = await binance.healthCheck();
console.log('Status:', health.status); // 'healthy' | 'unhealthy'
console.log('Message:', health.message);Get Account Balance
typescript
const balance = await binance.getBalance();
if (balance) {
console.log('Total BTC:', balance.totalBTC);
console.log('Balances:', balance.balances);
console.log('Permissions:', balance.permissions);
}Validate Permissions
typescript
const validation = await binance.validatePermissions();
console.log('Valid:', validation.valid);
console.log('Can Trade:', validation.canTrade);
console.log('Can Withdraw:', validation.canWithdraw);
console.log('Permissions:', validation.permissions);Disconnect
typescript
const disconnected = await binance.disconnect();
console.log('Disconnected:', disconnected);API Permissions
Binance API keys can have the following permissions:
- - Spot trading
SPOT - - Margin trading
MARGIN - - Futures trading
FUTURES - - Coin-margined futures
DELIVERY - - Permanent API key
PERM - - IP-restricted access
IP_RESTRICTED
Environments
Production
- API Base:
https://api.binance.com - Real trading with real funds
- Requires verified Binance account
Testnet
- API Base:
https://testnet.binance.vision - Paper trading with test funds
- Free testnet registration at: https://testnet.binance.vision/
Storage Location
Credentials are stored in the auth-provider database:
~/.openclaw/skills/auth-provider/credentials.dbAPI keys are encrypted with AES-256.
TypeScript Types
typescript
interface BinanceCredentials {
apiKey: string;
apiSecret: string;
environment: 'production' | 'testnet';
permissions?: string[];
}
interface BinanceConnectionResult {
success: boolean;
permissions?: string[];
canTrade?: boolean;
canWithdraw?: boolean;
error?: string;
}
interface BinanceBalance {
totalBTC: string;
balances: Array<{
asset: string;
free: string;
locked: string;
}>;
permissions: string[];
}
interface BinanceValidationResult {
valid: boolean;
permissions: string[];
canTrade: boolean;
canWithdraw: boolean;
}Error Handling
typescript
try {
await binance.connect({ apiKey, apiSecret, environment: 'production' });
} catch (error) {
if (error.message.includes('Invalid API key')) {
// API key format is invalid
} else if (error.message.includes('API key validation failed')) {
// Key rejected by Binance
}
}Security Notes
- API secrets are never exposed after storage
- All API calls use HMAC-SHA256 signatures
- Database file has 0600 permissions (user read/write only)
- Use IP restrictions on your Binance API keys for added security
- Never commit API credentials to version control
Testing
bash
# Type checking
npm run typecheck
# Build
npm run build
# Run CLI
npm run cli -- statusDependencies
- - Secure credential storage
@openclaw/auth-provider - Uses crypto module for HMAC-SHA256 signatures