---
title: "Get a project by ID"
method: GET
path: "/projects/{id}"
tags: ["Projects"]
---

# Get a project by ID

`GET /projects/{id}`

Returns a single project with its frameworks, owner name, members, and approval status.

## Path parameters

- `id` integer, required

## Response `200`

Project found

- object
  - `message` string
  - `data` ProjectDetail
    - `id` integer
    - `uc_id` string
    - `project_title` string
    - `owner` integer
    - `start_date` string, date-time
    - `geography` integer
    - `ai_risk_classification` 'Prohibited' | 'High risk' | 'Limited risk' | 'Minimal risk' — EU AI Act risk classification level
    - `type_of_high_risk_role` 'Deployer' | 'Provider' | 'Distributor' | 'Importer' | 'Product manufacturer' | 'Authorized representative' — Role of the organization under the EU AI Act for high-risk systems
    - `goal` string, nullable
    - `target_industry` string, nullable
    - `description` string, nullable
    - `status` 'Not started' | 'In progress' | 'Under review' | 'Completed' | 'Closed' | 'On hold' | 'Rejected' — Current lifecycle status of the project
    - `last_updated` string, date-time
    - `last_updated_by` integer
    - `created_at` string, date-time
    - `is_organizational` boolean
    - `is_demo` boolean
    - `approval_workflow_id` integer, nullable
    - `pending_frameworks` string, nullable
    - `enable_ai_data_insertion` boolean
    - `organization_id` integer
    - `framework` ProjectFramework[]
      - `project_framework_id` integer
      - `framework_id` integer
      - `name` string
    - `members` integer[]
    - `owner_name` string
    - `has_pending_approval` boolean
    - `approval_status` 'pending' | 'rejected' | 'null', nullable

## Other responses

- `404` — Project not found
- `500` — Internal server error

## Changes

- **2026-04-21** `55cdc040840c` — 4 info
  - added the media type `application/json` for the response with the status `200`
  - added the media type `application/json` for the response with the status `500`
  - added the non-success response with the status `404`
  - removed the non-success response with the status `401`
- **2026-04-05** `c419b1e72a65` — 2 breaking, 5 info
  - for the `path` request parameter `id`, the type/format was changed from `string`/`` to `integer`/``
  - removed the media type `application/json` for the response with the status `200`
  - api operation id `getProjectById` was added
  - the endpoint scheme security `bearerAuth` was added to the API
  - …3 more
- **2025-09-11** `cfa9ae933c17` — 9 warning, 10 info
  - removed the optional property `data/ai_risk_classification` from the response with the `200` status
  - removed the optional property `data/goal` from the response with the `200` status
  - removed the optional property `data/last_updated` from the response with the `200` status
  - removed the optional property `data/last_updated_by` from the response with the `200` status
  - …15 more
- …earlier changes not shown

[Full history](https://skmtc.dev/verifywise-ai/apis/verifywise-api/changes/projects/:id/get.md)

---

[API](https://skmtc.dev/verifywise-ai/apis/verifywise-api.md) · [All operations](https://skmtc.dev/verifywise-ai/apis/verifywise-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/verifywise-ai/verifywise-api/revisions/d86d0bf8bebe/schema)
