> ## 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.

# Crear un secreto

> Naming, la ventana de recuperación que un secreto lleva desde su nacimiento, y lo que la llamada de creación no toma.

<a id="creating-a-secret" />

## Crear un secreto

<Tabs>
  <Tab title="Console">
    Ve a **Secrets** y selecciona **Create Secret**. En **Secret details**, dale un **Name** y una **Description** opcional, pega el primer **Value** y deja **Encryption key** en **Platform-managed key
    (default)** a menos que quieras una de tus propias claves.

    La consola toma el valor como texto y lo codifica en base64 por ti; sobre la API lo codificas tú mismo.
  </Tab>

  <Tab title="API">
    ```bash theme={null}
    POST https://secrets.sa-saopaulo-1.basaltic.sh/v1/secrets
    {
      "name": "prod/api/stripe-key",
      "value": "c3VwZXItc2VjcmV0LXZhbHVl",
      "description": "Stripe live secret key for the payments service"
    }
    ```
  </Tab>

  <Tab title="CLI">
    ```bash theme={null}
    basaltic secrets create \
      --name prod/api/stripe-key \
      --value c3VwZXItc2VjcmV0LXZhbHVl \
      --description "Stripe live secret key for the payments service"
    ```
  </Tab>

  <Tab title="Go">
    ```go theme={null}
    cfg, err := basaltic.NewConfig(ctx,
        basaltic.WithClientCredentials(os.Getenv("BASALTIC_ACCESS_KEY_ID"), os.Getenv("BASALTIC_SECRET_ACCESS_KEY")),
        basaltic.WithRegion("sa-saopaulo-1"),
    )
    if err != nil {
        log.Fatal(err)
    }

    sec, err := secrets.New(cfg).CreateSecret(ctx, &secrets.CreateSecretRequest{
        Name:        "prod/api/stripe-key",
        Value:       []byte("super-secret-value"),
        Description: basaltic.String("Stripe live secret key for the payments service"),
    })
    ```

    `Value` es bytes sin procesar — el SDK lo codifica en base64, así que no lo codifique usted mismo.
  </Tab>
</Tabs>

Un secreto se crea **con** su primer valor — no existe tal cosa como un secreto vacío. La respuesta es `201` y el secreto está en la versión 1.

<ResponseField name="value" type="base64, 1 byte – 64 KiB">
  Los valores viajan codificados en base64, por lo que las cargas binarias arbitrarias sobreviven intactas en JSON. Cualquier cosa mayor que 64 KiB pertenece a un [bucket](/es/storage), con el secreto que contiene la referencia y las credenciales para recuperarlo — no empaquetado en línea.
</ResponseField>

<ResponseField name="name" type="unique per account">
  Coincide con `^[a-zA-Z0-9][a-zA-Z0-9._/-]{0,255}$`. Se permiten las barras, por lo que `prod/api/stripe-key` funciona — y debido a que el CRN se construye a partir del nombre, una convención de ruta se convierte directamente en política: `crn:secrets:sa-saopaulo-1:my-account:secret/prod/*`.
</ResponseField>


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