---
title: "Create Upload Urls"
method: POST
path: "/users/assets/upload_urls"
tags: ["accepts-api-key"]
deprecated: true
---

# Create Upload Urls

`POST /users/assets/upload_urls`

## 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/users/assets/upload_urls`
- Auth: none declared

> **Deprecated.**

Deprecated: use ``/assets/uploads``.

Presigns every part of a multipart upload up front. Those URLs are signed
with temporary credentials and can expire before a large upload reaches
its last parts, which S3 then rejects with 403.

## Headers

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

## Request body

- AssetUploadRequest[]
  - `content_length` integer, required: The content length of the asset in bytes
  - `upload_id` string, required
  - `source_file` SourceFileInfo, required
    - `sourceName` string, required
    - `sourceUrl` string, nullable, required
    - `sourceIconUrl` string, nullable, required
    - `authors` string[], required
    - `creationDatetime` integer, nullable, required
    - `additionDatetime` integer, required
    - `isCitationRequired` boolean, nullable
    - `citation` string, nullable
    - `reuseConditionInfo` string, nullable
    - `inAppPath` string[], required
    - `title` string, nullable, required
    - `description` string, nullable, required
    - `keywords` string[], required
    - `duration_seconds` number, nullable
    - `provider_generation_id` string, nullable
    - `provider_generation_id_created_at` string, date-time, nullable
    - `generated_by_llm_model` string, nullable
    - `prompt_used_to_create` string, nullable
    - `parent_asset_start_time` number, nullable
    - `umid` string, nullable
    - `capture_device_umid` string, nullable
    - `original_file_path` string, nullable
    - `original_ffprobe_metadata` object, nullable
  - `file_type` 'video' | 'audio' | 'image' | 'text' | 'pdf' | 'lut' | 'font' | 'placeholder' | 'group_clip' | 'master_clip' | 'aaf' | 'proj_original' | 'folder' | 'project' | 'entity' | 'teller_config'
  - `parent_asset_id` string, nullable: Optional asset_id of a folder to upload into. When set, the file's inAppPath is treated as relative to this folder and the user must have write access to it.
  - `multipart` boolean: If true, returns presigned multipart upload URLs instead of a single PUT URL.
  - `multipart_part_size` integer, nullable: Optional multipart part size in bytes (min 5 MiB). If omitted, the server picks one from content_length: 16 MiB, growing for very large files. Read the chosen size from multipart_part_size in the response.

## Response `200`

Successful Response

- AssetUploadResponse[]
  - `upload_id` string, required
  - `asset_id` string, uuid, required
  - `presigned_put_url` string, nullable
  - `presigned_put_urls` string[]
  - `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)
