---
title: "List a computer’s GitHub deploys, with their newest deployments"
method: GET
path: "/api/computers/{id}/deploy-projects"
tags: ["deploys"]
---

# List a computer’s GitHub deploys, with their newest deployments

`GET /api/computers/{id}/deploy-projects`

## Request

- Base URL: `https://www.orgo.ai`
- URL: `https://www.orgo.ai/api/computers/{id}/deploy-projects`
- Auth: HTTP bearer

Deploy from GitHub: a repository built on the computer (on every push through the Orgo GitHub App, or by hand for a public repository by URL), run as one of its apps and served at its public URL. Answers { enabled, supported, computer, limit, github, projects }; github lists the workspace’s linked GitHub accounts (installations) for an import. 404 DEPLOYS_DISABLED where deploys are off. Never calls the computer.

## Path parameters

- `id` string, required

## Response `200`

The deploys.

- DeployProjectList
  - `enabled` boolean
  - `supported` boolean
  - `computer` 'running' | 'asleep' | 'stopped' | 'starting'
  - `limit` integer
  - `github` object
    - `app` boolean: This deployment has the Orgo GitHub App.
    - `workspace_id` string
    - `installations` object[]
      - `installation_id` string
      - `account` string
      - `account_type` string
      - `suspended` boolean
  - `projects` DeployProject[]
    - `id` string, uuid, required
    - `name` string, required: Also the name of the computer app that runs it.
    - `source` 'github_app' | 'public' | 'ingot', required
    - `repo` string, nullable, required: Null for an Ingot repo.
    - `repo_url` string, nullable
    - `installation_id` string, nullable
    - `branch` string, required: main for an Ingot repo.
    - `ingot_repo` string, nullable: An Ingot repo: <workspace>/<name> on the central Ingot server.
    - `ingot_at` string, nullable: An Ingot repo’s: the changeset a deploy builds when it names none; null is the newest on main.
    - `root_dir` string
    - `framework` 'auto' | 'node' | 'python' | 'dockerfile' | 'compose' | 'static'
    - `detected_framework` string, nullable
    - `install_cmd` string, nullable
    - `build_cmd` string, nullable
    - `start_cmd` string, nullable
    - `port` integer, required
    - `health_path` string
    - `auto_deploy` boolean
    - `disabled` string, nullable: Why pushes no longer deploy it.
    - `url` string, nullable: Its public URL, made with its first live deploy where public URLs are on.
    - `app_id` string, nullable: Its app (GET /api/computers/{id}/services).
    - `env_keys` string[]
    - `current` Deployment
      - `id` string, uuid, required
      - `project_id` string, uuid, required
      - `trigger` 'push' | 'manual' | 'rollback' | 'redeploy', required
      - `state` 'queued' | 'running' | 'succeeded' | 'failed' | 'cancelled' | 'superseded', required
      - `phase` 'preparing' | 'cloning' | 'detecting' | 'installing' | 'building' | 'starting' | 'health_check' | 'live' | 'null', nullable
      - `branch` string, required
      - `source_version` string, nullable: An Ingot repo’s: the changeset it builds, once known (the one asked for, else the one the runner found newest on main). A rollback: the changeset of the release it went back to.
      - `commit_sha` string, nullable
      - `commit_message` string, nullable
      - `commit_author` string, nullable
      - `framework` string, nullable
      - `error_code` string, nullable: Failed: build_timeout, runner_lost, computer_not_running, github_token, clone_failed, detect_failed, install_failed, build_failed, docker_unavailable, start_failed, health_check_failed, release_gone, apply_failed, ingot_missing.
      - `error` string, nullable
      - `rollback_of` string, uuid, nullable
      - `current` boolean: This deployment is the project’s live one. After a rollback it is the rollback, not the deployment it went back to.
      - `release_live` boolean: Its release is the one live now, through this deployment or another of the same release (a rollback to it, or the one this rollback went back to). Nothing to roll back to or build again.
      - `can_rollback` boolean: Its release is still on the computer and is not the one live now.
      - `created_at` string, date-time
      - `started_at` string, date-time, nullable
      - `finished_at` string, date-time, nullable
    - `deployments` Deployment[]
      - `id` string, uuid, required
      - `project_id` string, uuid, required
      - `trigger` 'push' | 'manual' | 'rollback' | 'redeploy', required
      - `state` 'queued' | 'running' | 'succeeded' | 'failed' | 'cancelled' | 'superseded', required
      - `phase` 'preparing' | 'cloning' | 'detecting' | 'installing' | 'building' | 'starting' | 'health_check' | 'live' | 'null', nullable
      - `branch` string, required
      - `source_version` string, nullable: An Ingot repo’s: the changeset it builds, once known (the one asked for, else the one the runner found newest on main). A rollback: the changeset of the release it went back to.
      - `commit_sha` string, nullable
      - `commit_message` string, nullable
      - `commit_author` string, nullable
      - `framework` string, nullable
      - `error_code` string, nullable: Failed: build_timeout, runner_lost, computer_not_running, github_token, clone_failed, detect_failed, install_failed, build_failed, docker_unavailable, start_failed, health_check_failed, release_gone, apply_failed, ingot_missing.
      - `error` string, nullable
      - `rollback_of` string, uuid, nullable
      - `current` boolean: This deployment is the project’s live one. After a rollback it is the rollback, not the deployment it went back to.
      - `release_live` boolean: Its release is the one live now, through this deployment or another of the same release (a rollback to it, or the one this rollback went back to). Nothing to roll back to or build again.
      - `can_rollback` boolean: Its release is still on the computer and is not the one live now.
      - `created_at` string, date-time
      - `started_at` string, date-time, nullable
      - `finished_at` string, date-time, nullable
    - `created_at` string, date-time
    - `updated_at` string, date-time

## Other responses

- `401`: Unauthenticated.
- `403`: No access to this computer, view-only access, or a share-link guest.
- `404`: Computer not found, or deploys are off (DEPLOYS_DISABLED).
- `429`: Over one of the account's rate limits (rate_limited): `limit` names it, `retry_after` and Retry-After say how many seconds to wait. Limits are per account (the workspace owner when the request acts on a computer or a workspace) and set by its plan (x-rate-limits).

## Changes

- **2026-10-30** `afb6f0ee1aac`: 1 info
  - added the non-success response with the status `429`
- **2026-10-26** `68dbea0d710c`: 2 breaking, 1 warning, 4 info
  - the response property `projects/items/repo` became nullable for the status `200`
  - the response property `projects/items/repo_url` became nullable for the status `200`
  - added the new `ingot` enum value to the `projects/items/source` response property for the response status `200`
  - added the optional property `projects/items/current/oneOf[#/components/schemas/Deployment]/source_version` to the response with the `200` status
  - …3 more
- **2026-10-18** `dcaee154d80e`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/orgo/apis/orgo-api/changes/api/computers/:id/deploy-projects/get.md)

---

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