# Présentation et clés

L’API Lockpick est utilisée par la CLI et les assistants, avec les mêmes clés, autorisations et limites.

L’API Lockpick se trouve à `/api/cli/v1` sur votre adresse Lockpick. La CLI et le serveur MCP l’utilisent tous les deux. Certains outils composent des lectures d’API côté client : l’attente interroge une analyse, et l’évaluation applique une politique à son heure de fin, à sa couverture et aux points à corriger ouverts. Consultez la [référence](/fr/docs/api/reference) pour les opérations HTTP sous-jacentes.

## Clés

Chaque requête transporte une clé sous forme de jeton bearer.

```
curl -H "Authorization: Bearer $LOCKPICK_KEY" https://www.lockpick.app/api/cli/v1/agent/me
```

Vous obtenez une clé en vous connectant avec la CLI, via `lockpick login`, qui vous demande de l’autoriser dans votre navigateur. Les clés commencent par `lpk_`, portent les [autorisations](/fr/docs/mcp/permissions) que vous avez approuvées et expirent lorsqu’elles ne sont pas utilisées. Gérez-les dans Lockpick sous **Ajouter à votre IA**, dans l’onglet **CLI et clés**.

## Réponses

Chaque réponse est un JSON de même forme : `data` est renseigné lorsque la requête réussit, et `error` lorsqu’elle échoue.

```json title="Réponse"
{ "data": { "sites": [] }, "error": null }
```

Les appels HTTP en échec renvoient `data: null`, une chaîne `error` lisible et un `errorCode`. Les échecs d’opération incluent aussi `details`, avec l’erreur structurée de l’agent. Les refus précoces, liés à l’authentification ou à une fonctionnalité, peuvent ne pas l’inclure.

```json title="Erreur d’opération"
{
  "data": null,
  "error": "The request limit was reached. Retry in 60 seconds.",
  "errorCode": "RATE_LIMITED",
  "details": {
    "agentCode": "RATE_LIMITED",
    "message": "The request limit was reached.",
    "nextStep": "Wait before trying again.",
    "retryAfterSeconds": 60,
    "webUrl": null,
    "requestId": "req_example"
  }
}
```

`retryAfterSeconds` est un nombre de secondes, ou `null` lorsque aucun délai de nouvelle tentative n’est connu. Un délai connu apparaît aussi dans l’en-tête HTTP `Retry-After`. `webUrl` est un lien vers l’étape suivante, ou `null` ; `requestId` permet au support de retrouver un échec d’opération. Les outils MCP normalisent ces champs dans leur objet d’erreur, où `agentCode` s’appelle `code`.

| Statut HTTP | Signification                                                                                    |
| ----------- | ------------------------------------------------------------------------------------------------ |
| 400         | Entrée non valide ou version non prise en charge                                                 |
| 401         | Identifiant absent, expiré ou révoqué                                                            |
| 402         | Le forfait, la limite de sites ou le quota d’analyses empêche l’opération                        |
| 403         | La portée de l’identifiant ou l’accès au projet n’autorise pas l’opération                       |
| 404         | Ressource ou fonctionnalité indisponible                                                         |
| 409         | Conflit, preuve ou autorisation absente ou expirée, annulation, ou nouveau contrôle indisponible |
| 422         | La sortie dépasse la taille prise en charge                                                      |
| 429         | Limite de requêtes atteinte                                                                      |
| 500         | Erreur interne                                                                                   |
| 503         | Capacité d’analyse indisponible                                                                  |

> **Good to know**
>
> L’API est en bêta. La [référence](/fr/docs/api/reference) liste chaque opération
> avec ses entrées, sa réponse et l’autorisation requise, et
> [openapi.json](/openapi.json) la décrit au format OpenAPI 3.1.