Skip to main content
POST
/
v2
/
databases
Create Database
curl --request POST \
  --url https://api.squarecloud.app/v2/databases \
  --header 'Authorization: <authorization>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "name": "<string>",
  "memory": 123,
  "type": "<string>",
  "version": "<string>"
}
'
import requests

url = "https://api.squarecloud.app/v2/databases"

payload = {
"name": "<string>",
"memory": 123,
"type": "<string>",
"version": "<string>"
}
headers = {
"Authorization": "<authorization>",
"Content-Type": "application/json"
}

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

print(response.text)
const options = {
method: 'POST',
headers: {Authorization: '<authorization>', 'Content-Type': 'application/json'},
body: JSON.stringify({name: '<string>', memory: 123, type: '<string>', version: '<string>'})
};

fetch('https://api.squarecloud.app/v2/databases', 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",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'memory' => 123,
'type' => '<string>',
'version' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>",
"Content-Type: application/json"
],
]);

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

curl_close($curl);

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

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

func main() {

url := "https://api.squarecloud.app/v2/databases"

payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"memory\": 123,\n \"type\": \"<string>\",\n \"version\": \"<string>\"\n}")

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

req.Header.Add("Authorization", "<authorization>")
req.Header.Add("Content-Type", "application/json")

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")
.header("Authorization", "<authorization>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"memory\": 123,\n \"type\": \"<string>\",\n \"version\": \"<string>\"\n}")
.asString();
require 'uri'
require 'net/http'

url = URI("https://api.squarecloud.app/v2/databases")

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

request = Net::HTTP::Post.new(url)
request["Authorization"] = '<authorization>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"memory\": 123,\n \"type\": \"<string>\",\n \"version\": \"<string>\"\n}"

response = http.request(request)
puts response.read_body
{
  "status":"success",
  "response": {
    "id": "a14b8d5e1cb7405a851eb4c075506121",
    "name": "test",
    "memory": 1024,
    "cpu": 2,
    "type": "mongo",
    "password": "PASSWORD",
    "certificate": "CERTIFICATE_IN_BASE_64_FORMAT",
    "connection_url": "mongodb://default:PASSWORD@square-cloud-db-ID.squareweb.app:PORT"
    }
}
Authorization
string
required
The API key for your account. You can find this in your account settings.
Provisions a managed database on Square Cloud (MongoDB, MySQL, PostgreSQL or Redis), picks the cluster with the most available RAM, and allocates a public DNS record (square-cloud-db-<id>.squareweb.app) pointing to it. The password and certificate in the response are shown only once, save them immediately since neither can be retrieved again later, only reset via Reset Credentials. Database hosting requires a Standard, Pro or Enterprise plan. The requested memory must be at least the engine’s minimum (512 MB for Redis, 1024 MB for MongoDB, MySQL and PostgreSQL) and cannot exceed your account’s available memory. Rate limited to 1 creation every 3 seconds per user. Once created, use Edit Database to rename it or resize its memory, and Create Snapshot to back it up.

Parameters

name
string
required
The name of the database. 1–32 characters — letters, numbers, underscores (_), hyphens (-) and spaces — and must include at least one letter, number or underscore.
memory
int
required
The RAM allocated to it. Redis minimum is 512 and Mongo, 1024.
type
string
required
The database type, mongo, redis, postgres, mysql.
version
string
required
The version of the database.\ Postgres 17, MySQL 9, Mongo 8, Redis 7.

Response

status
string
Indicates whether the call was successful.. success if successful, error if not.
response
object
The contents of the response.
{
  "status":"success",
  "response": {
    "id": "a14b8d5e1cb7405a851eb4c075506121",
    "name": "test",
    "memory": 1024,
    "cpu": 2,
    "type": "mongo",
    "password": "PASSWORD",
    "certificate": "CERTIFICATE_IN_BASE_64_FORMAT",
    "connection_url": "mongodb://default:PASSWORD@square-cloud-db-ID.squareweb.app:PORT"
    }
}

Common errors

CodeHTTPMeaning
INVALID_NAME400The name fails the 1-32 character validation.
INVALID_DATABASE_TYPE400type is not one of mongo, mysql, redis, postgres.
INVALID_DATABASE_VERSION400version is not a supported version for the chosen type.
INSUFFICIENT_MEMORY400The requested memory is below the engine’s minimum or exceeds the account’s available memory.
CLUSTER_SELECTION_FAILED400No cluster with enough capacity could be selected.
DATABASE_CREATION_FAILED400 / 500Provisioning failed, or the cluster response was incomplete.
UPGRADE_REQUIRED403The active plan does not include database hosting.
CLUSTER_MAINTENANCE_TRY_LATER503Database provisioning is temporarily unavailable due to maintenance.