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

# Finish file upload

> Finish an upload started with `start_file_upload`, after you have PUT the file bytes to its `upload_url`.

<Info>
  **Tool** `finish_file_upload` · **Behavior** Additive
</Info>

Finish an upload started with `start_file_upload`, after you have PUT the file bytes to its `upload_url`. Verifies the uploaded bytes, stores and processes the file (text extraction + embeddings), and returns the file record. Poll readiness with `get_files({ id })` until `status` is "ready" (then use the file) or "failed" (then `extraction_error` explains why).

## Input parameters

<ParamField body="file_id" type="string (uuid)" required>
  The `file_id` returned by `start_file_upload`.
</ParamField>

## Response

<ResponseField name="id" type="string (uuid)" />

<ResponseField name="name" type="string" />

<ResponseField name="size" type="number" />

<ResponseField name="content_type" type="string" />

<ResponseField name="status" type="'ready' | 'extracting' | 'embedding' | 'failed'" />

<ResponseField name="created_at" type="string" />

<ResponseField name="extraction_error" type="string" />

<ResponseField name="project_id" type="string (uuid)" />

<ResponseField name="warning" type="string" />
