---
title: "Create product via API key (JSON or multipart)"
method: POST
path: "/v1/external/products"
tags: ["External"]
---

# Create product via API key (JSON or multipart)

`POST /v1/external/products`

## Request

- Base URL: `http://localhost:8000`
- URL: `http://localhost:8000/v1/external/products`
- Auth: none declared

Two equivalent shapes:

**JSON** (Content-Type: application/json) — body is a `ProductIn` object. Existing behavior; no image attached.

**Multipart** (Content-Type: multipart/form-data) — `metadata` field carries the `ProductIn` JSON as a string; optional `image` field carries the photo (JPEG/PNG/GIF/WebP, ≤10 MB). Product and image are created atomically; if the image fails validation, the listing is still created and an error is returned in `image_error` so the caller can retry the upload separately.

## Headers

- `Idempotency-Key` string, nullable
- `X-API-Key` string, nullable

## Response `201`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/rubenayla/apis/partle-api.md) · [All operations](https://skmtc.dev/rubenayla/apis/partle-api/llms.txt) · [OpenAPI document](https://skmtc.dev/rubenayla/apis/partle-api/revisions/628cce2acee5?raw)
