---
search:
  tags:
    - Assets
    - POST
seo:
  description: >-
    Completes a reserved Asset from the object that actually landed, and
    promotes it… Reference for the POST /assets/{id}/finalize endpoint in the
    AdCrunch API.
sidebar:
  label: Finalize an uploaded Asset
  badge: POST
title: Finalize an uploaded Asset
type: openapi-operation
---
Completes a reserved Asset from the object that actually landed, and promotes it to `ready`.

This is the only real validation point: a presigned `PUT` carries no policy document, so nothing could have stopped the client sending a different type — or far more bytes — than it declared. A refused upload is deleted rather than left to bill as an orphan.

Pass `advertiserId` to place the file in the same call. That starts the same Registration as `POST /assets/{id}/registrations`, and it starts one only — the Registration settles later. **The answer is the Asset either way.** A registration that could not start does not fail this call, because the file is stored and only the registration needs retrying — read `GET /assets/{id}` for the Registration and its state.

`POST /assets/{id}/finalize`
