# Visión general y claves

La API de Lockpick es lo que usan la CLI y los asistentes, con las mismas claves, permisos y límites.

La API de Lockpick vive en `/api/cli/v1` en tu dirección de Lockpick. La CLI y el servidor MCP la usan los dos. Algunas herramientas componen lecturas de la API en el cliente: la espera consulta un escaneo, y la evaluación aplica una política a su hora de finalización, cobertura y hallazgos abiertos. Consulta la [referencia](/es/docs/api/reference) para ver las operaciones HTTP detrás de ellas.

## Claves

Cada solicitud lleva una clave como token bearer.

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

Obtienes una clave iniciando sesión con la CLI, `lockpick login`, que te pide aprobarla en tu navegador. Las claves empiezan con `lpk_`, llevan los [permisos](/es/docs/mcp/permissions) que aprobaste y caducan cuando no se usan. Gestiónalas en Lockpick en **Añadir a tu IA**, en la pestaña **CLI y claves**.

## Respuestas

Cada respuesta es JSON con la misma forma: `data` se rellena cuando funciona y `error` cuando no.

```json title="Respuesta"
{ "data": { "sites": [] }, "error": null }
```

Las llamadas HTTP fallidas devuelven `data: null`, una cadena `error` legible y un `errorCode`. Los fallos de operación también incluyen `details` con el error estructurado del agente; los rechazos tempranos de autenticación o de funciones pueden omitirlo.

```json title="Error de operación"
{
  "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` es un número de segundos, o `null` cuando no se conoce ningún tiempo de reintento. Un tiempo de reintento conocido también aparece en la cabecera HTTP `Retry-After`. `webUrl` es un enlace al siguiente paso o `null`; `requestId` permite al soporte rastrear un fallo de operación. Las herramientas MCP normalizan estos campos en su objeto de error, donde `agentCode` se llama `code`.

| Estado HTTP | Significado                                                                             |
| ----------- | --------------------------------------------------------------------------------------- |
| 400         | Entrada no válida o versión no compatible                                               |
| 401         | Credencial ausente, caducada o revocada                                                 |
| 402         | El plan, el límite de sitios o el cupo de escaneos impide la operación                  |
| 403         | El ámbito de la credencial o el acceso al proyecto no permiten la operación             |
| 404         | Recurso o función no disponible                                                         |
| 409         | Conflicto, prueba o aprobación ausente o caducada, cancelación o revisión no disponible |
| 422         | La salida supera el tamaño admitido                                                     |
| 429         | Se alcanzó el límite de solicitudes                                                     |
| 500         | Error interno                                                                           |
| 503         | Capacidad de escaneo no disponible                                                      |

> **Good to know**
>
> La API está en beta. La [referencia](/es/docs/api/reference) enumera cada
> operación con sus entradas, su respuesta y el permiso que necesita, y
> [openapi.json](/openapi.json) la describe en OpenAPI 3.1.