Lộ trình học›Claude API›Building with the Claude API Mở bản đồ

6.5 · Lấy API key từ Anthropic Console

Bài viếtCơ bản10 phút đọc

Mỗi API key của Anthropic giống như một thẻ tín dụng không giới hạn hạn mức nối vào credit của bạn. Ai có key đó đều có thể:

Sau bài này, bạn sẽ
  1. Tạo tài khoản Anthropic và lấy API key đầu tiên
  2. Lưu trữ API key an toàn (không leak vào Git)
  3. Thiết lập workspace và quản lý nhiều key cho dự án khác nhau
  4. Nhận diện cảnh báo bảo mật quan trọng khi xử lý API key

Mở đầu: API key là "thẻ tín dụng" của bạn

  • Gọi Claude không giới hạn request
  • Tiêu đến hạn mức tín dụng bạn đã nạp
  • Trong trường hợp xấu: để lại log với thông tin nhạy cảm trên server của kẻ xấu

Đã có rất nhiều case developer push API key lên GitHub public → 5 phút sau bot quét key → key bị dùng làm proxy miễn phí → bill vài ngàn $.

Bài này mất 10 phút — nhưng nếu làm sai có thể tốn vài triệu. Đọc kỹ.

Quy trình 5 bước lấy API key

Bước 1: Vào Anthropic Console

Mở trình duyệt, vào: console.anthropic.com

Nếu chưa có tài khoản:

  • Click "Sign up"
  • Đăng nhập bằng Google / GitHub / email
  • Xác nhận email

Anthropic có thể yêu cầu số điện thoại để verify (giảm spam). Cung cấp số thật.

Bước 2: Nạp credit (nếu chưa có)

Để gọi API, tài khoản cần có credit. Trial có thể có $5 free, không thì:

  1. Vào Settings → Billing
  2. Thêm credit card (hoặc PayPal)
  3. Nạp tối thiểu $5 — đủ cho toàn khóa này nếu dùng Sonnet/Haiku hợp lý

Pro tip: Bật "Auto-reload" khi credit xuống < $10 để tránh bị ngắt giữa lúc đang code.

Bước 3: Navigate đến API Keys page

Trong console, từ menu bên trái:

  • Click "API Keys"
  • Hoặc click nút "Get API Keys" ở dashboard chính (góc trên phải)

Bước 4: Create Key

Click nút "Create Key" (góc trên phải). Form hiện ra:

┌─────────────────────────────────────────┐
│  Create API Key                         │
├─────────────────────────────────────────┤
│  Workspace:  [ Default        ▼ ]       │
│                                         │
│  Name:       [ Anthropic Course ]       │
│                                         │
│  Permissions (optional):                │
│     ☑ Read                              │
│     ☑ Write                             │
│                                         │
│        [ Cancel ]   [ Create Key ]      │
└─────────────────────────────────────────┘

Best practices khi đặt tên:

  • Nêu rõ mục đích: course-learning, prod-chatbot, dev-experimental
  • Tránh generic: key1, mykey, test
  • Một key/environment: prod-chatbot, staging-chatbot, dev-chatbot

Workspace:

  • Default — đủ cho cá nhân / học
  • Tạo workspace riêng khi bạn có team (tách billing, permission)

Bước 5: Copy key và lưu an toàn

Sau khi click Create, pop-up hiện key dạng:

sk-ant-api03-ABCD1234...xyz

CỰC KỲ QUAN TRỌNG:

┌───────────────────────────────────────────────┐
│  ⚠️  Key CHỈ HIỂN THỊ 1 LẦN DUY NHẤT.         │
│                                               │
│  Nếu bạn đóng pop-up mà chưa copy:            │
│  → Phải XÓA key cũ và tạo key MỚI.            │
└───────────────────────────────────────────────┘

Copy key và lưu vào file .env (xem section tiếp).

Lưu trữ API key an toàn

Quy tắc số 1: KHÔNG BAO GIỜ hard-code key trong source.

client = Anthropic(api_key="sk-ant-api03-ABCD1234...")

from anthropic import Anthropic
client = Anthropic()  # tự đọc từ ANTHROPIC_API_KEY env var

Setup chuẩn với .env

Trong thư mục project:

1. Tạo file .env:

ANTHROPIC_API_KEY="sk-ant-api03-ABCD1234...xyz"

2. Tạo / update file .gitignore:

