---
title: "create_share_link: Create share link"
description: "Mint a public permalink for a ready generation, a verified upload, or a whole group."
canonical_url: "https://meetkuro.com/agents/tools/create_share_link/"
updated: 2026-11-03
locale: "en"
tool: "create_share_link"
scopes: ["generation.write"]
---

# create_share_link

**Create share link**

Mint a public permalink for a ready generation, a verified upload, or a whole group. Ask before sharing on someone's behalf. The URL comes back ONCE — nothing can recover it later, only revoke it — so hand it to the user in the same turn. `expires_in_seconds` bounds it (one minute to thirty days; absent means no expiry). `settings` decides what the page says: a title and caption, whether Download is offered, how much provenance shows, the default theme, and `indexable` (whether search engines may list the page; off by default, so a link stays unlisted, and only turned on when the user asks for the page to be findable). Spends no credits.

## 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.
- **Can delete or overwrite**: Can delete, overwrite, cancel or withdraw something the caller already has, so a host should confirm it.
- **Reaches outside**: Mints a public permalink anyone holding the link can open.

## Credits

What the tool's description says about credits, verbatim:

- Spends no credits.

## Inputs

| Name | Type | Required | Details |
| --- | --- | --- | --- |
| `reference` | object (type: "upload") or object (type: "generation") | yes | A generation or upload, as list_media names it. A group generation shares the whole set. |
| `expires_in_seconds` | integer | no | ≥ 60; ≤ 2592000 |
| `settings` | object | no | fields: title, caption, download, remix, made_with, theme, view_count, branding, indexable |

## 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": "create_share_link",
    "arguments": {
      "reference": {
        "type": "upload",
        "upload_id": "00000000-0000-4000-8000-000000000000"
      }
    }
  }
}
```

## Input schema

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

```json
{
  "type": "object",
  "properties": {
    "reference": {
      "anyOf": [
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "const": "upload"
            },
            "upload_id": {
              "type": "string",
              "format": "uuid"
            }
          },
          "required": [
            "type",
            "upload_id"
          ],
          "additionalProperties": false
        },
        {
          "type": "object",
          "properties": {
            "type": {
              "type": "string",
              "const": "generation"
            },
            "generation_id": {
              "type": "string",
              "format": "uuid"
            }
          },
          "required": [
            "type",
            "generation_id"
          ],
          "additionalProperties": false
        }
      ],
      "description": "A generation or upload, as list_media names it. A group generation shares the whole set."
    },
    "expires_in_seconds": {
      "type": "integer",
      "minimum": 60,
      "maximum": 2592000
    },
    "settings": {
      "type": "object",
      "properties": {
        "title": {
          "anyOf": [
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 80
            },
            {
              "type": "null"
            }
          ]
        },
        "caption": {
          "anyOf": [
            {
              "type": "string",
              "minLength": 1,
              "maxLength": 300
            },
            {
              "type": "null"
            }
          ]
        },
        "download": {
          "type": "boolean"
        },
        "remix": {
          "type": "boolean"
        },
        "made_with": {
          "type": "string",
          "enum": [
            "off",
            "recipe",
            "inputs",
            "prompt"
          ]
        },
        "theme": {
          "type": "string",
          "enum": [
            "auto",
            "light",
            "dark"
          ]
        },
        "view_count": {
          "type": "boolean"
        },
        "branding": {
          "type": "boolean"
        },
        "indexable": {
          "type": "boolean"
        }
      },
      "additionalProperties": false
    }
  },
  "required": [
    "reference"
  ],
  "additionalProperties": false
}
```

## Related tools

- [`generate_image`](https://meetkuro.com/agents/tools/generate_image.md): Make an image in the user's Kuro account.
- [`generate_clip`](https://meetkuro.com/agents/tools/generate_clip.md): Start a short video clip generation.
- [`animate_image`](https://meetkuro.com/agents/tools/animate_image.md): Animate an existing image or upload into a clip.
- [`generate_voiceover`](https://meetkuro.com/agents/tools/generate_voiceover.md): Start a voice-over generation from text.
- [`generate_music`](https://meetkuro.com/agents/tools/generate_music.md): Start a music generation from a creative brief.
- [`set_recipe_gallery`](https://meetkuro.com/agents/tools/set_recipe_gallery.md): Put a ready generation made with a recipe on that recipe's public gallery — the examples a reader sees under the recipe — or take it off with `listed: false`.
- [`quote_generation`](https://meetkuro.com/agents/tools/quote_generation.md): Price a request exactly, and compare it to the balance, without creating anything.
- [`set_brand_note`](https://meetkuro.com/agents/tools/set_brand_note.md): Replace the user's brand note (at most 2000 characters): who they are, what they sell, their tone, colours and words to avoid.

---

## 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/
