> This page is for version v1 (default).
> For other versions, use one of these documentation indexes:
> - v1 (default): https://developers.truemed.com/v-1/llms.txt

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://developers.truemed.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://developers.truemed.com/_mcp/server.

# Create Catalog Item

POST https://dev-api.truemed.com/api/v1/product_catalog/items/create
Content-Type: application/json

Create a catalog item. The product will not be immediately categorized.

Reference: https://developers.truemed.com/api-reference/product-catalog/create-item

## Authentication

- `x-truemed-api-key` header (required) — Sales channel API key for merchant server-to-server authentication

## Servers

- `https://dev-api.truemed.com` (Development server, default)
- `https://api.truemed.com` (Production server)

## Request

### Body (application/json)

This endpoint expects a CreateItemRequest.

- `description` (string, required) — The description of the item.
- `image_urls` (list of string, required) — An array of image URLs of the item.
- `name` (string, required) — The name of the catalog item.
- `sku` (string, required) — The SKU of the catalog item.
- `url` (string, required) — The display page URL for the item.
- `gtin` (string, optional, nullable) — The GTIN of the catalog item.
- `metadata` (string, optional, nullable) — Optional metadata string for the catalog item.
- `product_id` (string, optional, nullable) — The product ID of the product which this catalog item is a variant of.

## Response

### 200

Successful response

## Errors

### 400 Bad Request Error

Bad Request

- `error` (enum, required)
  - Allowed values: `TotalAmountInvalid`, `ValidationError`
- `message` (string, required)

### 404 Not Found Error

Not Found

- `error` (enum, required)
  - Allowed values: `NotFound`
- `message` (string, required)

### 405 Method Not Allowed Error

Method Not Allowed

- `error` (enum, required)
  - Allowed values: `MethodNotAllowed`
- `message` (string, required)

### 409 Conflict Error

Conflict

- `error` (enum, required)
  - Allowed values: `Conflict`
- `message` (string, required)

### 500 Internal Server Error

Internal Server Error

- `error` (enum, required)
  - Allowed values: `ServerError`
- `message` (string, required)

### 501 Not Implemented Error

Not Implemented

- `error` (enum, required)
  - Allowed values: `NotImplemented`
- `message` (string, required)

## Examples

**Request**

```json
{
  "description": "string",
  "image_urls": [
    "string"
  ],
  "name": "string",
  "sku": "string",
  "url": "string"
}
```

**Response**

```json
{}
```

**SDK Code**

```python
import requests

url = "https://dev-api.truemed.com/api/v1/product_catalog/items/create"

payload = {
    "description": "string",
    "image_urls": ["string"],
    "name": "string",
    "sku": "string",
    "url": "string"
}
headers = {
    "x-truemed-api-key": "<apiKey>",
    "Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.json())
```

```javascript
const url = 'https://dev-api.truemed.com/api/v1/product_catalog/items/create';
const options = {
  method: 'POST',
  headers: {'x-truemed-api-key': '<apiKey>', 'Content-Type': 'application/json'},
  body: '{"description":"string","image_urls":["string"],"name":"string","sku":"string","url":"string"}'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```