---
title: "Import a Library asset from a URL"
method: POST
path: "/library/{workspaceId}/uploads/import"
tags: ["Library"]
---

# Import a Library asset from a URL

`POST /library/{workspaceId}/uploads/import`

## Request

- Base URL: `https://api.rendley.com/v1`
- URL: `https://api.rendley.com/v1/library/{workspaceId}/uploads/import`
- Auth: API key in header `Authorization`

The server downloads a public HTTPS file and stores it as a Library asset. The host must report Content-Length. Dropbox and Google Drive share links are converted to direct downloads. With `async: true` the link is checked and the asset returned at once with status `importing`; follow it with GET /library/{workspaceId}/uploads/{uploadId}/status.

## Path parameters

- `workspaceId` string, required

## Request body

- TypesImportUploadInput
  - `async` boolean: Async returns the row at once and downloads in the background; follow it with the upload status endpoint.
  - `download_url` string, required
  - `file_name` string
  - `mime_type` string
  - `project_id` string
  - `role` 'library' | 'pending' | 'staged' | 'transient': Role/Source follow the same defaults as UploadInput.
  - `source` 'editor' | 'mcp' | 'agent' | 'export' | 'ai' | 'duplicate'

## Response `200`

OK

- object
  - `data` object: Success data
    - `created_at` string
    - `deduplicated` boolean: Deduplicated marks a proxy-upload response that resolved to an existing asset with identical content instead of storing a second copy.
    - `download_url` string: DownloadUrl is a presigned GET that forces a browser download (Content-Disposition: attachment) under the original filename. Expires like Url.
    - `duration` number
    - `file_hash` string
    - `file_size` integer
    - `id` string
    - `media_id` string: MediaID is the upload's storage_key; clients reuse it as the editor media id when bridging a library asset into a project, so ids stay stable.
    - `mime_type` string
    - `original_file_name` string
    - `source` string
    - `status` 'uploading' | 'importing' | 'complete' | 'failed'
    - `tags` string[]
    - `thumbnail_url` string: ThumbnailUrl is a presigned GET for the server-generated poster (video first frame / GIF still). Empty when none exists. Expires like Url.
    - `url` string: Url is a presigned GET for the asset bytes. Expires — never persist it.
    - `workspace_id` string
  - `error` HttpResponseAPIError
    - `code` string
    - `fields` HttpResponseFieldError[]
      - `field` string
      - `message` string
    - `message` string
  - `meta` unknown

---

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