Alchemy Common Errors
Overview
Troubleshooting guide for Alchemy SDK errors covering rate limits, RPC failures, invalid parameters, and network-specific issues.
Error Reference
Authentication & Rate Limits
| HTTP Code | Error | Root Cause | Fix |
|---|
401 | Unauthorized | Invalid or missing API key | Verify key in Alchemy Dashboard |
403 | Forbidden | API key disabled or app deleted | Create new app in Dashboard |
429 | Too Many Requests | Rate limit exceeded | Implement backoff; upgrade plan |
429 | Compute Units exceeded | CU quota depleted | Check CU usage in Dashboard |
Alchemy Rate Limits by Plan
| Plan | Compute Units/sec | Throughput |
|---|
| Free | 330 CU/s | ~25 requests/s |
| Growth | 660 CU/s | ~50 requests/s |
| Scale | Custom | Custom |
RPC & Query Errors
// Common RPC error handler
import { Alchemy, Network } from 'alchemy-sdk';
async function safeAlchemyCall<T>(
operation: () => Promise<T>,
context: string
): Promise<T | null> {
try {
return await operation();
} catch (error: any) {
const code = error.code || error.response?.status;
switch (code) {
case -32602: // Invalid params
console.error(`[${context}] Invalid parameters: ${error.message}`);
console.error('Common causes: wrong address format, invalid block number, missing 0x prefix');
break;
case -32600: // Invalid request
console.error(`[${context}] Malformed JSON-RPC request`);
break;
case -32601: // Method not found
console.error(`[${context}] RPC method not available on this network`);
console.error('Some Enhanced APIs are Ethereum-only');
break;
case -32000: // Server error
console.error(`[${context}] Node server error — usually transient, retry`);
break;
case 429:
const retryAfter = error.response?.headers?.['retry-after'] || 1;
console.error(`[${context}] Rate limited — retry after ${retryAfter}s`);
break;
default:
console.error(`[${context}] Unknown error: ${code} — ${error.message}`);
}
return null;
}
}