---
updatedAt: 2025-10-24T18:25:04.000Z
agentTools:
  projectIndex: https://dev.kevel.com/llms.txt
---

# Upsert Multiple Catalog Items

Upsert a batch of Items to the specified catalog, where if the Item id(s) don't exist they will be created and if they exist the Item will be updated.

# OpenAPI definition

```json
{
  "info": {
    "description": "The Kevel Catalog Manager API is a RESTful API that allows you to manage your product catalog and associated items.\n   \nSome useful links:\n\n- [Catalog Documentation](https://dev.kevel.com/docs/catalog)",
    "title": "Catalog Management API",
    "version": "1.0.2"
  },
  "openapi": "3.1.0",
  "security": [
    {
      "APIKeyAuthentication": []
    }
  ],
  "servers": [
    {
      "url": "https://api.kevel.co",
      "description": "Production"
    }
  ],
  "components": {
    "securitySchemes": {
      "APIKeyAuthentication": {
        "type": "apiKey",
        "in": "header",
        "name": "X-Kevel-ApiKey",
        "description": "The API key for the Kevel Catalog Manager API generated for you."
      }
    },
    "schemas": {
      "ResponseMessage": {
        "type": "object",
        "properties": {
          "message": {
            "type": "string",
            "description": "Message that was provided."
          }
        },
        "required": [
          "message"
        ]
      },
      "Error": {
        "type": "object",
        "properties": {
          "Errors": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ResponseMessage"
            },
            "description": "Collection of errors."
          }
        },
        "required": [
          "Errors"
        ]
      },
      "CatalogItemIn": {
        "type": "object",
        "additionalProperties": {},
        "description": "Item raw data."
      },
      "JobSubmission": {
        "type": "object",
        "properties": {
          "Warnings": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ResponseMessage"
            },
            "description": "Collection of warnings if any were provided."
          }
        }
      },
      "CatalogItemInBatchInput": {
        "type": "object",
        "properties": {
          "Items": {
            "type": "array",
            "items": {
              "allOf": [
                {
                  "$ref": "#/components/schemas/CatalogItemIn"
                },
                {
                  "description": "Catalog item data."
                }
              ]
            },
            "minItems": 1,
            "maxItems": 1000,
            "description": "The items to be processed in the batch."
          }
        },
        "required": [
          "Items"
        ]
      }
    }
  },
  "paths": {
    "/v1/catalog/{catalogId}/{item}/batch/upsert": {
      "post": {
        "operationId": "upsertItemBatch",
        "tags": [
          "Catalog Items"
        ],
        "summary": "Upsert Multiple Catalog Items",
        "description": "Upsert a batch of Items to the specified catalog, where if the Item id(s) don't exist they will be created and if they exist the Item will be updated.",
        "parameters": [
          {
            "schema": {
              "type": "number",
              "minimum": 100
            },
            "required": true,
            "name": "catalogId",
            "in": "path"
          },
          {
            "schema": {
              "type": "string",
              "enum": [
                "product",
                "brand",
                "category",
                "merchant"
              ],
              "description": "Permitted item types."
            },
            "required": true,
            "description": "Permitted item types.",
            "name": "item",
            "in": "path"
          }
        ],
        "requestBody": {
          "description": "The Items to upsert.",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CatalogItemInBatchInput"
              },
              "examples": {
                "example1": {
                  "summary": "Upsert Items in Batch Example 1",
                  "value": {
                    "Items": [
                      {
                        "item_id": "0",
                        "item_name": "Item Name 0",
                        "item_description": "Item Description 0 Taken from a Primary Catalog",
                        "item_image": "https://example.com/image1.jpg",
                        "item_url": "https://example.com/item/0"
                      },
                      {
                        "item_id": "1",
                        "item_name": "Item Name 1",
                        "item_description": "Item Description 1 Taken from a Primary Catalog",
                        "item_image": "https://example.com/image1.jpg",
                        "item_url": "https://example.com/item/1"
                      },
                      {
                        "item_id": "2",
                        "item_name": "Item Name 2",
                        "item_description": "Item Description 2 Taken from a Primary Catalog",
                        "item_image": "https://example.com/image1.jpg",
                        "item_url": "https://example.com/item/2"
                      },
                      {
                        "item_id": "3",
                        "item_name": "Item Name 3",
                        "item_description": "Item Description 3 Taken from a Primary Catalog",
                        "item_image": "https://example.com/image1.jpg",
                        "item_url": "https://example.com/item/3"
                      },
                      {
                        "item_id": "4",
                        "item_name": "Item Name 4",
                        "item_description": "Item Description 4 Taken from a Primary Catalog",
                        "item_image": "https://example.com/image1.jpg",
                        "item_url": "https://example.com/item/4"
                      },
                      {
                        "item_id": "5",
                        "item_name": "Item Name 5",
                        "item_description": "Item Description 5 Taken from a Primary Catalog",
                        "item_image": "https://example.com/image1.jpg",
                        "item_url": "https://example.com/item/5"
                      },
                      {
                        "item_id": "6",
                        "item_name": "Item Name 6",
                        "item_description": "Item Description 6 Taken from a Primary Catalog",
                        "item_image": "https://example.com/image1.jpg",
                        "item_url": "https://example.com/item/6"
                      },
                      {
                        "item_id": "7",
                        "item_name": "Item Name 7",
                        "item_description": "Item Description 7 Taken from a Primary Catalog",
                        "item_image": "https://example.com/image1.jpg",
                        "item_url": "https://example.com/item/7"
                      },
                      {
                        "item_id": "8",
                        "item_name": "Item Name 8",
                        "item_description": "Item Description 8 Taken from a Primary Catalog",
                        "item_image": "https://example.com/image1.jpg",
                        "item_url": "https://example.com/item/8"
                      },
                      {
                        "item_id": "9",
                        "item_name": "Item Name 9",
                        "item_description": "Item Description 9 Taken from a Primary Catalog",
                        "item_image": "https://example.com/image1.jpg",
                        "item_url": "https://example.com/item/9"
                      }
                    ]
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Items upsert request successfully submitted to Kevel.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/JobSubmission"
                },
                "examples": {
                  "example1": {
                    "summary": "Upserted Items Example 1 (No Warnings)",
                    "value": {}
                  },
                  "example2": {
                    "summary": "Upserted Items Example 2 (With Warnings)",
                    "value": {
                      "Warnings": [
                        {
                          "message": "Warning message 1."
                        },
                        {
                          "message": "Warning message 2."
                        },
                        {
                          "message": "Warning message 3."
                        }
                      ]
                    }
                  }
                }
              }
            }
          },
          "400": {
            "description": "Bad request with errors.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                },
                "examples": {
                  "summary": {
                    "summary": "Single Error Response",
                    "value": {
                      "Errors": [
                        {
                          "message": "Error message 1."
                        }
                      ]
                    }
                  },
                  "multiple": {
                    "summary": "Multiple Errors Response",
                    "value": {
                      "Errors": [
                        {
                          "message": "Something went wrong."
                        },
                        {
                          "message": "Something else went wrong."
                        },
                        {
                          "message": "Another error."
                        }
                      ]
                    }
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}
```