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

# Inicio rápido

> Crea una cuenta, genera credenciales de API y realiza tu primera solicitud autenticada.

Esta guía te lleva desde el inicio hasta una llamada autenticada a la API. El proceso debería llevar unos minutos.

<a id="prerequisites" />

## Requisitos previos

* Una dirección de correo electrónico para verificar la cuenta.
* `curl` y `jq` para el ejemplo con token bearer de abajo.

<a id="create-an-account" />

## Crea una cuenta

<Steps>
  <Step title="Regístrate">
    Regístrate en [console.basaltic.sh](https://console.basaltic.sh/auth/signup).

    El registro, la verificación del correo y la configuración de facturación se realizan en la consola y no forman parte de la API pública.
  </Step>

  <Step title="Verifica tu correo electrónico">
    El registro envía un código de seis dígitos. La cuenta solo puede crear recursos después de verificarse.
  </Step>
</Steps>

<a id="issue-api-credentials" />

## Genera credenciales de API

Tu inicio de sesión en la consola te identifica como una persona. El acceso programático usa una **cuenta de servicio** y su clave de acceso. Crea una en la consola en **Identity & access** → **Service accounts**, o mediante la API:

<Steps>
  <Step title="Crea la cuenta de servicio">
    ```bash theme={null}
    POST https://iam.basaltic.sh/v1/service-accounts
    {"name": "deploy-bot"}
    ```

    Una cuenta de servicio pertenece a la cuenta seleccionada y empieza sin permisos. Asocia una política de cuenta que permita las acciones necesarias. Para la solicitud de abajo, permite `compute:ListInstances`. Las cuentas de servicio no pueden pertenecer a grupos. El acceso a la organización usa una concesión de política de organización independiente.
  </Step>

  <Step title="Crea una credencial para ella">
    ```bash theme={null}
    POST https://iam.basaltic.sh/v1/service-accounts/{service_account_id}/credentials
    {"name": "production-key"}
    ```

    La respuesta contiene la credencial y su secreto:

    ```json theme={null}
    {
      "credential": {
        "id": "3f8a1c2d-4b5e-6789-abcd-ef0123456789",
        "name": "production-key",
        "access_key_id": "BYCLD550E8400E29B41D4",
        "created_at": "2026-01-15T09:30:00Z"
      },
      "secret_access_key": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
    }
    ```

    <Warning>
      `secret_access_key` se devuelve **una sola vez**, al crear la credencial. No se almacena en un formato que la API pueda mostrar de nuevo. Si lo pierdes, elimina la credencial y crea otra.
    </Warning>
  </Step>
</Steps>

<a id="make-a-request" />

## Realiza una solicitud

Obtén un token y envíalo como credencial bearer. Ese es el flujo completo.

```bash theme={null}
TOKEN=$(curl -s -u "$ACCESS_KEY_ID:$SECRET_ACCESS_KEY" \
  -d grant_type=client_credentials \
  https://iam.basaltic.sh/v1/oauth/token | jq -r .access_token)

curl -s -H "Authorization: Bearer $TOKEN" \
     -H "X-Account-Id: $ACCOUNT_ID" \
  https://compute.sa-saopaulo-1.basaltic.sh/v1/instances
```

Una cuenta nueva no tiene instancias. Por tanto, una respuesta `200` con una lista vacía indica que la llamada se realizó correctamente.

Este es el flujo estándar de credenciales de cliente de OAuth 2.0. Cualquier biblioteca HTTP compatible con OAuth puede ejecutarlo y renovar el token automáticamente. Tu par de claves de acceso proporciona el identificador y el secreto del cliente.

<Tip>
  Los tokens duran una hora de forma predeterminada. Solicita otra duración con `duration_seconds`, entre 900 y 43200. Los valores fuera de ese intervalo se ajustan a los límites en lugar de rechazarse.
</Tip>

<Warning>
  Dos rechazos se parecen, pero requieren soluciones distintas. `invalid_client` indica que la clave se rechazó: revísala o rótala. `invalid_grant` indica que la clave es correcta y que tu organización está suspendida o aún en proceso de incorporación. En ese caso, cambiar una clave que funciona solo te haría perder tiempo.
</Warning>

<a id="object-storage-uses-the-same-key-pair" />

## El almacenamiento de objetos usa el mismo par de claves

El endpoint compatible con S3 verifica AWS Signature Version 4, usado por todos los clientes S3. Configura un cliente para acceder al endpoint con el **mismo par de claves de acceso**, sin token:

```bash theme={null}
aws --endpoint-url https://objects.sa-saopaulo-1.basaltic.cloud \
  s3 ls
```

Una credencial cubre ambos casos: un token bearer para esta API y el propio par de claves para S3. No tienes que elegir un modo de autenticación al realizar la solicitud.

<a id="where-to-go-next" />

## Próximos pasos

<CardGroup cols={2}>
  <Card title="Autenticación" icon="key" href="/es/authentication">
    Intercambio de tokens bearer, inicio de sesión personal y credenciales temporales de roles.
  </Card>

  <Card title="Regiones y endpoints" icon="globe" href="/es/regions">
    En qué host responde cada servicio.
  </Card>

  <Card title="Referencia de la API" icon="code" href="/es/api-reference/introduction">
    Todas las operaciones y sus esquemas.
  </Card>

  <Card title="Soporte" icon="life-ring" href="/es/support">
    Cuando algo no funciona y necesitas hablar con alguien.
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.