> ## Documentation Index > Fetch the complete documentation index at: https://www.canva.dev/docs/apps/llms.txt > Use this file to discover all available pages before exploring further. # upload-asset-from-url Upload an image or video from a public URL to the user's media library. Use `upload-asset-from-url` to import a remote file, then use the returned `asset_id` in fill operations such as `update_fill` or `insert_fill`. NOTE: If the remote URL isn't public HTTPS or doesn't return 200, the job may fail with `fetch_failed`. Retry after fixing the URL before continuing. ## Example prompt *"Use this logo: https\://\"* The URL must be public and HTTPS. ## Example responses IDs, URLs, and tokens below are placeholders; field names and structure are exactly as returned. This tool wraps results in an asynchronous `job` object. On success, the `job` contains an `asset_id`. A fetch that fails returns a `job` with `status: "failed"` and an `error`: ```json { "job": { "id": "job_EXAMPLE", "status": "failed", "error": { "code": "fetch_failed", "message": "Failed to download file because the URL didn't return a 200 response" } } } ``` If you see `fetch_failed`, confirm the URL is public and HTTPS. ## Learn more * [MCP tools and rate limits](https://www.canva.dev/docs/apps/mcp/tools/) * [perform-editing-operations](https://www.canva.dev/docs/apps/mcp/tools/perform-editing-operations/) * [Verify your Canva MCP app](https://www.canva.dev/docs/apps/mcp/verify-app/)