---
title: "An app's environment variables"
method: GET
path: "/client/services/{id}/env"
tags: ["Apps"]
---

# An app's environment variables

`GET /client/services/{id}/env`

## Request

- Base URL: `https://api.roar-ai.com`
- URL: `https://api.roar-ai.com/client/services/{id}/env`
- Auth: HTTP bearer

The variables your app receives. `id` is a SERVICE id — take it from `services[].id` on `GET /client/apps/{appId}`, not the app id itself.

Values come back only if your project role may read them — otherwise the names are returned with null values and `canReveal` is false. Pass `?reveal=0` to ask for names only whatever your role, which is what an assistant should send: a value it receives is a value in a transcript.

`managed` lists the variables Roar sets itself (`ROAR_API_KEY`, `ROAR_BASE_URL`, `ROAR_MCP_URL`) — read-only, and already present without you adding them.

## Path parameters

- `id` string, uuid, required

## Response `200`

Variables

- AppEnvView
  - `data` object, required: Your own variables. A null VALUE means the variable exists and your role may not read it — not that it is blank
  - `roarDefaults` string[], required: Names in `data` that still hold the value Roar set for your app (APP_NAME, APP_ENVIRONMENT, APP_URL, APP_PUBLIC_URL). You may change them — your value then replaces ours, and the name leaves this list
  - `canReveal` boolean, required: False when every value above was withheld
  - `managed` object[], required: Variables Roar sets on the app. Read-only: they are refused at the write door
    - `name` string, required
    - `value` string, nullable, required: Null on the same terms as `data` above
    - `note` string, required: What it is for, in plain language

## Other responses

- `403`: Role may not list secrets
- `404`: No such app service

---

[API](https://skmtc.dev/roar-ai/apis/roar-ai-api.md) · [All operations](https://skmtc.dev/roar-ai/apis/roar-ai-api/llms.txt) · [OpenAPI document](https://skmtc.dev/roar-ai/apis/roar-ai-api/revisions/37e4d0d5a7fe?raw)
