---
title: "Bulk soft-delete rows by id"
method: DELETE
path: "/tables/{tableId}/rows"
tags: ["Workspace"]
---

# Bulk soft-delete rows by id

`DELETE /tables/{tableId}/rows`

## Request

- Base URL: `https://origami.chat/api/v2`
- URL: `https://origami.chat/api/v2/tables/{tableId}/rows`
- Auth: HTTP bearer

Soft-deletes the given rows (up to **100** per call). Each row and its
cells / cell_runs / active sequences cascade off. Ids that don't belong
to this table/org, or are already deleted, are skipped, so `deleted`
may be less than `requested` (an idempotent re-delete returns
`deleted: 0`). Deleted rows are recoverable via the app's restore flow.

## Request body

- object
  - `rowIds` string[], required

## Response `200`

Delete receipt.

- object
  - `deleted` integer, required: Rows actually soft-deleted (live rows in this table + org that matched).
  - `requested` integer, required: Row ids submitted (raw count, before de-duplication).

## Other responses

- `400`: VALIDATION_ERROR (rowIds empty, non-UUID, or over 100).
- `404`: TABLE_NOT_FOUND.

## Changes

- **2026-11-03** `8c6b16fe0a3b`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/origami/apis/origami-agent-api/changes/tables/:tableId/rows/delete.md)

---

[API](https://skmtc.dev/origami/apis/origami-agent-api.md) - [All operations](https://skmtc.dev/origami/apis/origami-agent-api/llms.txt) - [OpenAPI document](https://skmtc.dev/origami/apis/origami-agent-api/revisions/8c6b16fe0a3b?raw)
