---
title: "Bulk upsert rows for a single table."
method: PUT
path: "/suppliers/public/custom_tables/{tableName}/row/bulk"
tags: ["Custom Tables"]
---

# Bulk upsert rows for a single table.

`PUT /suppliers/public/custom_tables/{tableName}/row/bulk`

## Request

- Base URL: `https://api.paperlessparts.com/v1`
- URL: `https://api.paperlessparts.com/v1/suppliers/public/custom_tables/{tableName}/row/bulk`
- Auth: API key in header `Authorization`
- TypeScript: <https://skmtc.dev/paperlessparts/apis/paperless-parts-api/docs/suppliers/public/custom_tables/:tableName/row/bulk/put.ts> (a function with typed inputs; its response is checked against the schema)

Upserts rows for a single table. If a row already exists, it will be updated. Otherwise, the row will be created.

## Path parameters

- `tableName` string, required: The name of the table

## Request body

- CustomTableRows
  - `rows` CustomTableRowData[]: A list of table rows.

## Response `200`

Successful response

- object
  - `successes` CustomTableDetails[]
    - `columns` string[]
    - `name` string
    - `related_entities` CustomTableRelatedEntity[]
      - `entity_type` 'operation' | 'process'
      - `name` string
    - `rows` object[]
  - `failures` CustomTableDetails[]
    - `columns` string[]
    - `name` string
    - `related_entities` CustomTableRelatedEntity[]
      - `entity_type` 'operation' | 'process'
      - `name` string
    - `rows` object[]

## Other responses

- `404`: Not found response

---

[API](https://skmtc.dev/paperlessparts/apis/paperless-parts-api.md) - [All operations](https://skmtc.dev/paperlessparts/apis/paperless-parts-api/llms.txt) - [OpenAPI document](https://skmtc.dev/paperlessparts/apis/paperless-parts-api/revisions/3eb132ead1fe?raw)
