---
title: "Complete Assistant Asset Upload"
method: POST
path: "/agent/{custom_agent_id}/assistant_asset/{role}/upload_complete"
deprecated: true
---

# Complete Assistant Asset Upload

`POST /agent/{custom_agent_id}/assistant_asset/{role}/upload_complete`

## Request

- Base URL: `https://api.tellers.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.tellers.ai/agent/{custom_agent_id}/assistant_asset/{role}/upload_complete`
- Auth: none declared

> **Deprecated.**

Finalise a multipart upload and start optimisation.

Optional: /process finalises a pending upload too, and the reconciliation
sweep picks up anything neither call reached. Send no body (the common
case) and the parts are read from S3, which is authoritative;
client-supplied ETags are accepted but never required.

## Path parameters

- `custom_agent_id` string, uuid, required
- `role` 'LOGO' | 'DEMO', required

## Headers

- `x-api-key` string, nullable
- `authorization` string, nullable

## Request body

- AssistantAssetCompleteRequest
  - `parts` AssistantAssetCompletedPart[], nullable: Optional. Omit (or send no body) to let the server read the uploaded parts from S3, which is authoritative — a client-held ETag goes stale as soon as its part is re-uploaded.
    - `part_number` integer, required
    - `etag` string, required

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

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