Primeros pasos

# Autenticación

Cada solicitud lleva una llave API. Genera la tuya desde el panel.

Cada llamada al API se autentica con una llave API enviada en el encabezado x-api-key. Las llaves están ligadas a una cuenta o a una organización y heredan el plan y saldo de ese propietario.

RFCCheck y CURPCheck comparten cuentas: una llave llama a los endpoints de RFC y de CURP, en rfccheck.com o en curpcheck.com, y cada llamada se descuenta del mismo plan y saldo.

## Generar una llave

Abre [Llaves API](/dashboard/api-keys) en tu panel y haz clic en *Crear llave*. Ponle una etiqueta a la llave para que el tú del futuro pueda distinguir tu llave de CI de tu llave de producción.

Las llaves se muestran una sola vez al crearlas. Copia la tuya a un gestor de secretos (1Password, AWS Secrets Manager, Doppler, .env, los secrets de tu proveedor de CI) antes de cambiar de página. Si pierdes una llave, elimínala y crea una nueva. No hay manera de recuperarla.

## Usar una llave

Envía la llave en el encabezado x-api-key en cada solicitud:

curl

```bash
curl -X POST https://curpcheck.com/v1/curp/lookup \
  -H "x-api-key: rfc_your_api_key" \
  -H "Content-Type: application/json" \
  -d '{"curp": "PEMJ800101HDFRRN07"}'
```

JavaScript (fetch)

```js
await fetch("https://curpcheck.com/v1/curp/lookup", {
  method: "POST",
  headers: {
    "x-api-key": process.env.CURPCHECK_API_KEY,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({ curp: "PEMJ800101HDFRRN07" }),
});
```

Python (requests)

```python
import os, requests

requests.post(
    "https://curpcheck.com/v1/curp/lookup",
    headers={"x-api-key": os.environ["CURPCHECK_API_KEY"]},
    json={"curp": "PEMJ800101HDFRRN07"},
)
```

## Rotación de llaves

Rota las llaves cuando un compañero deje el equipo o cuando una llave pudo haberse expuesto. El patrón recomendado: crea la nueva llave, despliégala a tu gestor de secretos, cambia el tráfico y después elimina la llave anterior desde el panel.

## Llaves de organización

Las llaves creadas dentro de una organización (bajo /org/:slug/api-keys) se cobran contra el plan y saldo de la organización, no contra la cuenta personal de quien las creó. Usa llaves de organización cuando el costo deba atribuirse a un equipo en lugar de a una persona.

## Respuestas de error

- `401 Unauthorized`: la llave falta, está mal formada o ha sido eliminada.
- `402 Payment Required`: la llave se autenticó, pero el propietario no tiene créditos restantes ni saldo prepagado.
- `429 Too Many Requests`: límite de tasa excedido. Espera y reintenta.