## Retrieve `client.vals.files.retrieve(stringvalId, FileRetrieveParamsquery, RequestOptionsoptions?): PageCursorURL` **get** `/v2/vals/{val_id}/files` Get metadata for files and directories in a val. If path is an empty string, returns files at the root directory. ### Parameters - **valId:** `string` - **query:** `FileRetrieveParams` - **limit:** `number` Maximum items to return in each paginated response - **offset:** `number` Number of items to skip in order to deliver paginated results - **path:** `string` Path to a file or directory (e.g. 'dir/subdir/file.ts'). Pass in an empty string to represent the root directory. - **recursive:** `boolean` Whether to recursively act on all files in the project - **branch\_id:** `string` Id to query - **version:** `number` Specific branch version to query ### Returns - `FileRetrieveResponse` A File or Directory's Metadata - **id:** `string` The id of the resource - **links:** `Links` - **html:** `string` The URL of this resource on Val Town - **module:** `string` The URL of this resource's source code as a module - **self:** `string` The URL of this resource on this API - **endpoint:** `string` This resource's web endpoint, where it serves a website or API - **name:** `string` - **path:** `string` - **type:** `"directory" | "file" | "interval" | 3 more` - `"directory"` - `"file"` - `"interval"` - `"http"` - `"email"` - `"script"` - **updatedAt:** `string` - **version:** `number` ### Example ```node import ValTown from '@valtown/sdk'; const client = new ValTown(); // Automatically fetches more pages as needed. for await (const fileRetrieveResponse of client.vals.files.retrieve('182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e', { limit: 1, offset: 0, path: 'path', recursive: true, })) { console.log(fileRetrieveResponse.id); } ```