Skip to main content
Every operation on this page lives on the rest.Rest client:
client := rest.NewClient(os.Getenv("SQUARECLOUD_API_KEY"))
defer client.Close()

api := rest.New(client)

Fetching an application

api.GetApplication(appID) returns the full squarecloud.Application record.
app, err := api.GetApplication("abc123def456abc123def456")
if err != nil {
	panic(err)
}

fmt.Println(app.ID, app.Name, app.Cluster, app.CreatedAt)

Application properties

FieldTypeDescription
IDstringApplication ID (24 hex chars)
NamestringDisplay name
DescriptionstringDescription from the config file
OwnerstringOwner user ID
ClusterstringCluster the app runs on
RAMintAllocated RAM in MB
Languagestringjavascript | typescript | python | java | elixir | go | rust | ruby | php | dotnet | static
Domain*stringDefault <subdomain>.squareweb.app host — nil for non-web apps
Custom*stringCustom domain bound to the app — nil when not configured
CreatedAtstringCreation date
Domain and Custom are pointers — always nil-check before dereferencing:
if app.Domain != nil {
	fmt.Println("running at", *app.Domain)
}

Getting the application status

api.GetApplicationStatus(appID) returns the live runtime state with human-formatted values.
status, err := api.GetApplicationStatus("abc123def456abc123def456")
if err != nil {
	panic(err)
}

fmt.Println(status.Status)  // "running" | "starting" | "restarting" | "exited" | "created" | "deleting"
fmt.Println(status.Running) // bool
fmt.Println(status.CPU)     // "0.50%"
fmt.Println(status.RAM)     // "120/512MB"
fmt.Println(status.Network) // formatted totals
fmt.Println(status.Storage) // e.g. "0B"

if status.Uptime != nil {
	fmt.Println(time.UnixMilli(*status.Uptime)) // started at
}
Uptime is a *int64 holding the start timestamp in Unix milliseconds — it is nil when the application is stopped.

Raw status

api.GetApplicationStatusRaw(appID) calls the same endpoint with ?rawData=true and returns numeric values instead of formatted strings — CPU/RAM as numbers and network as [in, out] byte pairs. Use it when you want to compute or plot instead of print.
raw, err := api.GetApplicationStatusRaw("abc123def456abc123def456")
if err != nil {
	panic(err)
}

fmt.Println(raw.CPU)     // 0.5
fmt.Println(raw.RAM)     // 120
fmt.Println(raw.Network) // { Total: [in, out], Now: [in, out] } in bytes
Formatted status is convenient for display ("120/512MB"); raw status is what you want for dashboards, alerts or any arithmetic — parsing formatted strings back into numbers is fragile.

Summary status for every application

To avoid one request per app, call api.GetApplicationListStatus():
list, err := api.GetApplicationListStatus()
if err != nil {
	panic(err)
}

for _, summary := range list {
	fmt.Printf("%s → running=%v\n", summary.ID, summary.Running)
}
CPU and RAM figures are only present for applications that are currently running.

Getting the logs

api.GetApplicationLogs(appID) returns the most recent log output.
logs, err := api.GetApplicationLogs("abc123def456abc123def456")
if err != nil {
	panic(err)
}

fmt.Println(logs.Logs) // string

Getting metrics

api.GetApplicationMetrics(appID) returns the last 24 hours of CPU, RAM and network samples (up to 288 points, one every 5 minutes) as a []squarecloud.MetricPoint.
metrics, err := api.GetApplicationMetrics("abc123def456abc123def456")
if err != nil {
	panic(err)
}

fmt.Println(len(metrics), "data points")
for _, point := range metrics {
	fmt.Println(point.Date, point.CPU, point.RAM, point.Net)
}

Lifecycle

api.PostApplicationSignal(appID, signal) starts, stops or restarts the application. The signal is one of the squarecloud.ApplicationSignal* constants:
err := api.PostApplicationSignal("abc123def456abc123def456", squarecloud.ApplicationSignalStart)
if err != nil {
	panic(err)
}

// squarecloud.ApplicationSignalStop
// squarecloud.ApplicationSignalRestart

Deleting an application

DeleteApplication permanently removes the application. Unless you have a snapshot, the data cannot be recovered.
err := api.DeleteApplication("abc123def456abc123def456")
if err != nil {
	panic(err)
}