.env
.env.local
.env.*.local
*.key
.venv/

3. Kiểm tra .env ĐÃ ở trong .gitignore trước khi commit:

git status

4. Dùng python-dotenv để load:

from dotenv import load_dotenv
load_dotenv()  # đọc .env vào os.environ

from anthropic import Anthropic
client = Anthropic()  # tự lấy ANTHROPIC_API_KEY

Tạo file .env.example (best practice)

Commit file template để team khác biết cần những env var nào:

ANTHROPIC_API_KEY=
DATABASE_URL=

Thành viên mới clone repo → copy .env.example thành .env → điền key của họ.

Nhiều environment — nhiều key

Production app thường có 3 env:

┌──────────────┬──────────────┬──────────────┐
│     DEV      │   STAGING    │     PROD     │
├──────────────┼──────────────┼──────────────┤
│  key riêng   │  key riêng   │  key riêng   │
│  budget nhỏ  │  budget vừa  │  budget lớn  │
│  Sonnet/Haiku│  Sonnet      │  Sonnet/Opus │
│  log verbose │  log normal  │  log minimal │
└──────────────┴──────────────┴──────────────┘

Tại sao tách key? Vì:

  • Dev vs prod có traffic khác nhau → cần budget khác
  • Nếu dev key lộ → không ảnh hưởng prod
  • Audit log rõ ràng theo env

Naming convention

dev-chatbot-jimmy
staging-chatbot
prod-chatbot
prod-chatbot-rotated-2026-04  ← khi rotate định kỳ

Quản lý key qua thời gian

Rotate định kỳ (khuyến nghị 3-6 tháng)

  1. Tạo key mới với tên prod-chatbot-rotated-YYYY-MM
  2. Update app config dùng key mới
  3. Deploy + verify
  4. Delete key cũ trên console

Check usage định kỳ

Console → Usage — xem biểu đồ:

  • Request count / day
  • Token consumption / model
  • Cost / day

Alerts khuyến nghị:

  • $50/ngày → email
  • $100/ngày → SMS
  • $200/ngày → page on-call

Khi nào cần revoke ngay

  • Key bị commit vào Git (kể cả private repo, vẫn nên revoke)
  • Laptop có key bị mất/trộm
  • Ex-employee từng access key
  • Bất kỳ nghi ngờ nào

Revoke qua: Console → API Keys → tick key → Disable. Không cần retrieve key để disable.

Ví dụ thực chiến: Setup hoàn chỉnh cho course

Bước 1: Tạo project

mkdir claude-api-course
cd claude-api-course

Bước 2: Tạo .gitignore

cat > .gitignore << 'EOF'
.env
.venv/
__pycache__/
*.ipynb_checkpoints
.DS_Store
EOF

Bước 3: Tạo .env

echo 'ANTHROPIC_API_KEY="sk-ant-api03-PASTE-YOUR-KEY-HERE"' > .env

Edit .env và paste key thực.

Bước 4: Tạo .env.example

echo 'ANTHROPIC_API_KEY=' > .env.example

Bước 5: Setup venv + install

python3 -m venv .venv
source .venv/bin/activate
pip install anthropic python-dotenv jupyterlab

Bước 6: Test

Tạo test_key.py:

from dotenv import load_dotenv
load_dotenv()

from anthropic import Anthropic
client = Anthropic()

msg = client.messages.create(
    model="claude-haiku-4-5",
    max_tokens=50,
    messages=[{"role": "user", "content": "Say 'key works!'"}]
)
print(msg.content[0].text)

Chạy:

python test_key.py

Nếu in ra key works! — đã OK. Nếu lỗi, check:

  • .env có đúng path không
  • Key có đúng không (copy đầy đủ chưa)
  • Credit có đủ không

Bước 7: Init git

git init
git add .
git status  # Verify .env KHÔNG trong list
git commit -m "Initial setup"

Case studies theo ngành

Startup Tech — Multi-tenant SaaS

Setup
1 key master cho billing + 1 workspace / customer enterprise.
Lý do
Mỗi customer lớn muốn audit riêng biệt. Workspace giúp tách analytics mà vẫn dùng 1 account.

Data Team — Shared notebook

Problem
Team 5 người dùng chung Jupyter server, ai cũng cần gọi Claude.
Anti-solution
Hard-code 1 key chia sẻ → không biết ai dùng, ai tiêu tiền.

