# Authentification

> Comment s'authentifier à l'API CiteMe avec une clé cm_, ses scopes, et quelle clé fonctionne où.

Développeurs

L'URL de base est `https://app.citeme.io/api/v1`. Toutes les requêtes exigent un en-tête `Authorization: Bearer cm_...`.

```bash
curl https://app.citeme.io/api/v1/projects \
  -H "Authorization: Bearer cm_xxxxxxxxxxxx"
```

---

## Créer une clé

Dashboard → Paramètres → Clés API. Seuls les propriétaires et administrateurs de l'organisation peuvent en créer.

- **Format** : `cm_` suivi de 48 caractères hexadécimaux. Elle n'est affichée qu'une fois à la création.
- **Forfait** : **Pro** ou **Expert**. Avec un autre forfait, les requêtes reçoivent `403`.
- **Lecture seule par défaut** : à la création, vous choisissez entre une clé en lecture seule (scope `read`) et une clé qui autorise aussi les écritures (scopes `read` et `write`). Le scope ne dépend pas du forfait.

:::danger Ne jamais exposer votre clé
Ne l'incluez jamais dans du code côté client ni dans un dépôt public.
:::

---

## Scopes

| Requête | Scope exigé | Réponse si absent |
|---------|-------------|-------------------|
| Toute requête | `read` | `403 Forbidden: This API key does not have read permissions` |
| `POST` (lancer un audit, ajouter un mot-clé) | `write`, en plus de `read` | `403 Forbidden: This API key does not have write permissions` |

Une clé en lecture seule ne peut donc que lister et lire. Pour lancer un audit par API, créez une clé avec écriture.

---

## Quelle clé pour quelle surface

CiteMe a deux systèmes de clés, volontairement séparés. Chacun refuse les routes de l'autre.

| | Clé API `cm_` | Clé de `citeme login` |
|---|---|---|
| Création | Dashboard → Paramètres → Clés API | commande `citeme login` (CLI, extension Chrome, MCP local) |
| Forfait minimal | Pro | Starter |
| Routes acceptées | `/api/v1/projects/*` (cette documentation) | `/api/v1/cli/*` |
| Serveur MCP hébergé (`https://mcp.citeme.io`) | refusée | acceptée comme Bearer |

Une clé de `citeme login` appelée sur `/api/v1/projects` est refusée, et une clé `cm_` appelée sur `/api/v1/cli/*` aussi. Pour piloter CiteMe depuis un agent IA, voir [Piloter CiteMe depuis un agent IA](../agents).

---

**[Projets →](./projects)**
