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

# Autenticación

> Aprende cómo autenticarte con la API de Yampi.ai usando tokens de acceso

## Introducción

Todas las solicitudes a la API de Yampi.ai requieren autenticación mediante un token de acceso. El token se envía en el header `api_access_token` de cada solicitud HTTP.

<Info>
  La URL base de la API es `https://app.yampi.ai/api/v1`. Todas las solicitudes deben incluir el header de autenticación.
</Info>

## Tipos de tokens

Yampi.ai ofrece tres tipos de tokens de acceso según el tipo de integración que necesites:

### Token de usuario (userApiKey)

Este es el token más común para la mayoría de las integraciones. Proporciona acceso a los endpoints basado en los permisos del usuario.

<ParamField header="api_access_token" type="string" required>
  Token de acceso del usuario. Este token se obtiene visitando la página de perfil. Proporciona acceso a los endpoints basado en los niveles de permisos del usuario. Este token puede ser guardado por un sistema externo cuando el usuario es creado vía API, para realizar actividades en nombre del usuario.
</ParamField>

<Steps>
  <Step title="Obtén tu token de usuario">
    1. Inicia sesión en [Yampi.ai](https://app.yampi.ai)
    2. Navega a tu perfil de usuario desde el menú lateral izquierdo
    3. Desplázate hasta la sección "Token de acceso API"
    4. Copia tu token de acceso

    <Warning>
      Mantén tu token seguro. Si crees que ha sido comprometido, regenera uno nuevo desde tu perfil.
    </Warning>
  </Step>
</Steps>

### Token de bot (agentBotApiKey)

Este token está diseñado para integraciones de bots y solo puede acceder a APIs limitadas.

<ParamField header="api_access_token" type="string" required>
  Token de acceso para bots. Este token debe ser proporcionado por el administrador del sistema. Este token puede ser usado para construir integraciones de bots y solo puede acceder a APIs limitadas.
</ParamField>

<Info>
  El token de bot tiene acceso restringido a endpoints específicos. Consulta la documentación de cada endpoint para verificar si acepta tokens de bot.
</Info>

### Token de aplicación de plataforma (platformAppApiKey)

Este token se usa para provisionar agent bots, cuentas, usuarios y sus roles desde una aplicación externa.

<ParamField header="api_access_token" type="string" required>
  Token de acceso para aplicaciones de plataforma. Este token puede ser obtenido por el administrador del sistema después de crear una platformApp. Este token debe ser usado para provisionar agent bots, cuentas, usuarios y sus roles.
</ParamField>

<Warning>
  El token de plataforma tiene permisos administrativos amplios. Úsalo solo en entornos seguros y nunca lo expongas públicamente.
</Warning>

## Uso del token

Incluye el token en el header `api_access_token` de cada solicitud HTTP.

<RequestExample>
  ```bash cURL theme={null}
  curl -X GET 'https://app.yampi.ai/api/v1/accounts/{account_id}' \
    -H 'api_access_token: tu_token_aqui' \
    -H 'Content-Type: application/json'
  ```
</RequestExample>

<CodeGroup>
  ```javascript Node.js theme={null}
  const response = await fetch('https://app.yampi.ai/api/v1/accounts/{account_id}', {
    headers: {
      'api_access_token': process.env.YAMPI_API_TOKEN,
      'Content-Type': 'application/json'
    }
  });
  ```

  ```python Python theme={null}
  import requests

  headers = {
      'api_access_token': 'tu_token_aqui',
      'Content-Type': 'application/json'
  }

  response = requests.get(
      'https://app.yampi.ai/api/v1/accounts/{account_id}',
      headers=headers
  )
  ```

  ```php PHP theme={null}
  <?php
  $ch = curl_init();

  curl_setopt($ch, CURLOPT_URL, 'https://app.yampi.ai/api/v1/accounts/{account_id}');
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_HTTPHEADER, [
      'api_access_token: tu_token_aqui',
      'Content-Type: application/json'
  ]);

  $response = curl_exec($ch);
  curl_close($ch);
  ?>
  ```
</CodeGroup>

## Respuestas de error

Si el token es inválido o falta, recibirás una respuesta de error.

<ResponseExample>
  ```json Error 401 - Unauthorized theme={null}
  {
    "error": "Invalid Access Token"
  }
  ```
</ResponseExample>

<AccordionGroup>
  <Accordion title="Códigos de estado HTTP">
    * **401 Unauthorized**: El token es inválido, ha expirado o no se proporcionó
    * **403 Forbidden**: El token es válido pero no tiene permisos para acceder al recurso solicitado
  </Accordion>

  <Accordion title="Solución de problemas">
    * Verifica que estés usando el header correcto: `api_access_token` (no `Authorization`)
    * Asegúrate de que el token no tenga espacios adicionales al copiarlo
    * Si el token fue regenerado, actualiza todas tus integraciones con el nuevo token
    * Para tokens de bot, verifica que el endpoint acepte este tipo de token
  </Accordion>
</AccordionGroup>

## Mejores prácticas

<Tip>
  **Almacenamiento seguro**: Nunca hardcodees tokens en tu código fuente. Usa variables de entorno o un gestor de secretos.
</Tip>

<Tip>
  **Rotación de tokens**: Regenera tus tokens periódicamente, especialmente si sospechas que han sido comprometidos.
</Tip>

<Warning>
  **Nunca compartas tokens**: Los tokens de acceso son credenciales sensibles. No los compartas públicamente, los incluyas en repositorios de código o los expongas en logs.
</Warning>

## Próximos pasos

<CardGroup cols={2}>
  <Card title="Referencia de API" icon="book" href="/api-reference/introduction">
    Explora todos los endpoints disponibles y sus requisitos de autenticación.
  </Card>

  <Card title="Inicio rápido" icon="rocket" href="/quickstart">
    Realiza tu primera llamada a la API siguiendo nuestra guía paso a paso.
  </Card>
</CardGroup>
