---
title: "Create or update multiple shopping list items via id-keyed upsert"
method: POST
path: "/compat/v2/shoppingLists/upsertShoppingListItems"
tags: ["shoppingLists"]
---

# Create or update multiple shopping list items via id-keyed upsert

`POST /compat/v2/shoppingLists/upsertShoppingListItems`

## Request

- Base URL: `https://api.recipesage.com`
- URL: `https://api.recipesage.com/compat/v2/shoppingLists/upsertShoppingListItems`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/recipesage/apis/recipesage-api/docs/compat/v2/shoppingLists/upsertShoppingListItems/post.ts> (a function with typed inputs; its response is checked against the schema)

## Request body

- object
  - `shoppingListId` string, uuid, required
  - `items` object[], required
    - `id` string, uuid, required
    - `title` string, required
    - `recipeId` string, uuid, nullable, required
    - `completed` boolean
    - `categoryTitle` string
    - `createdAt` string
    - `updatedAt` string, required

## Response `200`

Successful response

- object
  - `reference` string, uuid, required

## Other responses

- `400`: Invalid input data
- `401`: Authorization not provided
- `403`: Insufficient access
- `500`: Internal server error

---

[API](https://skmtc.dev/recipesage/apis/recipesage-api.md) - [All operations](https://skmtc.dev/recipesage/apis/recipesage-api/llms.txt) - [OpenAPI document](https://skmtc.dev/recipesage/apis/recipesage-api/revisions/62ab3d307054?raw)
