> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dialtu.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Autenticación

> Crea una clave de API y envíala como token Bearer

La API pública se autentica **solo con claves de API**. No hay flujo OAuth, ni usuario y
contraseña, ni sesión: una clave es todo lo que necesita una solicitud.

## Crear una clave

<Steps>
  <Step title="Abre Configuración → API Keys">
    En el panel, entra en **Configuración** y abre la pestaña **API Keys**. Necesitas el permiso
    de *claves de API*; los propietarios de la cuenta lo tienen por defecto.
  </Step>

  <Step title="Crea una clave con nombre">
    Pulsa **Crear API Key** y ponle un nombre que diga para qué es (`sync-crm`,
    `formulario-web`). Los nombres son únicos dentro de la cuenta.
  </Step>

  <Step title="Cópiala ahora">
    La clave completa — `pk_` seguido de 43 caracteres — se muestra **una sola vez**. Guárdala en
    tu gestor de secretos. Después, el panel solo muestra una vista previa (`pk_abcd...`).
  </Step>
</Steps>

## Envíala en cada solicitud

Pon la clave en la cabecera `Authorization` como token Bearer:

```bash theme={null}
curl https://api.dialtu.com/api/v2/public/salesflow/pipelines/12/stages \
  -H "Authorization: Bearer pk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
```

En el panel **Try it** de cualquier endpoint, pega la clave en el campo **Authorization**; la
solicitud sale a través del proxy del sitio de documentación, así que funciona desde el
navegador.

## Cuando falla la autenticación

La autenticación se comprueba antes que nada, así que estas respuestas llevan un cuerpo
`{"detail"}` simple en lugar del sobre con `error_code` descrito en
[Errores](/es/api-reference/errores):

| Situación                                      | Respuesta                                                                         |
| ---------------------------------------------- | --------------------------------------------------------------------------------- |
| Cabecera `Authorization` ausente o mal formada | `401` `{"detail": "Unauthorized"}`                                                |
| Clave desconocida o eliminada                  | `401` `{"detail": "Invalid or expired API key. Please check your credentials."}`  |
| Clave creada antes del alcance por sub-cuenta  | `401` `{"detail": "This API key is not scoped to a workspace. Contact support."}` |

## Alcance: a qué llega una clave

Una clave pertenece a la cuenta en la que se creó y solo puede leer y escribir los datos de esa
cuenta. Si tu cuenta es una cuenta de socio con varias sub-cuentas, **una clave cubre
exactamente una sub-cuenta**: aquella en la que estabas al crearla.

* Los listados devuelven solo los registros de esa sub-cuenta, incluido su `count`.
* Un ID que pertenece a otra sub-cuenta no existe para tu clave: obtienes un `404` o un rechazo
  `UNKNOWN_*`, nunca datos del calendario o pipeline equivocado.

Para integrar varias sub-cuentas, crea una clave dentro de cada una y envía las solicitudes de
cada sub-cuenta con su propia clave.

## Mantén las claves a salvo

<Warning>
  Una clave da el mismo acceso que un usuario de la cuenta. Trátala como una contraseña.
</Warning>

* Usa las claves **solo del lado del servidor**. Nunca incrustes una en una app móvil, en el
  código del navegador ni en un repositorio público.
* Crea **una clave por integración**, con su nombre, para que revocar una no rompa otra.
* **Revoca** una clave eliminándola en **Configuración → API Keys**; las solicitudes con ella
  fallan de inmediato con `401`.
* Para **rotar**, crea la clave nueva, cambia tu integración y luego elimina la antigua. No hay
  caducidad: una clave sigue válida hasta que la elimines.
