---
title: "Finalize an asset after uploading its bytes"
method: POST
path: "/v1/assets/{asset_id}/complete"
tags: ["Assets"]
---

# Finalize an asset after uploading its bytes

`POST /v1/assets/{asset_id}/complete`

## Request

- Base URL: `https://api.vivideo.ai`
- URL: `https://api.vivideo.ai/v1/assets/{asset_id}/complete`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/vivideo/apis/vivideo-api/docs/v1/assets/:asset_id/complete/post.ts> (a function with typed inputs; its response is checked against the schema)

## Path parameters

- `asset_id` string, required: The asset id (as_...) from POST /v1/assets.

## Response `200`

Asset finalized (status ready or processing).

- Asset
  - `id` string: Our stable asset id (for complete/delete).
  - `object` string
  - `asset_id` string: HeyGen asset id — use in file_asset_ids / avatar asset_id / brand logo_asset_id.
  - `upload_url` string
  - `upload_headers` object
  - `status` 'uploading' | 'processing' | 'ready' | 'deleted'
  - `asset_type` string
  - `url` string
  - `content_type` string
  - `size_bytes` integer

## Other responses

- `401`: Missing, malformed or revoked API key (`missing_api_key`, `invalid_api_key`, `api_key_revoked`).
- `404`: The resource does not exist for this account (`not_found`).

---

[API](https://skmtc.dev/vivideo/apis/vivideo-api.md) - [All operations](https://skmtc.dev/vivideo/apis/vivideo-api/llms.txt) - [OpenAPI document](https://skmtc.dev/vivideo/apis/vivideo-api/revisions/6e8a47e72b46?raw)
