# Autenticación

> Envía la clave de API en cada solicitud y elige el workspace cuando la clave alcance más de uno.

Toda solicitud lleva una clave de API. La clave define la cuenta, el workspace y de quién salen los créditos.

## Crea una clave

Abre [Claves de API](https://cut.pro/studio/me/api-keys) y haz clic en **Nueva clave**. La clave aparece una sola vez: cópiala y guárdala en tu gestor de secretos. Las claves de API están en los planes Gratuito, Básico, Plus y Pro.

> La clave gasta créditos y publica en las cuentas conectadas del workspace. Déjala en el servidor, en una variable de entorno. Nunca en el navegador, en la app ni en el repositorio.

## Envía la clave

Usa el header `X-Api-Key`:

```bash
curl https://api.cut.pro/api/v1/workspace \
  -H "X-Api-Key: $CUTPRO_API_KEY"
```

O `Authorization: Bearer`, si tu cliente HTTP ya arma ese header:

```bash
curl https://api.cut.pro/api/v1/workspace \
  -H "Authorization: Bearer $CUTPRO_API_KEY"
```

Una clave ausente, revocada o vencida responde `401`:

```json title="401 Unauthorized"
{ "code": "UNAUTHORIZED" }
```

Una cuenta bloqueada responde `403` con `ACCOUNT_BLOCKED`. En ese caso ninguna clave de la cuenta funciona: habla con soporte.

## Workspaces

Créditos, videos, clips, renders y conexiones pertenecen a un workspace. La clave está vinculada a uno o más workspaces, y cada solicitud opera en exactamente uno.

### Clave con un workspace

No hay nada que hacer. Toda solicitud cae en el workspace de la clave.

### Clave con más de un workspace

Envía `X-Workspace-Id` en cada solicitud:

```bash
curl https://api.cut.pro/api/v1/balance \
  -H "X-Api-Key: $CUTPRO_API_KEY" \
  -H "X-Workspace-Id: 7401220118845503"
```

Sin el header, la API responde `400` y lista los workspaces que la clave alcanza:

```json title="400 Bad Request"
{
  "code": "MISSING_WORKSPACE_ID",
  "extra": { "allowed_workspace_ids": ["7401220118845503", "7401220118845991"] }
}
```

Un id fuera de esa lista responde `400 WORKSPACE_NOT_AUTHORIZED`, con la misma lista en `extra`.

Para saber en qué workspace cayó la solicitud, con plan y rol, llama a `GET /workspace`.

## Cuentas sociales

Para publicar, el workspace necesita cuentas conectadas. `GET /connections` lista las que existen y devuelve el `id` que va en `connection_id` del post. ¿Falta una red? `GET /connections/link?platform=tiktok` devuelve un enlace de Cut.Pro que abre el inicio de sesión de esa red. Entrega el enlace a la persona, espera a que vuelva y lista de nuevo. Ve [Publicación](/es/publishing).

## Buenas prácticas

- **Una clave por integración.** Si una se filtra, revocas solo esa.
- **Revoca lo que no uses.** La página de claves muestra cada clave, y revocar vale al instante.
- **No registres el header en logs.** Muchos clientes HTTP guardan los headers en modo debug.
