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

# Configurar un bucket de AWS S3 personalizado

De forma predeterminada, Novita AI almacena temporalmente los resultados de salida en nuestro bucket privado de S3 y devuelve los resultados al usuario mediante un enlace temporal autorizado de S3.

Sin embargo, puedes configurar un **bucket de S3 personalizado** para permitirnos guardar los resultados en tu propio bucket. Sigue los pasos a continuación para habilitarlo.

## 1. Configurar la política del bucket de S3

Primero, cambia la configuración de la política de tu bucket de S3 al siguiente formato (reemplaza `${BucketName}` por el nombre de tu bucket):

```json theme={"system"}
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "CanonicalUser": "e98cde8d11ec7c03ac08688f1a933b08b0f0f7746b21c4f2e7b2c8202cc0532f"
      },
      "Action": [
        "s3:PutObject",
        "s3:PutObjectAcl"
      ],
      "Resource": "arn:aws:s3:::${BucketName}/*"
    }
  ]
}
```

## 2. Habilitar almacenamiento personalizado en las API V3

Para los endpoints de la API V3, Novita AI proporciona el parámetro `custom_storage` en el cuerpo de la solicitud, lo que te permite configurar tu bucket de S3 personalizado para almacenar las imágenes generadas.

Aquí tienes un ejemplo usando el endpoint de la API `txt2img`:

```bash theme={"system"}
curl --location 'https://api.novita.ai/v3/async/txt2img' \
--header 'Authorization: Bearer {{API Key}}' \
--header 'Content-Type: application/json' \
--data '{
  "extra": {
    "response_image_type": "jpeg",
    "custom_storage": {
      "aws_s3": {
        "region": "us-east-2",
        "bucket": "test_bucket",
        "path": "/"
      }
    }
  },
  "request": {
    "prompt": "a cute dog",
    "model_name": "realisticVisionV51_v51VAE_94301.safetensors",
    "negative_prompt": "",
    "width": 512,
    "height": 384,
    "image_num": 2,
    "steps": 20,
    "seed": 123,
    "clip_skip": 1,
    "sampler_name": "Euler a",
    "guidance_scale": 7.5
  }
}'
```
