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

# Authentification

> Gestion des clés API, variables d'environnement, limites de taux et meilleures pratiques de sécurité.

Toutes les requêtes API RAIL sont authentifiées avec des clés API. Les clés sont liées à votre compte, portent votre solde de crédit et apparaissent dans vos journaux d'utilisation.

```mermaid theme={null}
flowchart LR
    App["Votre Application"] -->|"Authorization: Bearer rail_..."| API["API RAIL"]
    API -->|"200 + résultat"| App
    API -->|"401 Clé invalide"| App
    API -->|"429 Limite de taux"| App
```

## Obtenir une clé API

<Steps>
  <Step title="Inscrivez-vous">
    [Créez un compte gratuit](https://responsibleailabs.ai/register) sur responsibleailabs.ai.
  </Step>

  <Step title="Ouvrez votre tableau de bord">
    Allez sur votre [Tableau de bord](https://responsibleailabs.ai/dashboard) et naviguez vers la section **Clés API**.
  </Step>

  <Step title="Générez une clé">
    Cliquez sur **Générer une clé**. Les clés commencent par `rail_` et sont affichées exactement une fois. Copiez la vôtre immédiatement.

    <Warning>
      Votre clé ne sera plus affichée après la fermeture de la boîte de dialogue. Conservez-la en toute sécurité avant de quitter la page.
    </Warning>
  </Step>
</Steps>

## Utiliser la clé API

Passez votre clé en tant que token Bearer dans l'en-tête `Authorization` à chaque requête :

```
Authorization: Bearer YOUR_RAIL_API_KEY
```

Exemple complet de cURL :

```bash theme={null}
curl -X POST https://api.responsibleailabs.ai/railscore/v1/eval \
  -H "Authorization: Bearer YOUR_RAIL_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"content": "Votre texte généré par l\'IA ici", "mode": "basic"}'
```

## Authentification SDK

Les deux SDK acceptent la clé API lors de la construction du client et attachent l'en-tête automatiquement :

<CodeGroup>
  ```python Python theme={null}
  from rail_score_sdk import RailScoreClient
  import os

  # Passez la clé directement (bien pour les scripts)
  client = RailScoreClient(api_key="YOUR_RAIL_API_KEY")

  # Recommandé : lire à partir de la variable d'environnement
  client = RailScoreClient(api_key=os.environ["RAIL_API_KEY"])
  ```

  ```typescript JavaScript theme={null}
  import { RailScoreClient } from "@responsible-ai-labs/rail-score";

  // Passez la clé directement
  const client = new RailScoreClient({ apiKey: "YOUR_RAIL_API_KEY" });

  // Recommandé : lire à partir de la variable d'environnement
  const client = new RailScoreClient({ apiKey: process.env.RAIL_API_KEY });
  ```
</CodeGroup>

## Variables d'environnement

Ne jamais coder en dur les clés API dans les fichiers source. Utilisez des variables d'environnement et gardez les clés hors du contrôle de version.

<Tabs>
  <Tab title="Local (dotenv)">
    ```bash theme={null}
    # .env  — ajoutez à .gitignore, ne jamais commettre ce fichier
    RAIL_API_KEY=YOUR_RAIL_API_KEY
    ```

    ```python theme={null}
    from dotenv import load_dotenv
    import os

    load_dotenv()
    api_key = os.environ["RAIL_API_KEY"]
    ```
  </Tab>

  <Tab title="Vercel / Edge">
    Ajoutez via **Tableau de bord Vercel > Paramètres > Variables d'environnement**.

    Nom de la variable : `RAIL_API_KEY`

    <Warning>
      Ne jamais préfixer la variable avec `NEXT_PUBLIC_`. Cela l'exposerait dans le bundle du navigateur.
    </Warning>

    ```typescript theme={null}
    // Côté serveur uniquement
    const apiKey = process.env.RAIL_API_KEY;
    ```
  </Tab>

  <Tab title="Docker">
    ```bash theme={null}
    # Passez à l'exécution — ne jamais intégrer de secrets dans les couches d'image
    docker run -e RAIL_API_KEY=YOUR_RAIL_API_KEY my-app

    # docker-compose.yml
    services:
      app:
        image: my-app
        environment:
          - RAIL_API_KEY=${RAIL_API_KEY}
    ```
  </Tab>
</Tabs>

## Gestion des clés

Vous pouvez créer plusieurs clés pour différents environnements (production, staging, CI). Gérez toutes les clés depuis votre [tableau de bord](https://responsibleailabs.ai/dashboard).

| Action               | Quand l'utiliser                                                                                         |
| -------------------- | -------------------------------------------------------------------------------------------------------- |
| **Générer une clé**  | Nouvel environnement, intégration d'un nouveau service, ou rotation des identifiants selon un calendrier |
| **Renommer une clé** | Ajouter un contexte comme "production-chatbot" ou "staging-ci" pour le suivi d'utilisation               |
| **Révoquer une clé** | Fuite suspectée, départ d'un employé, ou mise hors service d'un service. Prend effet immédiatement.      |

<Tip>
  **Rotation sans temps d'arrêt :** Générez une nouvelle clé, déployez-la sur votre service et vérifiez qu'elle fonctionne, puis révoquez l'ancienne clé. L'échange prend quelques secondes.
</Tip>

## Limites de taux

Les limites de taux sont appliquées par clé API. Dépasser la limite renvoie HTTP 429.

| Plan         | Requêtes / min | Requêtes / jour |
| ------------ | -------------- | --------------- |
| Gratuit      | 10             | 100             |
| Pro          | 60             | 5,000           |
| Entreprise   | 300            | 50,000          |
| Personnalisé | Sur mesure     | Sur mesure      |

## Meilleures pratiques de sécurité

<Warning>
  * **Ne jamais exposer les clés dans le code côté client.** Les navigateurs sont publics. Appelez toujours l'API depuis votre backend ou fonction sans serveur.
  * **Stockez les clés dans des variables d'environnement,** jamais codées en dur dans des fichiers source ou des images Docker.
  * **Ajoutez `.env` à `.gitignore`** avant le premier commit afin que les clés ne soient jamais accidentellement poussées.
  * **Utilisez des clés séparées par environnement.** Si le staging est compromis, la production reste en sécurité.
  * **Révoquez immédiatement si exposé.** Générez d'abord un remplacement, puis révoquez.
  * **Faites une rotation selon un calendrier.** Régénérer périodiquement les clés limite le rayon d'impact de toute fuite non détectée.
</Warning>

## Réponses d'erreur d'authentification

| Statut | Erreur                                      | Correction                                                          |
| ------ | ------------------------------------------- | ------------------------------------------------------------------- |
| `401`  | En-tête Authorization manquant ou mal formé | Ajoutez `Authorization: Bearer …`                                   |
| `401`  | Clé API invalide                            | Vérifiez que la clé commence par `rail_` et est copiée correctement |
| `403`  | Clé API révoquée ou inactive                | Générez une nouvelle clé depuis le tableau de bord                  |
| `429`  | Limite de taux dépassée                     | Réduisez la fréquence des requêtes ou mettez à niveau le plan       |

## Quelles sont les prochaines étapes

<CardGroup cols={2}>
  <Card title="Démarrage rapide" icon="rocket" href="/getting-started/quickstart">
    Faites votre première demande d'évaluation en moins de 5 minutes.
  </Card>

  <Card title="Crédits & Tarification" icon="coins" href="/getting-started/credits">
    Comprenez comment les crédits sont facturés par appel.
  </Card>

  <Card title="Référence API" icon="code" href="/api-reference/overview">
    Référence complète des paramètres pour tous les points de terminaison.
  </Card>

  <Card title="Tableau de bord" icon="chart-line" href="https://responsibleailabs.ai/dashboard">
    Gérez les clés, consultez l'utilisation et surveillez le solde de crédit.
  </Card>
</CardGroup>
