---
title: "Get file status"
method: GET
path: "/files/{id}"
tags: ["Files"]
---

# Get file status

`GET /files/{id}`

## Request

- Base URL: `https://app.gc.ai/api/external/v1`
- URL: `https://app.gc.ai/api/external/v1/files/{id}`
- Auth: API key in header `Authorization`
- TypeScript: <https://skmtc.dev/gc-ai/apis/gc-ai-external-api/docs/files/:id/get.ts> (a function with typed inputs; its response is checked against the schema)

Retrieve the current status and metadata of an uploaded file. Use this to poll for extraction completion after uploading a file.

## Path parameters

- `id` string, uuid, required: The file ID

## Response `200`

File metadata and status

- FileResponse
  - `id` string, uuid, required: Unique file identifier
  - `name` string, required: Original filename
  - `size` number, required: File size in bytes
  - `content_type` string, required: MIME type of the file
  - `status` 'extracting' | 'embedding' | 'ready' | 'failed', required: Current processing status of the file
  - `created_at` string, required: ISO 8601 creation timestamp
  - `folder_id` string, uuid, nullable: Folder the file belongs to
  - `extraction_error` string: Error message if extraction failed
  - `project_id` string, uuid: Project the file is linked to, if uploaded with project_id
  - `warning` string: Present when the file was uploaded successfully but a secondary operation (e.g. project linking) failed

## Other responses

- `401`: Missing or malformed API key
- `403`: Invalid API key
- `404`: File not found
- `429`: Rate limit exceeded. See [Rate Limits](https://docs.gc.ai/api-reference/concepts/rate-limits) for the tiers, limits, and how to back off.
- `500`: Internal server error
- `503`: Service temporarily unavailable

---

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