---
title: "Create Assistant Asset Upload Url"
method: POST
path: "/agent/custom/{custom_agent_id}/assistant_asset/upload_url"
---

# Create Assistant Asset Upload Url

`POST /agent/custom/{custom_agent_id}/assistant_asset/upload_url`

## 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/{custom_agent_id}/assistant_asset/upload_url`
- Auth: none declared

## Path parameters

- `custom_agent_id` string, uuid, required

## Headers

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

## Request body

- AssistantAssetUploadRequest
  - `role` 'LOGO' | 'DEMO', required
  - `kind` 'IMAGE' | 'VIDEO', required
  - `content_length` integer, required
  - `mime_type` string, nullable
  - `prefer_multipart` boolean, nullable: Advisory. Leave unset to let the server choose from content_length. True requests multipart even for a small file (e.g. for resumability on a flaky connection). False is only a preference: uploads too large for a single PUT are sent as multipart anyway. The mode actually used is returned as `multipart`.
  - `multipart_part_size` integer, nullable: Part size in bytes (min 5 MiB, S3's floor for non-final parts). Defaults to a size that keeps the part count within S3's limit.

## Response `200`

Successful Response

- AssistantAssetUploadResponse
  - `assistant_asset_id` string, required
  - `role` 'LOGO' | 'DEMO', required
  - `multipart` boolean, required
  - `presigned_put_url` string, nullable
  - `multipart_upload_id` string, nullable
  - `multipart_part_size` integer, nullable
  - `multipart_part_count` integer, nullable

## 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)
