---
title: "List files of a project"
method: GET
path: "/rest/api/v1/projects/{projectId}/files"
tags: ["File API"]
---

# List files of a project

`GET /rest/api/v1/projects/{projectId}/files`

## Request

- Base URL: `https://api.metacopier.io`
- URL: `https://api.metacopier.io/rest/api/v1/projects/{projectId}/files`
- Auth: API key in header `X-API-KEY`
- TypeScript: <https://skmtc.dev/metacopier/apis/metacopier-api/docs/rest/api/v1/projects/:projectId/files/get.ts> (a function with typed inputs; its response is checked against the schema)

## Path parameters

- `projectId` string, uuid, required

## Query parameters

- `type` string
- `name` string
- `allVersions` boolean
- `unused` boolean

## Response `200`

OK

- UserFileDTO[]
  - `deleted` string, date-time: Set once the version has been deleted; the record survives for the audit trail, the bytes do not.
  - `extension` string: Lowercase extension without the dot.
  - `fileName` string: Sanitised original upload name.
  - `fileType` 'EA_MT5' | 'EA_MT4' | 'INDICATOR_MT5' | 'INDICATOR_MT4' | 'LIBRARY_MT5' | 'LIBRARY_MT4' | 'PRESET' | 'DATA' | 'DLL': Type of the file, which decides how it is validated and where it may be deployed.
  - `id` string, uuid: Identity of this version.
  - `name` string: Sanitised stem. Together with fileType it identifies the file across versions.
  - `projectId` string, uuid: Owning project.
  - `referencedBy` FileReferenceDTO[]: Deployments currently using this version. Empty means the file is unused and safe to delete.
    - `accountAlias` string: Alias of the account the deployment runs on.
    - `accountId` string, uuid: Account the deployment runs on.
    - `featureId` string, uuid: Feature row using the file. For a hosted EA this is the deployment id.
    - `label` string: Human readable label for the UI.
  - `reviewed` boolean: True when staff reviewed the source of this exact version and built it. Only meaningful for EA and DLL files, and the only thing that can enable DLL imports.
  - `reviewedAt` string, date-time: When the review happened, null if never reviewed.
  - `sha256` string: SHA-256 of the content.
  - `sizeBytes` integer: Size in bytes. Zero once the version has been deleted.
  - `uploadedAt` string, date-time: When this version was uploaded.
  - `version` integer: Version number, monotonic per name and type. A consumer always pins one; there is no implicit latest.

## Changes

- **2026-09-27** `71cbb8caf61e`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/metacopier/apis/metacopier-api/changes/rest/api/v1/projects/:projectId/files/get.md)

---

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