---
title: "import_media: Import media from a URL"
description: "Fetch a file the client cannot upload itself and store it as an account upload."
canonical_url: "https://meetkuro.com/agents/tools/import_media/"
updated: 2026-11-03
locale: "en"
tool: "import_media"
scopes: ["generation.write"]
---

# import_media

**Import media from a URL**

Fetch a file the client cannot upload itself and store it as an account upload. When the user attaches a picture, clip or sound in ChatGPT, pass it as `file`; otherwise pass `url`. The result's `reference` goes into any generate tool. A file with no URL this server can reach (a claude.ai attachment) needs request_upload_link instead.
Only these hosts are fetched: files.oaiusercontent.com.

## Scope

- `generation.write` — Makes, edits, imports, shares and deletes media in the account.

## Behaviour

- **Writes**: Creates or changes items in the caller's own account.
- **Adds or updates**: Adds or updates; nothing the caller already has is deleted or overwritten.
- **Reaches outside**: Fetches a file from an allow-listed outside host (such as a ChatGPT attachment) into the caller's library.

## Inputs

| Name | Type | Required | Details |
| --- | --- | --- | --- |
| `url` | string | no | uri |
| `file` | object or string | no | — |
| `filename` | string | no | at least 1 character; at most 220 characters |
| `mime_type` | string | no | at least 1 character; at most 120 characters |

## Example call

A `tools/call` request with the required arguments only, each a placeholder read off the schema. Replace them before sending.

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "import_media",
    "arguments": {}
  }
}
```

## Input schema

As the server sends it in `tools/list`:

```json
{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "format": "uri"
    },
    "file": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "download_url": {
              "type": "string",
              "format": "uri"
            },
            "file_id": {
              "type": "string",
              "maxLength": 200
            },
            "mime_type": {
              "type": "string",
              "maxLength": 120
            },
            "file_name": {
              "type": "string",
              "maxLength": 220
            }
          },
          "required": [
            "download_url",
            "file_id"
          ],
          "additionalProperties": false
        },
        {
          "type": "string",
          "maxLength": 2000
        }
      ]
    },
    "filename": {
      "type": "string",
      "minLength": 1,
      "maxLength": 220
    },
    "mime_type": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120
    }
  },
  "additionalProperties": false
}
```

## Related tools

- [`request_upload_link`](https://meetkuro.com/agents/tools/request_upload_link.md): Get a link the user taps to send pictures or videos from their own phone or computer straight into the account, with no setup and no sign-in.
- [`generate_clip`](https://meetkuro.com/agents/tools/generate_clip.md): Start a short video clip generation.
- [`create_upload`](https://meetkuro.com/agents/tools/create_upload.md): Reserve an upload and get a presigned URL to PUT the bytes to.

---

## About Kuro

Kuro is an AI picture studio: prompt-driven images, clips, voice-overs and music, and storyboard-backed films with consistent characters across every scene.

Agents connect over MCP and can generate directly:

```
claude mcp add kuro https://api.meetkuro.com/mcp --transport http
```

The app is at https://app.meetkuro.com and requires an account.

Each guide, model page, comparison and free tool page on this site (not a tool's variants, and not the index pages) has a Markdown twin at its own URL plus `.md`, and so do /benchmarks/, the English /agents/ page (as /agents.md) and the MCP tool reference. Every tool: https://meetkuro.com/agents/tools/
