Getting Started with Claude API: Your First Integration in Minutes
Learn how to set up your Anthropic Console account, generate an API key, and make your first Claude API call using cURL, Python, or TypeScript. A practical step-by-step guide.
This guide walks you through creating an Anthropic Console account, obtaining an API key, and making your first Claude API call using cURL, Python, or TypeScript. You'll learn the core Messages API pattern and where to go next.
Getting Started with Claude API: Your First Integration in Minutes
Claude, Anthropic's powerful AI assistant, is accessible through a clean, developer-friendly API. Whether you're building a chatbot, a content generator, or a custom AI tool, the Claude API lets you integrate state-of-the-art language capabilities directly into your application. This guide will take you from zero to your first successful API call in under 10 minutes.
Prerequisites
Before you start, you'll need two things:
- An Anthropic Console account – Sign up at console.anthropic.com. The free tier includes enough credits to experiment and build prototypes.
- An API key – Once logged in, navigate to API Keys in the sidebar and click Create Key. Copy the key immediately—you won't be able to see it again.
Security tip: Never hardcode your API key in client-side code or public repositories. Use environment variables or a secrets manager.
Making Your First API Call
Claude uses the Messages API, which is designed for both single-turn and multi-turn conversations. Let's start with a simple request.
Using cURL
Open your terminal and run:
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-sonnet-4-20250514",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "Hello, Claude!"}
]
}'
Replace $ANTHROPIC_API_KEY with your actual key or set it as an environment variable. You should receive a JSON response containing Claude's greeting.
Using Python
First, install the Anthropic SDK:
pip install anthropic
Then create a file hello_claude.py:
import anthropic
client = anthropic.Anthropic(
api_key="YOUR_API_KEY" # Better: os.environ["ANTHROPIC_API_KEY"]
)
message = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=1024,
messages=[
{"role": "user", "content": "Hello, Claude!"}
]
)
print(message.content[0].text)
Run it:
python hello_claude.py
You'll see Claude's reply printed in your terminal.
Using TypeScript
Install the SDK:
npm install @anthropic-ai/sdk
Create hello_claude.ts:
import Anthropic from '@anthropic-ai/sdk';
const anthropic = new Anthropic({
apiKey: 'YOUR_API_KEY', // Better: process.env.ANTHROPIC_API_KEY
});
async function main() {
const message = await anthropic.messages.create({
model: 'claude-sonnet-4-20250514',
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
The API returns a structured JSON object. The key fields are:
content– An array of content blocks. For text responses, it contains a single block with atextfield.role– Always"assistant"for Claude's replies.stop_reason– Indicates why the response ended (e.g.,"end_turn","max_tokens", or"stop_sequence").usage– Token counts for input and output, useful for billing and optimization.
{
"content": [
{
"type": "text",
"text": "Hello! How can I assist you today?"
}
],
"role": "assistant",
"stop_reason": "end_turn",
"usage": {
"input_tokens": 12,
"output_tokens": 10
}
}
Next Steps: Mastering the Messages API
You've made your first API call—congratulations! Now it's time to explore the patterns you'll use in every integration.
Multi-turn Conversations
To continue a conversation, include the full message history:
messages = [
{"role": "user", "content": "What is the capital of France?"},
{"role": "assistant", "content": "The capital of France is Paris."},
{"role": "user", "content": "What is its population?"}
]
response = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=1024,
messages=messages
)
System Prompts
Set the behavior and persona of Claude using the system parameter:
response = client.messages.create(
model="claude-sonnet-4-20250514",
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 generating:
"end_turn"– Claude finished naturally."max_tokens"– The response was cut off; increasemax_tokensor continue the conversation."stop_sequence"– Claude hit a custom stop sequence you defined.
Exploring Further Capabilities
Once you're comfortable with the basics, dive into Claude's advanced features:
- Tools (Function Calling) – Give Claude the ability to call external APIs or perform actions.
- Extended Thinking – Enable Claude to reason step-by-step for complex tasks.
- Structured Outputs – Request JSON, XML, or other structured formats.
- Streaming – Receive tokens in real-time for a more responsive user experience.
- Vision – Analyze images alongside text.
- Prompt Caching – Reduce latency and cost for repeated context.
Choosing the Right Model
Claude comes in several variants. For most applications, start with:
| Model | Best For |
|---|---|
claude-sonnet-4-20250514 | General-purpose, balanced speed and quality |
claude-opus-4-20250514 | Complex reasoning, deep analysis |
claude-haiku-3-5-20241022 | Low-latency, simple tasks, cost-sensitive |
Key Takeaways
- Start with the Messages API – It's the core interface for all Claude interactions, supporting single and multi-turn conversations.
- Always use environment variables for your API key to keep it secure.
- Check
stop_reasonin every response to understand whether Claude finished naturally or was cut off. - Leverage system prompts to control Claude's tone, behavior, and constraints without modifying your code.
- Explore the feature ecosystem – Tools, streaming, vision, and structured outputs unlock Claude's full potential for real-world applications.