When you need to file a support ticket or debug a persistent issue, collect these items.
Every Anthropic API response includes a request-id header. This is the single most important thing for support tickets.
try {
const message = await client.messages.create({ ... });
// Access response headers via the raw response
} catch (err) {
if (err instanceof Anthropic.APIError) {
console.error('Request ID:', err.headers?.['request-id']);
console.error('Status:', err.status);
console.error('Error type:', err.error?.type);
console.error('Message:', err.message);
}
}
function logAnthropicError(err: unknown) {
if (err instanceof Anthropic.APIError) {
const bundle = {
timestamp: new Date().toISOString(),
request_id: err.headers?.['request-id'],
status: err.status,
error_type: err.error?.type,
error_message: err.message,
rate_limit_remaining: err.headers?.['claude-ratelimit-requests-remaining'],
rate_limit_reset: err.headers?.['claude-ratelimit-requests-reset'],
};
console.error('Anthropic Debug Bundle:', JSON.stringify(bundle, null, 2));
return bundle;
}
console.error('Non-API error:', err);
}
# Minimal reproduction — include this in support tickets
curl -v https://api.anthropic.com/v1/messages \
-H "x-api-key: $ANTHROPIC_API_KEY" \
-H "claude-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"model": "claude-sonnet-4-20250514",
"max_tokens": 100,
"messages": [{"role": "user", "content": "test"}]
}' 2>&1 | grep -E "request-id|HTTP|error"
# API status
curl -s https://status.anthropic.com/api/v2/status.json | python3 -m json.tool
# Recent incidents
curl -s https://status.anthropic.com/api/v2/incidents.json | python3 -c "
import json, sys
data = json.load(sys.stdin)
for inc in data['incidents'][:3]:
print(f\"{inc['created_at'][:10]}: {inc['name']} ({inc['status']})\")
"
request-id header)npm list @claude-ai/sdk or pip show anthropic)try:
message = client.messages.create(...)
except anthropic.APIStatusError as e:
print(f"Request ID: {e.response.headers.get('request-id')}")
print(f"Status: {e.status_code}")
print(f"Error: {e.message}")
| Error | Cause | Solution |
|---|---|---|
| API Error | Check error type and status code | See clade-common-errors |
See Step 1 (request ID extraction), Step 2 (full error logging), Step 3 (curl reproduction), and Step 4 (status check) above.
See clade-common-errors for specific error solutions.