---
title: "GET /v1/orgs/{orgId}/environments"
method: GET
path: "/v1/orgs/{orgId}/environments"
tags: ["Orgs", "Environments"]
---

# GET /v1/orgs/{orgId}/environments

`GET /v1/orgs/{orgId}/environments`

## Request

- Base URL: `https://api.tessl.io`
- URL: `https://api.tessl.io/v1/orgs/{orgId}/environments`
- Auth: none declared

Lists the organization's environments with the projects each is bound to. Never returns the sealed values, only names, metadata, and declared key names.

## Path parameters

- `orgId` string, uuid, required

## Query parameters

- `sort` union
  - union[]
    - union
      - 'name'
      - '-name'
      - 'createdAt'
      - '-createdAt'
      - 'id'
      - '-id'
  - 'name'
  - '-name'
  - 'createdAt'
  - '-createdAt'
  - 'id'
  - '-id'
- `page[size]` number
- `page[after]` string
- `page[before]` string

## Headers

- `Authorization` string

## Response `200`

Default Response

- object
  - `links` object, required
    - `self` string, uri, required
    - `next` string, uri, nullable, required
    - `prev` string, uri, nullable, required
  - `meta` object, required
    - `count` number, required
  - `data` object[], required
    - `id` string, uuid, required
    - `type` 'environment', required
    - `attributes` object, required
      - `name` string, required
      - `metadata` object, nullable, required
        - `description` string
        - `fixtureSource` string
        - `managedBy` union
          - 'factory'
          - 'improve-development'
        - `factoryProjectId` string, uuid
        - `factoryStage` union
          - 'implement'
          - 'shepherd'
          - 'follow-ticket-changes'
        - `improveDevelopmentProjectId` string, uuid
        - `improveDevelopmentLoop` 'agent-retro'
        - `envVariableNames` string[]
        - `emptyKeyNames` string[]
        - `mcpServerNames` string[]
        - `githubAccess` union
          - 'none'
          - 'read'
          - 'pull-requests'
          - 'write'
        - `linearAccess` union
          - 'none'
          - 'read'
          - 'write'
        - `readOtherRunLogs` boolean
        - `actionTrigger` union
          - 'none'
          - 'project'
        - `projectMemory` union
          - 'none'
          - 'read'
          - 'write'
        - `movedFromWorkspaceId` string, uuid
        - `movedFromWorkspaceName` string
      - `keyNames` string[], required
      - `emptyKeyNames` string[], required
      - `mcpServerNames` string[], required
      - `githubAccess` union, required
        - 'none'
        - 'read'
        - 'pull-requests'
        - 'write'
      - `linearAccess` union, required
        - 'none'
        - 'read'
        - 'write'
      - `readOtherRunLogs` boolean, required
      - `projectMemory` union, required
        - 'none'
        - 'read'
        - 'write'
      - `actionTrigger` union
        - 'none'
        - 'project'
      - `createdBy` object, nullable, required
        - `id` string, uuid, required
        - `firstName` string, nullable, required
        - `lastName` string, nullable, required
      - `createdAt` string, date-time, required
      - `updatedAt` string, date-time, required
      - `orgId` string, uuid, required
      - `movedFromWorkspace` string, nullable, required: Name of the workspace that held this environment before it moved to the org. `null` for an environment created at org scope.
      - `boundProjects` object[], required
        - `id` string, uuid, required
        - `type` 'project', required
        - `attributes` object, required
          - `name` string, required
          - `workspaceId` string, uuid, required
          - `boundAt` string, date-time, required
      - `secretRefs` object[], required: Variables this environment delivers from org secrets. Every other name in `keyNames` carries a plain value.
        - `variableName` string, required
        - `secretId` string, uuid, required
      - `usage` object, required
        - `loopCount` integer, required: Unarchived Loops whose action names this environment.

## Other responses

- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not Found
- `500`: Internal Server Error

## Changes

- **2026-10-21** `a388ee77a37c`: 1 info
  - added the required property `data/items/attributes/secretRefs` to the response with the `200` status
- **2026-10-20** `5e5fdf4a6def`: 1 breaking, 1 warning, 1 info
  - the `data/items/attributes/metadata/anyOf[subschema #1]/improveDevelopmentLoop` response's property type changed from no type to `string` for status `200`
  - added the new `agent-retro` enum value to the `data/items/attributes/metadata/anyOf[subschema #1]/improveDevelopmentLoop` response property for the response status `200`
  - removed `subschema #1, subschema #2` from the `data/items/attributes/metadata/anyOf[subschema #1]/improveDevelopmentLoop` response property `anyOf` list for the response status `200`
- **2026-10-20** `e7b2825012cb`: 1 info
  - added `subschema #3` to the `data/items/attributes/metadata/anyOf[subschema #1]/factoryStage` response property `anyOf` list for the response status `200`
- …earlier changes not shown

[Operation history](https://skmtc.dev/tessl/apis/tessl-api/changes/v1/orgs/:orgId/environments/get.md)

---

[API](https://skmtc.dev/tessl/apis/tessl-api.md) · [All operations](https://skmtc.dev/tessl/apis/tessl-api/llms.txt) · [OpenAPI document](https://skmtc.dev/tessl/apis/tessl-api/revisions/7386f1e6295b?raw)
