# Upload an image (/api/images/create-image)

`POST https://api.comecero.com/api/v1/images`

Uploads an image and makes small, medium, large and square copies of it on the CDN. The body must be `multipart/form-data` with the image in a part named `file`; a JSON body is refused with `400`. There is no way to upload an image from a URL. Use the `image_id` in a product's `image_ids`. Images cannot be changed after upload; upload a new one instead. Secret and trusted tokens may call it.

## Parameters

- `show` (query): Comma-separated fields to return; all others are left out. Use dot notation for child fields (`customer.email`). You cannot send `show` and `hide` together (`400`). See [Customizing output](https://docs.comecero.com/docs/basic-concepts/customizing-output).
- `hide` (query): Comma-separated fields to leave out of the response. Use dot notation for child fields (`customer.email`). You cannot send `show` and `hide` together (`400`). See [Customizing output](https://docs.comecero.com/docs/basic-concepts/customizing-output).
- `formatted` (query): When `true`, the object also has a `formatted` child with amounts and dates as display text in the shopper's language and currency (for example `$19.99` or `November 7, 2026`). The default is `false`. See [Localized formatting](https://docs.comecero.com/docs/basic-concepts/localized-formatting).

Responses: 201, 400, 401, 403, 500.

Full schemas: operation `create_image` in /openapi.json.