> ## Documentation Index
> Fetch the complete documentation index at: https://docs.voyantcloud.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get File

> Retrieve a single gallery file by ID with localized metadata.

## Method

`GET` `/v1/gallery/files/:id`

## Path Parameters

<ParamField path="id" type="uuid" required>Gallery file ID.</ParamField>

## Query Parameters

<ParamField query="locale" type="string">Preferred locale for alt/description (`en`, `fr`, etc.). Defaults to workspace default.</ParamField>
<ParamField query="fallbackLocale" type="string">Locale used when the preferred locale has no translation.</ParamField>
<ParamField query="includeMeta" type="string">Set to `1` to include translation maps and supported languages in `metadata`.</ParamField>

## Headers

<ParamField header="Authorization" type="string" required>Bearer token (e.g. <code>Authorization: Bearer YOUR\_API\_KEY</code>)</ParamField>

## Request Example

<RequestExample>
  ```bash cURL theme={null}
  curl "https://api.voyantcloud.com/v1/gallery/files/550e8400-e29b-41d4-a716-446655440000?locale=en&includeMeta=1" \
    -H "Authorization: Bearer $VOYANT_API_KEY"
  ```

  ```javascript Node.js theme={null}
  const response = await fetch(
    "https://api.voyantcloud.com/v1/gallery/files/550e8400-e29b-41d4-a716-446655440000?locale=en",
    {
      headers: { Authorization: `Bearer ${process.env.VOYANT_API_KEY}` },
    },
  )
  const file = await response.json()
  ```

  ```python Python theme={null}
  import os, requests

  resp = requests.get(
    "https://api.voyantcloud.com/v1/gallery/files/550e8400-e29b-41d4-a716-446655440000",
    params={"locale": "en", "includeMeta": "1"},
    headers={"Authorization": f"Bearer {os.environ['VOYANT_API_KEY']}"},
  )
  file = resp.json()
  ```
</RequestExample>

## Response

<ResponseExample>
  ```json 200 OK theme={null}
  {
    "data": {
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "workspaceId": "ws_abc",
      "name": "ws_abc/banner_summer.png",
      "originalName": "banner_summer.png",
      "size": 245812,
      "mimeType": "image/png",
      "storageProvider": "cf-images",
      "folderId": "00000000-0000-0000-0000-000000000000",
      "status": "completed",
      "metadata": {
        "altText": "Summer sail banner",
        "description": "Hero artwork for the 2025 campaign",
        "locale": "en",
        "translations": {
          "en": {
            "altText": "Summer sail banner",
            "description": "Hero artwork for the 2025 campaign"
          },
          "fr": {
            "altText": "Banniere croisiere d'ete",
            "description": "Visuel principal pour la campagne 2025"
          }
        },
        "supportedLanguages": ["en", "fr", "de"]
      },
      "publicUrls": {
        "primary": "https://cdn.voyantcloud.com/gallery/ws_abc/banner_summer.png",
        "thumbnail": "https://cdn.voyantcloud.com/gallery/ws_abc/banner_summer_thumb.png"
      },
      "createdAt": "2025-02-10T08:15:00.000Z",
      "updatedAt": "2025-02-10T08:15:00.000Z"
    }
  }
  ```

  ```json 404 Not Found theme={null}
  {
    "error": "File not found",
    "code": "NOT_FOUND_404",
    "reqId": "abc123"
  }
  ```
</ResponseExample>

<ResponseField name="data.id" type="uuid">Unique file identifier.</ResponseField>
<ResponseField name="data.workspaceId" type="uuid">Workspace the file belongs to.</ResponseField>
<ResponseField name="data.name" type="string">Full storage path including workspace prefix.</ResponseField>
<ResponseField name="data.originalName" type="string">Original filename as uploaded.</ResponseField>
<ResponseField name="data.size" type="integer">File size in bytes.</ResponseField>
<ResponseField name="data.mimeType" type="string">MIME type of the file.</ResponseField>
<ResponseField name="data.storageProvider" type="string">`cf-images`, `stream`, or `r2`.</ResponseField>
<ResponseField name="data.folderId" type="uuid | null">Folder ID, or `null` if in root.</ResponseField>
<ResponseField name="data.status" type="string">Processing status: `pending`, `processing`, `completed`, `failed`.</ResponseField>
<ResponseField name="data.metadata" type="object">File metadata including localized alt text and description.</ResponseField>
<ResponseField name="data.publicUrls" type="object">CDN URLs for accessing the file.</ResponseField>

<Note>
  To download the actual file bytes, use the [Download File](/api-reference/gallery/download-file) endpoint instead.
</Note>
