Saltar al contenido principal
POST
/
v2
/
databases
/
{database_id}
/
snapshots
Crear Snapshot
curl --request POST \
  --url https://api.squarecloud.app/v2/databases/{database_id}/snapshots \
  --header 'Authorization: <authorization>'
import requests

url = "https://api.squarecloud.app/v2/databases/{database_id}/snapshots"

headers = {"Authorization": "<authorization>"}

response = requests.post(url, headers=headers)

print(response.text)
const options = {method: 'POST', headers: {Authorization: '<authorization>'}};

fetch('https://api.squarecloud.app/v2/databases/{database_id}/snapshots', options)
  .then(res => res.json())
  .then(res => console.log(res))
  .catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
  CURLOPT_URL => "https://api.squarecloud.app/v2/databases/{database_id}/snapshots",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_ENCODING => "",
  CURLOPT_MAXREDIRS => 10,
  CURLOPT_TIMEOUT => 30,
  CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
  CURLOPT_CUSTOMREQUEST => "POST",
  CURLOPT_HTTPHEADER => [
    "Authorization: <authorization>"
  ],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
  echo "cURL Error #:" . $err;
} else {
  echo $response;
}
package main

import (
	"fmt"
	"net/http"
	"io"
)

func main() {

	url := "https://api.squarecloud.app/v2/databases/{database_id}/snapshots"

	req, _ := http.NewRequest("POST", url, nil)

	req.Header.Add("Authorization", "<authorization>")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.post("https://api.squarecloud.app/v2/databases/{database_id}/snapshots")
  .header("Authorization", "<authorization>")
  .asString();
require 'uri'
require 'net/http'

url = URI("https://api.squarecloud.app/v2/databases/{database_id}/snapshots")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Post.new(url)
request["Authorization"] = '<authorization>'

response = http.request(request)
puts response.read_body
{
  "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"
  }
}
{
  "status": "error",
  "code": "SNAPSHOT_PROCESSING"
}
{
  "status": "error",
  "code": "KEEP_CALM",
  "message": "You already requested a snapshot recently. Please wait a minute before trying again. 1r/5s"
}
{
  "status": "error",
  "code": "DAILY_SNAPSHOTS_LIMIT_REACHED",
  "message": "You are being rate limited for daily snapshots. 8r/24h"
}
Cada cuenta puede realizar hasta (RAM / 256) * 2 snapshots cada 24 horas.
Authorization
string
requerido
La clave de API de tu cuenta. Puedes encontrarla en la configuración de tu cuenta.

Parámetros

database_id
string
requerido
El ID de la base de datos.

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 por sí solo, normalmente en ~2 minutos. Este es el comportamiento esperado para bases de datos grandes.
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 (GET) — no otro POST. Volver a hacer un POST después de que el snapshot haya terminado inicia un snapshot completamente nuevo desde cero.
El cliente debe ramificar según la respuesta de la siguiente manera:
RespuestaSignificadoQué 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 (GET). No vuelvas a hacer POST.
status === "error" con cualquier otro codeFallo real.Gestiona el error (ver más abajo).

Respuesta

status
string
Indica si la llamada fue exitosa. success si fue exitosa, error si no.
response
object
El contenido de la respuesta. Presente solo cuando status es success.
SNAPSHOT_PROCESSING
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.

Errores

Una solicitud de snapshot puede ser rechazada con 429 Too Many Requests. Usa el campo code para distinguir los dos casos:
KEEP_CALM
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.
DAILY_SNAPSHOTS_LIMIT_REACHED
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.
{
  "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"
  }
}
{
  "status": "error",
  "code": "SNAPSHOT_PROCESSING"
}
{
  "status": "error",
  "code": "KEEP_CALM",
  "message": "You already requested a snapshot recently. Please wait a minute before trying again. 1r/5s"
}
{
  "status": "error",
  "code": "DAILY_SNAPSHOTS_LIMIT_REACHED",
  "message": "You are being rate limited for daily snapshots. 8r/24h"
}