---
title: "Upload From Url"
method: POST
path: "/uploads/from-url"
tags: ["uploads"]
---

# Upload From Url

`POST /uploads/from-url`

Download a file from a URL and store it.

The returned URL can be used as an attachment in start_design_task.

## Headers

- `Moda-Version` '2026-04-12' | '2026-05-01'

## Request body

- UploadFromUrlRequest
  - `source_url` string, required — Public URL of the file to download and store.
  - `filename` string, nullable — Filename to use. Inferred from URL if omitted.

## Response `200`

Successful Response

- FileUploadResponse
  - `id` string, required — Unique file identifier (prefixed ``file_...``).
  - `url` string, required — Stable proxy URL for the uploaded file. Use this in attachment URLs.
  - `filename` string, required — Filename of the uploaded file.
  - `mime_type` string, required — MIME type of the file.
  - `size_bytes` integer, nullable — File size in bytes.
  - `was_duplicate` boolean — True if an identical file already existed (deduplicated).

## Other responses

- `401` — Authentication required.
- `403` — Permission denied for this scope.
- `404` — Resource not found.
- `409` — Conflict (idempotency / resource state).
- `422` — Request validation failed.
- `429` — Rate limit exceeded.
- `500` — Internal error.

---

[API](https://skmtc.dev/moda/apis/moda-public-api.md) · [All operations](https://skmtc.dev/moda/apis/moda-public-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/moda/moda-public-api/revisions/b34cb4cca59e/schema)
