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

# Crear Snapshot

> Realiza un snapshot de tu base de datos. Tiene un límite de 1 solicitud cada 5 segundos.

<Warning>Cada cuenta puede realizar hasta (RAM / 256) \* 2 snapshots cada 24 horas.</Warning>

<ParamField header="Authorization" type="string" placeholder="API Key" required>
  La clave de API de tu cuenta. Puedes encontrarla en la [configuración de tu cuenta](https://squarecloud.app/es/account/security).
</ParamField>

### Parámetros

<ParamField path="database_id" type="string" placeholder="Database ID" required>
  El ID de la base de datos.
</ParamField>

### Comportamiento de soft deadline

Esta ruta sigue un modelo de **soft deadline** — ya no siempre responde de forma síncrona.

* Si el snapshot termina dentro de **\~90 segundos**, la ruta responde con `200 success` y una URL de descarga firmada (válida durante 30 días), exactamente como antes.
* Si el snapshot tarda más de **\~90 segundos** en generarse, la ruta responde **inmediatamente** con `202` y el código `SNAPSHOT_PROCESSING`. **Esto no es un fallo.** El snapshot continúa generándose en segundo plano y aparecerá en el [listado de snapshots](/es/api-reference/endpoint/databases/snapshots/list) por sí solo, normalmente en \~2 minutos. Este es el comportamiento esperado para bases de datos grandes.

<Warning>
  No uses este endpoint `POST` como mecanismo de sondeo. Para comprobar si un snapshot en estado `SNAPSHOT_PROCESSING` ha finalizado, usa el endpoint [List Snapshots](/es/api-reference/endpoint/databases/snapshots/list) (`GET`) — **no** otro `POST`. Volver a hacer un `POST` después de que el snapshot haya terminado inicia un snapshot completamente nuevo desde cero.
</Warning>

El cliente debe ramificar según la respuesta de la siguiente manera:

| Respuesta                                               | Significado                        | Qué hacer                                                                                                                                                 |
| ------------------------------------------------------- | ---------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `status === "success"`                                  | El snapshot está listo.            | Usa la `url` para descargarlo.                                                                                                                            |
| `status === "error"` y `code === "SNAPSHOT_PROCESSING"` | El snapshot aún se está generando. | Espera \~2 minutos, luego confirma mediante [List Snapshots](/es/api-reference/endpoint/databases/snapshots/list) (`GET`). **No** vuelvas a hacer `POST`. |
| `status === "error"` con cualquier otro `code`          | Fallo real.                        | Gestiona el error (ver más abajo).                                                                                                                        |

### Respuesta

<ResponseField name="status" type="string">
  Indica si la llamada fue exitosa. `success` si fue exitosa, `error` si no.
</ResponseField>

<ResponseField name="response" type="object">
  El contenido de la respuesta. Presente solo cuando `status` es `success`.

  <Expandable title="Alternar objeto">
    <ResponseField name="url" type="string">
      La URL para descargar el snapshot de tu aplicación.
    </ResponseField>

    <ResponseField name="key" type="string">
      La clave para descargar el snapshot de tu aplicación.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="SNAPSHOT_PROCESSING" type="202">
  Se devuelve cuando el snapshot supera el soft deadline de \~90 segundos. El snapshot aún se está generando en segundo plano y aparecerá en el listado de snapshots por sí solo, normalmente en \~2 minutos. No es un error — espera y confirma mediante el endpoint de listado `GET`.
</ResponseField>

### Errores

Una solicitud de snapshot puede ser rechazada con `429 Too Many Requests`. Usa el campo `code` para distinguir los dos casos:

<ResponseField name="KEEP_CALM" type="429">
  Enfriamiento a corto plazo — has alcanzado el límite por usuario (1 solicitud / 5s) o por base de datos (1 solicitud / 180s). Reduce la frecuencia y reintenta en breve.
</ResponseField>

<ResponseField name="DAILY_SNAPSHOTS_LIMIT_REACHED" type="429">
  Cuota diaria alcanzada — la cuenta agotó el límite diario de snapshots de su plan ((RAM / 256) × 2 por 24h). La cuota se libera a medida que avanza la ventana móvil de 24 horas; para un límite diario mayor, mejora el plan.
</ResponseField>

<ResponseExample>
  ```json 200 Success theme={null}
  {
    "status":"success",
    "response":{
      "url":"https://snapshots.squarecloud.app/databases/384443501775028242/a14b8d5e1cb7405a851eb4c075506121.zip?AWSAccessKeyId=accesskey&Expires=1757683751&Signature=JR3danhvtVywQmcaIanWsoJFqhQ%3D",
      "key":"AWSAccessKeyId=accesskey&Expires=1757683751&Signature=JR3danhvtVywQmcaIanWsoJFqhQ%3D"
    }
  }
  ```

  ```json 202 SNAPSHOT_PROCESSING theme={null}
  {
    "status": "error",
    "code": "SNAPSHOT_PROCESSING"
  }
  ```

  ```json 429 KEEP_CALM theme={null}
  {
    "status": "error",
    "code": "KEEP_CALM",
    "message": "You already requested a snapshot recently. Please wait a minute before trying again. 1r/5s"
  }
  ```

  ```json 429 DAILY_SNAPSHOTS_LIMIT_REACHED theme={null}
  {
    "status": "error",
    "code": "DAILY_SNAPSHOTS_LIMIT_REACHED",
    "message": "You are being rate limited for daily snapshots. 8r/24h"
  }
  ```
</ResponseExample>
