> ## 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.

# Environment variables

> List, add, replace and delete environment variables for an application.

```go theme={null}
client := rest.NewClient(os.Getenv("SQUARECLOUD_API_KEY"))
defer client.Close()

api := rest.New(client)
```

Environment variables are modeled as `squarecloud.EnvVars`, a plain `map[string]string`. Every method resolves to the full env set after the operation completes — you always get an up-to-date map back.

<Note>
  Limits: up to 256 variables per application, keys up to 1024 characters and values up to 4096 characters.
</Note>

## Listing environment variables

```go theme={null}
envs, err := api.GetApplicationEnvs("abc123def456abc123def456")
if err != nil {
	panic(err)
}

for key, value := range envs {
	fmt.Printf("%s=%s\n", key, value)
}
```

## Adding or updating variables

`api.SetApplicationEnvs(appID, envs)` **merges** new variables into the existing set. Existing keys not present in the call are preserved.

```go theme={null}
envs, err := api.SetApplicationEnvs("abc123def456abc123def456", squarecloud.EnvVars{
	"DATABASE_URL": "postgres://...",
	"FEATURE_FLAG": "true",
})
if err != nil {
	panic(err)
}
```

## Replacing the entire env set

`api.ReplaceApplicationEnvs(appID, envs)` overwrites every variable.

<Warning>
  Anything not listed in the call is **removed**. Use `SetApplicationEnvs` when you only want to add or update — `ReplaceApplicationEnvs` deletes every variable you leave out.
</Warning>

```go theme={null}
envs, err := api.ReplaceApplicationEnvs("abc123def456abc123def456", squarecloud.EnvVars{
	"DATABASE_URL": "postgres://new-host...",
})
if err != nil {
	panic(err)
}
// FEATURE_FLAG is now gone
```

Pass an empty map to wipe all variables:

```go theme={null}
_, err := api.ReplaceApplicationEnvs("abc123def456abc123def456", squarecloud.EnvVars{})
```

## Deleting variables

`api.DeleteApplicationEnvs(appID, keys)` removes the listed keys. Unknown keys are silently ignored.

```go theme={null}
envs, err := api.DeleteApplicationEnvs("abc123def456abc123def456", []string{"FEATURE_FLAG"})
if err != nil {
	panic(err)
}
```
