Getting Started with Claude API: Your First Integration in 10 Minutes
Learn how to set up your Anthropic account, generate an API key, and make your first Claude API call using Python, TypeScript, or cURL. A practical step-by-step guide for developers.
This guide walks you through creating an Anthropic Console account, obtaining an API key, and making your first API call to Claude using cURL, Python, or TypeScript. You'll learn the essential patterns for building with Claude.
Getting Started with Claude API: Your First Integration in 10 Minutes
So you want to build with Claude? Whether you're creating a chatbot, an AI-powered assistant, or a content generation tool, the Claude API is your gateway. This guide will have you making your first API call in under 10 minutes.
Prerequisites
Before you start, you'll need two things:
- An Anthropic Console account – Head to console.anthropic.com and sign up. It's free.
- An API key – Once logged in, navigate to the API Keys section and generate a new key. Treat this like a password—never share it or commit it to version control.
Pro tip: Store your API key as an environment variable (ANTHROPIC_API_KEY) to keep it secure and easily accessible across projects.
Making Your First API Call
Let's dive into the code. You can use cURL, Python, or TypeScript—pick your poison.
Option 1: cURL (Quick Test)
If you just want to verify everything works from the command line:
curl https://api.anthropic.com/v1/messages \
--header "x-api-key: $ANTHROPIC_API_KEY" \
--header "anthropic-version: 2023-06-01" \
--header "content-type: application/json" \
--data '{
"model": "claude-3-5-sonnet-20241022",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "Hello, Claude!"}
]
}'
This sends a simple greeting to Claude and prints the response. If you get a JSON response with content, you're in business.
Option 2: Python (Recommended)
Install the Anthropic SDK:
pip install anthropic
Then create a file called hello_claude.py:
import anthropic
import os
client = anthropic.Anthropic(
api_key=os.environ.get("ANTHROPIC_API_KEY")
)
message = client.messages.create(
model="claude-3-5-sonnet-20241022",
max_tokens=1024,
messages=[
{"role": "user", "content": "Hello, Claude!"}
]
)
print(message.content[0].text)
Run it:
python hello_claude.py
You should see Claude's friendly response printed to your terminal.
Option 3: TypeScript
Install the SDK:
npm install @anthropic-ai/sdk
Create hello_claude.ts:
import Anthropic from '@anthropic-ai/sdk';
const anthropic = new Anthropic({
apiKey: process.env.ANTHROPIC_API_KEY,
});
async function main() {
const message = await anthropic.messages.create({
model: 'claude-3-5-sonnet-20241022',
max_tokens: 1024,
messages: [
{ role: 'user', content: 'Hello, Claude!' }
],
});
console.log(message.content[0].text);
}
main();
Run with:
npx ts-node hello_claude.ts
Understanding the Response
When Claude responds, you'll get a structured JSON object. Here's what the key fields mean:
content– An array of content blocks. For text responses, it's[{ "type": "text", "text": "..." }].role– Always"assistant"for Claude's responses.model– The model that generated the response.stop_reason– Why the response ended (e.g.,"end_turn","max_tokens", or"stop_sequence").usage– Token counts for input and output, useful for cost tracking.
Next Steps: Core Patterns to Master
You've made your first API call—congratulations! Now it's time to level up. Here are the patterns you'll use in every Claude integration:
Multi-turn Conversations
Claude can maintain context across multiple exchanges. Just keep appending to the messages array:
messages = [
{"role": "user", "content": "What's the capital of France?"},
{"role": "assistant", "content": "The capital of France is Paris."},
{"role": "user", "content": "What's its most famous landmark?"}
]
System Prompts
Set Claude's behavior with a system prompt:
message = client.messages.create(
model="claude-3-5-sonnet-20241022",
max_tokens=1024,
system="You are a helpful assistant that speaks like a pirate.",
messages=[
{"role": "user", "content": "Tell me about the weather."}
]
)
Handling Stop Reasons
Always check stop_reason to understand why Claude stopped:
"end_turn"– Claude finished naturally."max_tokens"– Hit the token limit; you may need to continue the conversation."stop_sequence"– Claude encountered a custom stop sequence you defined.
Exploring Claude's Capabilities
Once you're comfortable with the basics, explore what makes Claude powerful:
- Extended Thinking – For complex reasoning tasks, Claude can show its work.
- Structured Outputs – Get JSON, XML, or other formatted responses.
- Tool Use – Give Claude access to functions, databases, or APIs.
- Vision – Send images for Claude to analyze.
- Streaming – Get responses token-by-token for a real-time experience.
Choosing the Right Model
Claude comes in different flavors. Here's a quick comparison:
| Model | Best For | Cost |
|---|---|---|
| Claude 3.5 Sonnet | General purpose, coding, analysis | Moderate |
| Claude 3 Haiku | Speed-critical tasks, simple queries | Low |
| Claude 3 Opus | Complex reasoning, creative writing | Higher |
Common Pitfalls to Avoid
- Hardcoding API keys – Always use environment variables or a secrets manager.
- Ignoring token limits – Set
max_tokensappropriately to avoid truncated responses. - Forgetting the API version header – Always include
anthropic-version: 2023-06-01. - Not handling errors – Wrap API calls in try/catch blocks for production.
Key Takeaways
- Getting started is simple: Create an Anthropic account, generate an API key, and make your first call with cURL, Python, or TypeScript in minutes.
- Master the Messages API: Multi-turn conversations, system prompts, and stop reasons are the building blocks of every Claude integration.
- Choose the right model: Claude 3.5 Sonnet is the recommended starting point for most use cases.
- Explore advanced features: Once comfortable, dive into tool use, streaming, structured outputs, and vision to unlock Claude's full potential.
- Security first: Never expose your API key—use environment variables and follow best practices for secret management.