> alchemy-common-errors

Diagnose and fix common Alchemy SDK and Web3 API errors. Use when encountering rate limits, RPC failures, invalid parameters, or blockchain query errors with the Alchemy SDK. Trigger: "alchemy error", "alchemy not working", "alchemy 429", "alchemy debug", "fix alchemy issue".

fetch
$curl "https://skillshub.wtf/jeremylongshore/claude-code-plugins-plus-skills/alchemy-common-errors?format=md"
SKILL.mdalchemy-common-errors

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 CodeErrorRoot CauseFix
401UnauthorizedInvalid or missing API keyVerify key in Alchemy Dashboard
403ForbiddenAPI key disabled or app deletedCreate new app in Dashboard
429Too Many RequestsRate limit exceededImplement backoff; upgrade plan
429Compute Units exceededCU quota depletedCheck CU usage in Dashboard

Alchemy Rate Limits by Plan

PlanCompute Units/secThroughput
Free330 CU/s~25 requests/s
Growth660 CU/s~50 requests/s
ScaleCustomCustom

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;
  }
}

NFT API Errors

ErrorRoot CauseFix
Empty ownedNftsAddress has no NFTs on this chainCheck correct network
Missing image.cachedUrlIPFS/Arweave gateway timeoutUse image.originalUrl fallback
getNftsForContract emptyContract not indexedWait for indexing; try refreshContract
Spam NFTs in resultsNo spam filterAdd excludeFilters: ['SPAM'] option
getNftMetadataBatch failsBatch too largeLimit to 100 tokens per batch

Enhanced API Errors

ErrorRoot CauseFix
getAssetTransfers emptyWrong categoryInclude all: EXTERNAL, ERC20, ERC721, ERC1155
getTokenBalances timeoutToo many tokensPaginate or use specific contract addresses
getTokenMetadata null fieldsToken not verifiedHandle null name/symbol gracefully
WebSocket disconnectIdle timeout (5 min)Implement auto-reconnect logic

Network-Specific Issues

// Diagnostic function
async function diagnoseAlchemyIssue(alchemy: Alchemy): Promise<string[]> {
  const issues: string[] = [];

  try {
    const blockNumber = await alchemy.core.getBlockNumber();
    console.log(`Connected: block #${blockNumber}`);
  } catch (err: any) {
    if (err.message?.includes('apiKey')) issues.push('API key invalid or missing');
    else if (err.code === 'ECONNREFUSED') issues.push('Cannot reach Alchemy servers — check network');
    else issues.push(`Connection error: ${err.message}`);
  }

  return issues;
}

Quick Diagnostic

# Test Alchemy API directly
curl -s "https://eth-mainnet.g.alchemy.com/v2/${ALCHEMY_API_KEY}" \
  -X POST \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"eth_blockNumber","params":[],"id":0}' | jq .

# Check CU usage (requires auth token)
curl -s "https://dashboard.alchemy.com/api/stats" \
  -H "Authorization: Bearer ${ALCHEMY_AUTH_TOKEN}" | jq .

Output

  • Error classified by type (auth, rate limit, RPC, network)
  • Root cause identified with specific fix
  • Diagnostic function for automated troubleshooting

Resources

Next Steps

For collecting debug bundles, see alchemy-debug-bundle.

┌ stats

installs/wk0
░░░░░░░░░░
github stars1.7K
██████████
first seenMar 23, 2026
└────────────

┌ repo

jeremylongshore/claude-code-plugins-plus-skills
by jeremylongshore
└────────────