3.7 KiB
3.7 KiB
Configuration
Environment Variables
Set Variables
| Platform | Command |
|---|---|
| Linux/macOS | export CLOUDFLARE_API_TOKEN='token' |
| PowerShell | $env:CLOUDFLARE_API_TOKEN = 'token' |
| Windows CMD | set CLOUDFLARE_API_TOKEN=token |
Security: Never commit tokens. Use .env files (gitignored) or secret managers.
.env File Pattern
# .env (add to .gitignore)
CLOUDFLARE_API_TOKEN=your-token-here
CLOUDFLARE_ACCOUNT_ID=your-account-id
// TypeScript
import 'dotenv/config';
const client = new Cloudflare({
apiToken: process.env.CLOUDFLARE_API_TOKEN,
});
# Python
from dotenv import load_dotenv
load_dotenv()
client = Cloudflare(api_token=os.environ["CLOUDFLARE_API_TOKEN"])
SDK Configuration
TypeScript
const client = new Cloudflare({
apiToken: process.env.CLOUDFLARE_API_TOKEN,
timeout: 120000, // 2 min (default 60s), in milliseconds
maxRetries: 5, // default 2
baseURL: 'https://...', // proxy (rare)
});
// Per-request overrides
await client.zones.get(
{ zone_id: 'zone-id' },
{ timeout: 5000, maxRetries: 0 }
);
Python
client = Cloudflare(
api_token=os.environ["CLOUDFLARE_API_TOKEN"],
timeout=120, # seconds (default 60)
max_retries=5, # default 2
base_url="https://...", # proxy (rare)
)
# Per-request overrides
client.with_options(timeout=5, max_retries=0).zones.get(zone_id="zone-id")
Go
client := cloudflare.NewClient(
option.WithAPIToken(os.Getenv("CLOUDFLARE_API_TOKEN")),
option.WithMaxRetries(5), // default 10 (higher than TS/Python)
option.WithRequestTimeout(2 * time.Minute), // default 60s
option.WithBaseURL("https://..."), // proxy (rare)
)
// Per-request overrides
client.Zones.Get(ctx, "zone-id", option.WithMaxRetries(0))
Configuration Options
| Option | TypeScript | Python | Go | Default |
|---|---|---|---|---|
| Timeout | timeout (ms) |
timeout (s) |
WithRequestTimeout |
60s |
| Retries | maxRetries |
max_retries |
WithMaxRetries |
2 (Go: 10) |
| Base URL | baseURL |
base_url |
WithBaseURL |
api.cloudflare.com |
Note: Go SDK has higher default retries (10) than TypeScript/Python (2).
Timeout Configuration
When to increase:
- Large zone transfers
- Bulk DNS operations
- Worker script uploads
const client = new Cloudflare({
timeout: 300000, // 5 minutes
});
Retry Configuration
When to increase: Rate-limit-heavy workflows, flaky network
When to decrease: Fast-fail requirements, user-facing requests
// Increase retries for batch operations
const client = new Cloudflare({ maxRetries: 10 });
// Disable retries for fast-fail
const fastClient = new Cloudflare({ maxRetries: 0 });
Wrangler CLI Integration
# Configure authentication
wrangler login
# Or
export CLOUDFLARE_API_TOKEN='token'
# Common commands that use API
wrangler deploy # Uploads worker via API
wrangler kv:key put # KV operations
wrangler r2 bucket create # R2 operations
wrangler d1 execute # D1 operations
wrangler pages deploy # Pages operations
# Get API configuration
wrangler whoami # Shows authenticated user
wrangler.toml
name = "my-worker"
main = "src/index.ts"
compatibility_date = "2024-01-01"
account_id = "your-account-id"
# Can also use env vars:
# CLOUDFLARE_ACCOUNT_ID
# CLOUDFLARE_API_TOKEN
See Also
- api.md - Client initialization, authentication
- gotchas.md - Rate limits, timeout errors
- Wrangler Reference - CLI tool details