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

# Finalize Asset

> Complete a prepared upload, making the asset READY for attachment.

Confirms that the prepared storage object exists and that its trusted upload metadata matches the declared asset ID, SHA-256, and size, then moves the asset to `READY`. Finalization does **not** download and independently hash the stored bytes; treat `sha256` as client-declared upload metadata. Only `READY` assets can be attached to pages (an `ATTACH_ASSET` operation on a non-ready asset conflicts with `ASSET_NOT_READY`).

**Requirements:** `instructions:write` + workspace `EDITOR` or `OWNER` + a verified (claimed) account.

## Request

<ParamField path="assetId" type="string" required>
  The prepared asset.
</ParamField>

## Response

<ResponseField name="asset" type="object">
  The asset record — `state: "READY"` with a live `downloadUrl`.
</ResponseField>
