---
name: jeremylongshore/anth-install-auth
source: https://app.decimal.ai/s/jeremylongshore-anth-install-auth@1/SKILL.md
source_sha256: 445a50eb1a97
---

# Anthropic Install & Auth

## Overview

Set up the official Anthropic SDK for Python or TypeScript and configure API key authentication. The SDK wraps the Claude Messages API at `https://api.anthropic.com/v1/messages`.

## Prerequisites

- Node.js 18+ or Python 3.8+
- Package manager (npm, pnpm, yarn, or pip)
- Anthropic account with API access at [console.anthropic.com](https://console.anthropic.com)
- API key from Console > API Keys

## Instructions

### Step 1: Install SDK

```bash
# Python
pip install anthropic

# TypeScript / Node.js
npm install @anthropic-ai/sdk

# With pnpm
pnpm add @anthropic-ai/sdk
```

### Step 2: Configure API Key

```bash
# Set environment variable (recommended)
export ANTHROPIC_API_KEY="sk-ant-api03-..."

# Or add to .env file
echo 'ANTHROPIC_API_KEY=sk-ant-api03-your-key-here' >> .env

# Verify it's set
echo $ANTHROPIC_API_KEY | head -c 15
# Expected: sk-ant-api03-...
```

### Step 3: Verify Connection (Python)

```python
import anthropic

client = anthropic.Anthropic()  # reads ANTHROPIC_API_KEY from env

message = client.messages.create(
    model="claude-sonnet-4-20250514",
    max_tokens=64,
    messages=[{"role": "user", "content": "Say hello in exactly 5 words."}]
)
print(message.content[0].text)
print(f"Model: {message.model}, Tokens: {message.usage.input_tokens}+{message.usage.output_tokens}")
```

### Step 4: Verify Connection (TypeScript)

```typescript
import Anthropic from '@anthropic-ai/sdk';

const client = new Anthropic();  // reads ANTHROPIC_API_KEY from env

const message = await client.messages.create({
  model: 'claude-sonnet-4-20250514',
  max_tokens: 64,
  messages: [{ role: 'user', content: 'Say hello in exactly 5 words.' }],
});

if (message.content[0].type === 'text') {
  console.log(message.content[0].text);
}
console.log(`Stop reason: ${message.stop_reason}`);
```

## Output

- Installed SDK package (`anthropic` for Python, `@anthropic-ai/sdk` for TS)
- Environment variable `ANTHROPIC_API_KEY` configured
- Successful API response confirming authentication works

## Error Handling

| Error | HTTP Code | Cause | Solution |
|-------|-----------|-------|----------|
| `authentication_error` | 401 | Invalid or missing API key | Verify key starts with `sk-ant-api03-` |
| `permission_error` | 403 | Key lacks required scope | Generate new key in Console |
| `not_found_error` | 404 | Invalid API endpoint | Ensure SDK is latest version |
| `ModuleNotFoundError` | N/A | SDK not installed | Run `pip install anthropic` or `npm install @anthropic-ai/sdk` |
| `connection_error` | N/A | Network/firewall blocking | Ensure HTTPS to `api.anthropic.com` is allowed |

## Enterprise Configuration

```python
# Custom base URL (for proxied environments)
client = anthropic.Anthropic(
    api_key="sk-ant-...",
    base_url="https://your-proxy.internal.com/v1",
    timeout=60.0,
    max_retries=3
)

# With explicit headers
client = anthropic.Anthropic(
    default_headers={"anthropic-beta": "messages-2024-12-19"}
)
```

## Security Considerations

- Never commit API keys to source control
- Use `.env` files with `.gitignore` exclusion
- Rotate keys periodically via Console > API Keys
- Use separate keys per environment (dev/staging/prod)
- Consider Anthropic's Workspace feature for team key isolation

## Resources

- [Anthropic API Getting Started](https://docs.anthropic.com/en/api/getting-started)
- [Python SDK](https://github.com/anthropics/anthropic-sdk-python)
- [TypeScript SDK](https://github.com/anthropics/anthropic-sdk-typescript)
- [Console](https://console.anthropic.com)

## Next Steps

After successful auth, proceed to `anth-hello-world` for your first Messages API call.