Loading...
Loading...
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.
npx skill4agent add ticruz38/skills binance-authnpm install
npm run buildnode dist/cli.js status# 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 testnet# Check specific profile
node dist/cli.js health prod
# Check all profiles
node dist/cli.js healthnode dist/cli.js listnode dist/cli.js balance prodnode dist/cli.js validate prodnode dist/cli.js disconnect prodimport { BinanceAuthClient, getBinanceAuth } from '@openclaw/binance-auth';
// Create client for specific profile
const binance = new BinanceAuthClient('prod');
// Or use singleton
const binance = getBinanceAuth('prod');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);
}const isConnected = await binance.isConnected();
console.log('Connected:', isConnected);const credentials = await binance.getCredentials();
if (credentials) {
console.log('API Key:', credentials.apiKey);
console.log('Environment:', credentials.environment);
}const health = await binance.healthCheck();
console.log('Status:', health.status); // 'healthy' | 'unhealthy'
console.log('Message:', health.message);const balance = await binance.getBalance();
if (balance) {
console.log('Total BTC:', balance.totalBTC);
console.log('Balances:', balance.balances);
console.log('Permissions:', balance.permissions);
}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);const disconnected = await binance.disconnect();
console.log('Disconnected:', disconnected);SPOTMARGINFUTURESDELIVERYPERMIP_RESTRICTEDhttps://api.binance.comhttps://testnet.binance.vision~/.openclaw/skills/auth-provider/credentials.dbinterface 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;
}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
}
}# Type checking
npm run typecheck
# Build
npm run build
# Run CLI
npm run cli -- status@openclaw/auth-provider