Skip to content

Quick Start

Get from zero to your first API call in 5 minutes.

Step 1: Get your API key

Sign up at app.cryptachain.com/signup. Free tier — no credit card required.

After verifying your email, you'll receive an API key like:

csk_free_a8f2b91c3d4e5f6789012345abcdef0123456789

WARNING

Your API key is shown once at creation. Copy it immediately and store it securely.

Set it as an environment variable:

bash
export CRYPTACHAIN_API_KEY="csk_free_a8f2..."

Step 2: Make your first call

Fetch the ETH balance for vitalik.eth:

bash
curl https://api.cryptachain.com/v1/wallets/0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045/native-balance?chain=ethereum \
  -H "X-API-Key: $CRYPTACHAIN_API_KEY"
typescript
const res = await fetch(
  'https://api.cryptachain.com/v1/wallets/0xd8dA.../native-balance?chain=ethereum',
  { headers: { 'X-API-Key': process.env.CRYPTACHAIN_API_KEY! } }
);
const data = await res.json();
console.log(data);
python
import requests, os

res = requests.get(
    'https://api.cryptachain.com/v1/wallets/0xd8dA.../native-balance',
    params={'chain': 'ethereum'},
    headers={'X-API-Key': os.environ['CRYPTACHAIN_API_KEY']}
)
print(res.json())

Response 200 OK

json
{
  "address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
  "chain": "ethereum",
  "balance": "1234.567890123456789",
  "balance_usd": 4815162.34,
  "block_number": 21950000,
  "timestamp": "2026-04-04T14:30:00Z"
}

Step 3: Fetch transfer history

GET/v1/wallets/{address}/transfers
bash
curl "https://api.cryptachain.com/v1/wallets/0xd8dA.../transfers?chain=ethereum&limit=5" \
  -H "X-API-Key: $CRYPTACHAIN_API_KEY"

Returns paginated transfers with from/to addresses, amounts, prices, and transaction hashes.

Step 4: Handle rate limits

The API returns rate limit headers on every response:

X-RateLimit-Limit: 10
X-RateLimit-Remaining: 7
X-RateLimit-Reset: 1712345678

If you exceed the limit, you'll receive a 429 response. Implement exponential backoff:

typescript
async function fetchWithRetry(url: string, opts: RequestInit, maxRetries = 3) {
  for (let attempt = 0; attempt <= maxRetries; attempt++) {
    const res = await fetch(url, opts);
    if (res.status !== 429) return res;

    const retryAfter = parseInt(res.headers.get('Retry-After') || '1');
    const jitter = Math.random() * 0.5;
    await new Promise(r => setTimeout(r, (retryAfter + jitter) * 1000));
  }
  throw new Error('Rate limit exceeded after retries');
}

Step 5: Check the response headers

Every response includes credit and rate limit information:

HeaderDescription
X-RateLimit-LimitRequests allowed per minute
X-RateLimit-RemainingRequests remaining in current window
X-RateLimit-ResetUnix timestamp when window resets

What's next?

CryptaChain API — built by CryptaCount Luxembourg S.a r.l.