Solution:

  • Mỗi người 1 key riêng (tự tạo, self-service)
  • Jupyter load key từ ~/.env user-specific
  • Dashboard usage / user

Legal / Enterprise — Compliance

Setup: Sử dụng Amazon Bedrock hoặc Google Vertex AI thay API trực tiếp → tuân thủ data residency, HIPAA, SOC2.

Key Anthropic không cần, dùng credentials AWS/GCP. (Xem bài 6.4 — Access patterns.)

Anti-patterns — Sai lầm bảo mật

Commit .env vào Git

Hiểu hiện
git add . không check → .env push lên GitHub.
Hậu quả
Key lộ, bot quét trong 5 phút, bill $5000.

Fix:

  • Luôn có .env trong .gitignore TRƯỚC khi tạo file .env
  • Set up pre-commit hook check .env không được staged:
  # .git/hooks/pre-commit
  if git diff --cached --name-only | grep -qE '\.env$|\.env\.[^e]'; then
    echo "Error: .env files should not be committed"
    exit 1
  fi

Share key qua Slack / email

Hiểu hiện
"Key của nhóm đây: sk-ant-..." trên kênh team Slack.
Hậu quả
Slack history vĩnh viễn, nếu Slack bị hack → key lộ.

Fix:

  • Mỗi dev tự tạo key riêng qua console (self-service)
  • Nếu PHẢI share: 1Password / Vaultwarden / HashiCorp Vault

Để key trong Docker image

Hiểu hiện
Dockerfile có ENV ANTHROPIC_API_KEY=sk-....
Hậu quả
Image push lên registry → ai pull cũng có key.
Fix
Inject qua runtime env var, không bake vào image:
docker run -e ANTHROPIC_API_KEY=sk-... myapp

Hoặc dùng secret manager (AWS Secrets Manager, K8s secrets).

Log key vào log file

Hiểu hiện
Debug log in client.api_key → log file có key.
Fix
Config logger để filter key khỏi log:
import logging
class RedactKeyFilter(logging.Filter):
    def filter(self, record):
        if "sk-ant-" in record.msg:
            record.msg = record.msg.replace(
                record.msg[record.msg.find("sk-ant-"):record.msg.find("sk-ant-")+30],
                "sk-ant-[REDACTED]"
            )
        return True

1 key cho tất cả

Hiểu hiện
Prod, staging, dev, everyone dùng chung 1 key.
Fix
Mỗi env + mỗi dev → key riêng. Dễ audit, dễ revoke.

Áp dụng ngay

Bài tập 1: Lấy API key và test (15 phút)

  1. Vào console.anthropic.com
  2. Tạo account, nạp $5
  3. Tạo key tên anthropic-course-vi
  4. Setup project theo section "Ví dụ thực chiến" trên
  5. Chạy test_key.py thành công

Checklist hoàn thành:

  • Có key sk-ant-api03-... trong .env
  • .env trong .gitignore
  • python test_key.py in ra phản hồi của Claude
  • Console hiển thị có request trong Usage
  • git status KHÔNG liệt kê .env

Bài tập 2: Tự audit security (10 phút)

Mở terminal, chạy:

grep -r "sk-ant" . --exclude-dir=.venv --exclude-dir=.git

Chỉ được có 1 match: trong .env. Nếu có ở file khác → di chuyển vào .env.

git log --all --full-history -- .env

Phải trả về empty. Nếu có log → key đã từng bị commit → REVOKE key ngay và tạo mới.

Tóm tắt bài học

Những điều cốt lõi
  • API key = thẻ tín dụng không giới hạn. Treat với sự cẩn trọng tương xứng.
  • 5 bước lấy key: Console → Workspace → Create Key → Name → Copy ngay. Key chỉ hiện 1 lần duy nhất.
  • Setup .env + .gitignore là tiêu chuẩn. Dùng python-dotenv để load, Anthropic() tự đọc từ env var.
  • Không bao giờ commit key, share qua chat, bake vào Docker. Revoke ngay nếu nghi ngờ lộ.
  • Rotate định kỳ 3-6 tháng. Dashboard usage để phát hiện bất thường sớm.

Tài liệu tham khảo

Kiểm tra nhanh1 câu hỏi · chọn đáp án để xem giải thích
    Bạn đã hoàn thành bài này chưa?Tiến độ lưu trên trình duyệt của bạn.