---
title: "Changes to Merge insert (upsert) records into a table"
method: POST
path: "/v1/table/{id}/merge_insert"
---

# Changes to Merge insert (upsert) records into a table

`POST /v1/table/{id}/merge_insert`

> Every recorded change to this operation, newest first.

## Timeline

Changed in 10 of 70 revisions.

- **2026-09-01** `800936c00ab7`: 1 breaking, 2 info
- **2026-07-01** `591cd95574b0`: 7 info
- **2026-06-10** `a3308034a3cd`: 1 breaking
- **2026-06-05** `9932582b6bd7`: 2 info
- **2025-12-20** `5d6099d672d3`: 6 breaking, 6 warning, 6 info
- **2025-12-11** `6ad4337e3849`: 5 info
- **2025-07-29** `40a3bc489d46`: 6 breaking, 12 warning, 12 info
- **2025-07-22** `ac7519693c52`: 1 breaking, 9 info
- **2025-07-21** `db7569410aa4`: 2 info
- **2025-07-14** `d649106a3ff1`: 1 info

## Changes

- **2026-09-01** `800936c00ab7`: 1 breaking, 2 info
  - for the `query` request parameter `on`, the minItems was increased from `0` to `1`
  - for the `query` request parameter `on`, the minLength was decreased from `1` to `0`
  - for the `query` request parameter `on`, the type was generalized from `string` to `array`
- **2026-07-01** `591cd95574b0`: 7 info
  - added the optional property `context` to the response with the `200` status
  - added the optional property `context` to the response with the `400` status
  - added the optional property `context` to the response with the `401` status
  - added the optional property `context` to the response with the `403` status
  - added the optional property `context` to the response with the `404` status
  - added the optional property `context` to the response with the `503` status
  - added the optional property `context` to the response with the `5XX` status
- **2026-06-10** `a3308034a3cd`: 1 breaking
  - for the `query` request parameter `on`, the minLength was increased from `0` to `1`
- **2026-06-05** `9932582b6bd7`: 2 info
  - added the new optional `query` request parameter `branch` to all path's operations
  - added the new optional `query` request parameter `branch`
- **2025-12-20** `5d6099d672d3`: 6 breaking, 6 warning, 6 info
  - the `code` response property's min was decreased from `400.00` to `0.00` for the response status `400`
  - the `code` response property's min was decreased from `400.00` to `0.00` for the response status `401`
  - the `code` response property's min was decreased from `400.00` to `0.00` for the response status `403`
  - the `code` response property's min was decreased from `400.00` to `0.00` for the response status `404`
  - the `code` response property's min was decreased from `400.00` to `0.00` for the response status `503`
  - the `code` response property's min was decreased from `400.00` to `0.00` for the response status `5XX`
  - removed the optional property `type` from the response with the `400` status
  - removed the optional property `type` from the response with the `401` status
  - removed the optional property `type` from the response with the `403` status
  - removed the optional property `type` from the response with the `404` status
  - removed the optional property `type` from the response with the `503` status
  - removed the optional property `type` from the response with the `5XX` status
  - the response property `code` became required for the status `400`
  - the response property `code` became required for the status `401`
  - the response property `code` became required for the status `403`
  - the response property `code` became required for the status `404`
  - the response property `code` became required for the status `503`
  - the response property `code` became required for the status `5XX`
- **2025-12-11** `6ad4337e3849`: 5 info
  - added the new optional `query` request parameter `timeout` to all path's operations
  - added the new optional `query` request parameter `use_index` to all path's operations
  - added the new optional `query` request parameter `timeout`
  - added the new optional `query` request parameter `use_index`
  - added the optional property `transaction_id` to the response with the `200` status
- **2025-07-29** `40a3bc489d46`: 6 breaking, 12 warning, 12 info
  - the response property `type` became optional for the status `400`
  - the response property `type` became optional for the status `401`
  - the response property `type` became optional for the status `403`
  - the response property `type` became optional for the status `404`
  - the response property `type` became optional for the status `503`
  - the response property `type` became optional for the status `5XX`
  - removed the optional property `status` from the response with the `400` status
  - removed the optional property `status` from the response with the `401` status
  - removed the optional property `status` from the response with the `403` status
  - removed the optional property `status` from the response with the `404` status
  - removed the optional property `status` from the response with the `503` status
  - removed the optional property `status` from the response with the `5XX` status
  - removed the optional property `title` from the response with the `400` status
  - removed the optional property `title` from the response with the `401` status
  - removed the optional property `title` from the response with the `403` status
  - removed the optional property `title` from the response with the `404` status
  - removed the optional property `title` from the response with the `503` status
  - removed the optional property `title` from the response with the `5XX` status
  - added the optional property `code` to the response with the `400` status
  - added the optional property `code` to the response with the `401` status
  - added the optional property `code` to the response with the `403` status
  - added the optional property `code` to the response with the `404` status
  - added the optional property `code` to the response with the `503` status
  - added the optional property `code` to the response with the `5XX` status
  - added the optional property `error` to the response with the `400` status
  - added the optional property `error` to the response with the `401` status
  - added the optional property `error` to the response with the `403` status
  - added the optional property `error` to the response with the `404` status
  - added the optional property `error` to the response with the `503` status
  - added the optional property `error` to the response with the `5XX` status
- **2025-07-22** `ac7519693c52`: 1 breaking, 9 info
  - removed the media type `application/x-arrow-ipc` from the request body
  - added the new optional `query` request parameter `delimiter` to all path's operations
  - added the new optional `query` request parameter `when_matched_update_all_filt` to all path's operations
  - added the new optional `query` request parameter `when_not_matched_by_source_delete` to all path's operations
  - added the new optional `query` request parameter `when_not_matched_by_source_delete_filt` to all path's operations
  - added the new optional `query` request parameter `delimiter`
  - added the new optional `query` request parameter `when_matched_update_all_filt`
  - added the new optional `query` request parameter `when_not_matched_by_source_delete`
  - added the new optional `query` request parameter `when_not_matched_by_source_delete_filt`
  - added the media type `application/vnd.apache.arrow.stream` to the request body
- **2025-07-21** `db7569410aa4`: 2 info
  - api operation id `MergeInsertTable` removed and replaced with `MergeInsertIntoTable`
  - api tag `Data` added
- **2025-07-14** `d649106a3ff1`: 1 info
  - endpoint added

---

[Operation](https://skmtc.dev/lance-format/apis/lance-namespace-specification/docs/v1/table/:id/merge_insert/post.md) - [API](https://skmtc.dev/lance-format/apis/lance-namespace-specification.md) - [Page](https://skmtc.dev/lance-format/apis/lance-namespace-specification/changes/v1/table/:id/merge_insert/post)
