---
title: "GET /orgs/{org_id}/projects"
method: GET
path: "/orgs/{org_id}/projects"
tags: ["projects"]
---

# GET /orgs/{org_id}/projects

`GET /orgs/{org_id}/projects`

List projects in an organization.

## Path parameters

- `org_id` string, required

## Query parameters

- `view` 'list' | 'full'

## Response `200`

Projects listed successfully

- union
  - object
    - `projects` ProjectPreview[], required
      - `created_at` integer, required — Creation timestamp in epoch milliseconds
      - `default_role` string, nullable — Project's default role. All organization members will be assigned this role by default for this project
      - `description` string, nullable — Project description
      - `id` string, required — Unique project identifier
      - `is_public_template` boolean, required — Whether the project is a public template
      - `name` string, required — Project name
      - `role` string, required — **Deprecated — will be removed.** Always `"admin"` for backwards-compatible response shape. Caller permissions are determined by v2 IAM grants, not this field. Use `/orgs/{org_id}/iam/check` or effective-grants instead.
      - `screenshot_signed_url` string, nullable — CloudFront-signed screenshot URL, minted per response (TTL-bound). Present only for Timbal-hosted screenshots (private prefix) when signing is configured. To use a banner on a public/cacheable surface, copy the object to a public prefix (`orgs/{org_id}/assets/...`) and serve unsigned.
      - `screenshot_url` string, nullable — **Deprecated:** prefer `screenshot_signed_url` when present.
      - `template_uses` integer, required — Number of times this template has been used
  - object
    - `projects` ProjectDetail[], required
      - `auth_enabled` boolean, required — Master sign-in switch for the deployed app: when false the app is public, when true it requires end-user sign-in via `auth_providers`.
      - `auth_providers` string[], required — Enabled end-user sign-in methods for the project's deployed app login screen (for example `email`, `google`, `microsoft`, `github`). Empty when no sign-in method has been turned on.
      - `channels` ProjectChannel[], required — Messaging channel topology for the deployed app (provider → workforce). Empty when no channels are connected. Topology and configuration state only; credentials are never included.
        - `configured` boolean — Whether credentials for this binding are stored platform-side.
        - `enabled` boolean — Soft toggle from the UI. Omitted/`true` means the channel is on; `false` keeps the workforce mapping so it can be re-enabled without reconfiguring.
        - `provider` string, required — Channel provider id (for example `telegram`, `slack`).
        - `workforce` string, required — Workforce component the channel talks to — always the component's manifest uid on read.
      - `created_at` integer, required — Creation timestamp in epoch milliseconds
      - `default_role` string, nullable — Project's default role. All organization members will be assigned this role by default for this project
      - `description` string, nullable — Project description
      - `environments` EnvPreview[], required — Project environments with their latest deployment status
        - `color` string, required — Environment color
        - `id` string, required — Environment identifier
        - `last_deployment_status` string, nullable — Status of the latest deployment in this environment
        - `name` string, required — Environment name
      - `has_ui` boolean, required — Whether the project has a UI interface
      - `id` string, required — Unique project identifier
      - `integrations` IntegrationPreview[], required — Integrations active in this project
        - `id` string, required — Integration identifier
        - `logo_url` string, nullable — Integration logo URL
        - `name` string, required — Integration display name
        - `provider` string, required — Integration provider key
      - `is_public_template` boolean, required — Whether the project is a public template
      - `knowledge_bases` KbPreview[], required — Knowledge bases connected to this project (new KB system only)
        - `description` string, nullable — Knowledge base description
        - `id` string, required — Knowledge base identifier
        - `name` string, required — Knowledge base name
        - `uid` string, required — Knowledge base unique identifier
      - `name` string, required — Project name
      - `publishable_api_key` string, required — Publishable API key for this project
      - `repository_url` string, nullable — URL of the project's source code repository. When null, the project does not have source code available
      - `role` string, required — **Deprecated — will be removed.** Always `"admin"` for backwards-compatible response shape. Caller permissions are determined by v2 IAM grants, not this field. Use `/orgs/{org_id}/iam/check` or effective-grants instead.
      - `screenshot_signed_url` string, nullable — CloudFront-signed screenshot URL, minted per response (TTL-bound). Present only when the banner is a Timbal-hosted screenshot (private `orgs/{}/projects/{}/screenshots/*` prefix) and signing is configured. NOTE: screenshots live under a *private* prefix, so this URL is signed and short-lived. If a banner ever needs to live on a public / cacheable surface (timbal.ai landing pages, OG/meta image tags, emails — anywhere the URL is cached or can't be re-minted per request), copy the object to a public prefix (e.g. `orgs/{org_id}/assets/...`) and serve that unsigned instead of signing this one.
      - `screenshot_url` string, nullable — **Deprecated:** prefer `screenshot_signed_url` when present.
      - `search_text` string, nullable — Text corpus used for semantic similarity matching when recommending templates.
      - `template_description` string, nullable — Public-facing description shown when the project is listed as a template.
      - `template_uses` integer, required — Number of times this template has been used
      - `updated_at` integer, required — Last update timestamp in epoch milliseconds
      - `use_platform_iam` boolean, required — Whether the project uses the platform's IAM system for access control

## Other responses

- `403` — Forbidden

---

[API](https://skmtc.net/timbal-ai/apis/timbal-platform-api.md) · [All operations](https://skmtc.net/timbal-ai/apis/timbal-platform-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/timbal-ai/timbal-platform-api/revisions/dd7e398ce0d3/schema)
