---
title: "List Environment Variables"
method: GET
path: "/api/v1/environment-variables/"
tags: ["Environment Variables"]
---

# List Environment Variables

`GET /api/v1/environment-variables/`

## Request

- Base URL: `http://localhost:3009`
- URL: `http://localhost:3009/api/v1/environment-variables/`
- Auth: HTTP bearer

Returns the organization's environment variables, sorted by `key`. Reference one from any string value in **Configure Action**'s `inputs` using its `reference` token (e.g. `{{env.api_base}}`), on its own or mixed with literal text. The value is substituted for every row when the workflow runs.

**Values are never returned by this API.** Each entry carries the definition and `value_count` — how many scope points have a value — so you can tell a configured variable from an empty one. Values are set in the Floqer app.

**Scopes.** `org` — one value for the whole organization, usable anywhere. `user` — one value per member, resolved against the workflow's owner (not whoever triggers the run), usable anywhere. `workflow` — one value per workflow, so it resolves ONLY in workflows that have a value set for it.

**Pass `workflow_id`** to get the list usable in that workflow: workflow-scoped variables with no value there are omitted. Without it you get the org-wide inventory, which can include workflow-scoped variables that resolve nowhere you are currently building.

Environment variables cannot be used in conditions (`run_if`, or the Filter action's `path_conditions`) — they are substituted after conditions are evaluated. Configure Action returns a warning and skips the condition if you try.

Requires the `workflows:read` scope.

## Query parameters

- `workflow_id` string, uuid

## Response `200`

Default Response

- object
  - `status` integer, required
  - `data` EnvironmentVariable[], required: The organization's environment variables, sorted by `key`.
    - `key` string, required: Canonical identifier, unique within the organization and immutable once created. This is the segment used in the reference token.
    - `name` string, required: Display name shown in the Floqer app. Editable, so never reference a variable by it.
    - `description` unknown, required
    - `scope` 'org' | 'workflow' | 'user', required: Which axis the value varies along. `org` — one value for the whole organization. `workflow` — one value per workflow, so the variable only resolves in workflows that have one set. `user` — one value per member, resolved against the workflow's OWNER (not whoever triggers the run).
    - `reference` string, required: Ready-to-paste reference token. Use it as (or inside) any string value in Configure Action's `inputs`.
    - `value_count` integer, required: How many scope points currently have a value: 1 or 0 for `org` scope, and for `workflow` / `user` scope the number of workflows / members with one set. `0` means the variable resolves nowhere yet.
    - `created_by` unknown, required
    - `updated_at` string, date-time, required: UTC timestamp (ISO 8601) the definition was last changed. Setting a value does not change it.

## Other responses

- `401`: Unauthorized — missing or invalid API key
- `403`: Forbidden. `code` says which permission refused: ROLE_FORBIDDEN (your role), INSUFFICIENT_SCOPE (the API key's scopes), WORKFLOW_FORBIDDEN (no access to the workflow), KEY_WORKFLOW_FORBIDDEN (the API key's workflow restriction).
- `429`: Too Many Requests — rate limit exceeded. Check `Retry-After` header for seconds until the limit resets.

---

[API](https://skmtc.dev/floqer/apis/floqer-public-api.md) - [All operations](https://skmtc.dev/floqer/apis/floqer-public-api/llms.txt) - [OpenAPI document](https://skmtc.dev/floqer/apis/floqer-public-api/revisions/fce50dc07b20?raw)
