Mistral AI Install & Auth
Overview
Set up the official Mistral AI SDK (@mistralai/mistralai for TypeScript, mistralai for Python) and configure authentication for chat completions, embeddings, function calling, vision, and agents.
Prerequisites
- Node.js 18+ or Python 3.9+
- Package manager (npm, pnpm, yarn, or pip)
- Mistral AI account at console.mistral.ai
- API key from La Plateforme (Settings > API Keys)
Instructions
Step 1: Install SDK
Node.js (TypeScript/JavaScript) — ESM only
set -euo pipefail
# npm
npm install @mistralai/mistralai
# pnpm
pnpm add @mistralai/mistralai
# yarn
yarn add @mistralai/mistralai
Python
set -euo pipefail
pip install mistralai
Step 2: Configure Authentication
Environment Variables (Recommended)
# Set in shell
export MISTRAL_API_KEY="your-api-key"
# Or create .env file (add to .gitignore!)
echo 'MISTRAL_API_KEY=your-api-key' >> .env
echo '.env' >> .gitignore
Using dotenv (Node.js)
set -euo pipefail
npm install dotenv
import 'dotenv/config';
Step 3: Verify Connection
TypeScript
import { Mistral } from '@mistralai/mistralai';
const client = new Mistral({
apiKey: process.env.MISTRAL_API_KEY,
});
async function testConnection() {
try {
const models = await client.models.list();
console.log('Connection successful! Available models:');
for (const model of models.data ?? []) {
console.log(` - ${model.id}`);
}
} catch (error: any) {
if (error.status === 401) {
console.error('Invalid API key. Check your key at console.mistral.ai');
} else {
console.error('Connection failed:', error.message);
}
}
}
testConnection();
Python
import os
from mistralai import Mistral
client = Mistral(api_key=os.environ["MISTRAL_API_KEY"])
def test_connection():
try:
models = client.models.list()
print("Connection successful! Available models:")
for model in models.data:
print(f" - {model.id}")
except Exception as e:
print(f"Connection failed: {e}")
test_connection()
Step 4: Production — Secret Manager
// GCP Secret Manager (recommended for production)
import { SecretManagerServiceClient } from '@google-cloud/secret-manager';
const sm = new SecretManagerServiceClient();
async function getMistralKey(): Promise<string> {
const [version] = await sm.accessSecretVersion({
name: 'projects/my-project/secrets/mistral-api-key/versions/latest',
});
return version.payload?.data?.toString() ?? '';
}
// AWS Secrets Manager alternative
import { SecretsManager } from '@aws-sdk/client-secrets-manager';
const sm = new SecretsManager({ region: 'us-east-1' });
async function getMistralKey(): Promise<string> {
const { SecretString } = await sm.getSecretValue({
SecretId: 'mistral/api-key',
});
return SecretString!;
}
Output
- Installed SDK package (
@mistralai/mistralaiormistralai) - Environment variable or .env file with API key
- Successful connection verification listing available models
Error Handling
| Error | Cause | Solution |
|-------|-------|----------|
| 401 Unauthorized | Invalid or missing API key | Verify key at console.mistral.ai |
| Module not found | SDK not installed | Run npm install @mistralai/mistralai |
| ERR_REQUIRE_ESM | Using CommonJS require | SDK is ESM-only; use import or dynamic await import() |
| Network Error | Firewall blocking HTTPS | Ensure outbound HTTPS to api.mistral.ai is allowed |
Examples
TypeScript Client with Retry
import { Mistral } from '@mistralai/mistralai';
const client = new Mistral({
apiKey: process.env.MISTRAL_API_KEY,
timeoutMs: 30_000,
maxRetries: 3,
});
export default client;
Python Client with Retry
import os
from mistralai import Mistral
client = Mistral(
api_key=os.environ["MISTRAL_API_KEY"],
timeout_ms=30_000,
max_retries=3,
)
Validate API Key Format
function validateMistralApiKey(key: string): boolean {
// Mistral keys are typically 32-char hex strings
return /^[a-zA-Z0-9]{20,}$/.test(key);
}
Resources
- Mistral AI Documentation
- Mistral AI Console
- TypeScript SDK (client-ts)
- Python SDK (client-python)
- API Reference
Next Steps
After successful auth, proceed to mistral-hello-world for your first chat completion.