# Start a catalog photo upload

> The start_catalog_image_upload MCP tool: start a catalog photo upload.

`start_catalog_image_upload` · writes

[REST: `POST /v1/catalog/entities/{entityId}/images`](https://api.bymundi.com/docs/reference/catalog.images.startUpload.md)

## What the model reads

Reserves a photo for a catalog entry and returns a single-use upload URL (valid 2 hours) and a ready `curl` command. Only useful if you can run shell commands (e.g. Claude Code): PUT the image's bytes to the URL with exactly the returned headers, then call complete_catalog_image_upload. For a small image you have in hand use upload_catalog_image; for a photo on the user's computer use upload_image when it is offered.

Permissions: catalog:write.
This cannot be undone.

## Input

| Field | Type | Required | Description |
|---|---|---|---|
| `entityId` | uuid | yes |  |
| `mimeType` | "image/png" \| "image/jpeg" \| "image/webp" \| "image/avif" \| "image/gif" | yes | The image's type — only these are accepted. |
| `byteSize` | integer | yes | The file's size in bytes (at most 15 MB). 1–15728640 |

## Input schema (JSON)

```json
{
  "type": "object",
  "properties": {
    "entityId": {
      "type": "string",
      "format": "uuid"
    },
    "mimeType": {
      "type": "string",
      "enum": [
        "image/png",
        "image/jpeg",
        "image/webp",
        "image/avif",
        "image/gif"
      ],
      "description": "The image's type — only these are accepted."
    },
    "byteSize": {
      "type": "integer",
      "minimum": 1,
      "maximum": 15728640,
      "description": "The file's size in bytes (at most 15 MB)."
    }
  },
  "required": [
    "entityId",
    "mimeType",
    "byteSize"
  ],
  "additionalProperties": false
}
```
