> ## Documentation Index
> Fetch the complete documentation index at: https://docs.steerai.autos/llms.txt
> Use this file to discover all available pages before exploring further.

# Authentification et clés API

> Configuration d'authentification sécurisée pour les API et services Steer AI

## Aperçu

Steer AI utilise l'authentification par clé API pour sécuriser l'accès à nos services. Toutes les requêtes API doivent inclure une clé API valide dans les en-têtes de requête.

## Obtenir vos clés API

### 1. Accéder à votre tableau de bord

1. Connectez-vous à votre [tableau de bord Steer AI](https://dashboard.steerai.autos)
2. Accédez à **Settings** → **API Keys**
3. Cliquez sur **Generate New API Key**

### 2. Types de clés API

<CardGroup cols={2}>
  <Card title="Clés de développement" icon="code">
    • Pour les tests et le développement
    • Limites de débit réduites
    • Accès à l'environnement sandbox
    • Niveau gratuit disponible
  </Card>

  <Card title="Clés de production" icon="shield-check">
    • Pour les applications en production
    • Limites de débit complètes
    • Accès à l'environnement de production
    • Nécessite un plan payant
  </Card>
</CardGroup>

## Méthodes d'authentification

### Authentification via en-têtes HTTP

Incluez votre clé API dans l'en-tête `Authorization` :

```bash theme={null}
curl -X GET "https://api.steerai.autos/v1/inspections" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json"
```

### Authentification via paramètres de requête

Vous pouvez aussi inclure la clé API en paramètre de requête :

```bash theme={null}
curl -X GET "https://api.steerai.autos/v1/inspections?api_key=YOUR_API_KEY"
```

<Warning>
  **Note de sécurité :** l'authentification par en-tête est recommandée plutôt que les paramètres de requête afin d'éviter l'exposition des clés API dans les logs serveur.
</Warning>

## Configuration d'environnement

### Environnement de développement

```bash theme={null}
# .env file
STEER_AI_API_KEY=dev_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
STEER_AI_BASE_URL=https://api-sandbox.steerai.autos/v1
```

### Environnement de production

```bash theme={null}
# .env file
STEER_AI_API_KEY=prod_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
STEER_AI_BASE_URL=https://api.steerai.autos/v1
```

## Authentification des SDK

### SDK Python

```python theme={null}
from steer_ai import SteerAI

# Initialize client
client = SteerAI(api_key="YOUR_API_KEY")

# Or using environment variable
import os
client = SteerAI(api_key=os.getenv("STEER_AI_API_KEY"))
```

### SDK JavaScript

```javascript theme={null}
import { SteerAI } from '@steerai/sdk';

// Initialize client
const client = new SteerAI({
  apiKey: 'YOUR_API_KEY'
});

// Or using environment variable
const client = new SteerAI({
  apiKey: process.env.STEER_AI_API_KEY
});
```

## Tester votre authentification

### Test rapide

Utilisez cet endpoint pour vérifier que votre authentification fonctionne :

```bash theme={null}
curl -X GET "https://api.steerai.autos/v1/auth/test" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

**Réponse attendue :**

```json theme={null}
{
  "status": "success",
  "message": "Authentication successful",
  "account": {
    "id": "acc_1234567890",
    "name": "Your Company Name",
    "plan": "professional"
  }
}
```

## Bonnes pratiques de sécurité

<AccordionGroup>
  <Accordion icon="lock" title="Gestion des clés API">
    • Stockez les clés API dans des variables d'environnement, jamais dans le code
    • Utilisez des clés différentes pour le développement et la production
    • Faites une rotation régulière des clés (recommandé : tous les 90 jours)
    • Révoquez immédiatement les clés compromises
  </Accordion>

  <Accordion icon="shield" title="Sécurité réseau">
    • Utilisez toujours HTTPS pour les requêtes API
    • Implémentez une validation correcte des certificats SSL
    • Utilisez le whitelisting d'IP lorsque c'est possible
    • Surveillez l'usage de l'API pour détecter des comportements inhabituels
  </Accordion>

  <Accordion icon="eye" title="Contrôle d'accès">
    • Limitez les permissions des clés API au minimum requis
    • Utilisez des clés séparées pour différents services
    • Implémentez une gestion correcte des erreurs
    • Journalisez les échecs d'authentification pour le monitoring
  </Accordion>
</AccordionGroup>

## Limitation de débit

Les clés API ont des limites différentes selon votre plan :

| Plan             | Requêtes/heure | Requêtes simultanées |
| ---------------- | -------------- | -------------------- |
| **Free**         | 1,000          | 5                    |
| **Starter**      | 10,000         | 20                   |
| **Professional** | 100,000        | 100                  |
| **Enterprise**   | Unlimited      | Custom               |

## Gestion des erreurs

### Erreurs d'authentification courantes

```json theme={null}
{
  "error": {
    "code": "INVALID_API_KEY",
    "message": "The provided API key is invalid",
    "type": "authentication_error"
  }
}
```

```json theme={null}
{
  "error": {
    "code": "RATE_LIMIT_EXCEEDED",
    "message": "Rate limit exceeded. Try again in 60 seconds",
    "type": "rate_limit_error",
    "retry_after": 60
  }
}
```

### Gérer les erreurs d'authentification

```python theme={null}
try:
    response = client.inspections.create(data)
except SteerAIAuthenticationError as e:
    # Handle authentication error
    print(f"Authentication failed: {e.message}")
except SteerAIRateLimitError as e:
    # Handle rate limit
    print(f"Rate limit exceeded. Retry after {e.retry_after} seconds")
```

## Dépannage

### Clé API non fonctionnelle

1. **Vérifiez le format de la clé :** doit commencer par `dev_` ou `prod_`
2. **Vérifiez l'environnement :** assurez-vous d'utiliser la bonne base URL
3. **Confirmez l'état du plan :** vérifiez que votre compte est actif
4. **Testez avec curl :** utilisez l'endpoint de test ci-dessus

### Accès refusé

1. **Vérifiez les permissions de la clé :** assurez-vous que la clé possède les scopes nécessaires
2. **Vérifiez les limites du plan :** confirmez que vous n'avez pas dépassé les limites d'utilisation
3. **Vérifiez les restrictions IP :** si un whitelisting est configuré, assurez-vous que votre IP est autorisée
